---
# System prepended metadata

title: c++練習
tags: [computer]

---

# c++練習
###### tags: `computer`
> 兩數交換(不使用含數)
```cpp=
#include <iostream>

using namespace std;

int main()
{
   int a,b ,t;
   cin>>a>>b;
   t=b;
   b=a;
   a=t;
   cout<<a<<b<<endl;
    return 0;
}

```
> 兩數交換(寫出函式)
```cpp=

#include <iostream>

using namespace std;


int main()
{
   int x;
   int y;
   cin>>x>>y;
   swap(x,y);

       cout<<x<<"  "<<y<<endl;

    return 0;
}
```


>  判斷運勢
```cpp=
#include <iostream>
using namespace std;
int a,b,c;
  while(cin>>a>>b) 
  {
  
   c= (a*2+b)%3;
   if(c==0)
   {
   	cout<<"普通"<<endl; 
   }
    else if(c==1)
   {
   	cout<<"吉"<<endl; 
   }
 	else
	 {
 	    cout<<"大吉"<<endl; 
	 }
}
    return 0;
}
```
---

>  年齡與結婚
```cpp=
#include<iostream>
using namespace std;
int main()
{
   int a,b;
  while(cin>>a>>b) 
  {
  
  if(a==1)
  {
  	if(b>=18)
  	{
	  cout<<"yes"<<endl;
    }
	  else
	  {
	  	cout<<"no"<<endl;
	  }
  }
  else if(a==2)
  {
  	if(b>=16)
  	{
	
  	cout<<"yes"<<endl;
	}
	else
	{
		cout<<"no"<<endl;
	}
  }
}
    return 0;
}
```
> 質因數分解
```cpp==
#include<iostream>
using namespace std;
int main()
{
   int x,i;
   while(cin>>x)
   {
   i=2;
   while(i>1)
   {
   	while(x%i==0)
   	{
   		cout<<i<<endl;
   		x=x/i;
   	
	}
		i++;
   }
}
    return 0;
}
```

> 測試資料
```cpp=
#include<iostream>
using namespace std;
int main()
{
	int n;
	cin>>n;
	while(n!=1)
	{
		cout<<n<<"  "<<endl;
		if(n%2==0)
		{
			n=n/2;
		}
		else
		{
			n=3*n+1;
		}
		
	}
	cout<<1<<endl;
    return 0;
}
```

---
> 列出座號
```cpp=
#include<iostream>
using namespace std;
int main()
{
	int n,t;
	cin>>n;
	for( t=1;t<=n;t++)
	{
		cout<<t<<endl;
	}
    return 0;
}
```

---
> 列出一堆符號
```cpp==
#include<iostream>
using namespace std;
int main()
{
	int x,y,a,b;
	cin>>x>>y;
	for(a=1;a<=y;a++)
	{
		for(b=1;b<=x;b++)
		{
			cout<<"#";//不能加endl，因釀會直接換一行 
		}
		cout<<endl;
	}
    return 0;
}
```
> 列出直角三角形
```cpp=
#include<iostream>
using namespace std;
int main()
{
	int a,b,x,y;
	cin>>y;
	for(a=1;a<=y;a++)
	{
		for(b=1;b<=a;b++)//印出b個a。b後來不合了條件，所以跳到迴圈外面，完成第一個迴圈後又再一次從b=1開始 
		{
			cout<<"#";
		}
		cout<<endl;
	}
    return 0;
}
```
> 金字塔  高難度
```cpp=
#include<iostream>
using namespace std;
int main()
{
	int a,b,x,y;
	cin>>y;
	for(a=1;a<=y;a++)
	{	 
		for(b=1;b<=y-a;b++)//會重複跑回圈直到數量到最大值
		{
			cout<<" ";
		}
		for(b=1;b<=2*a-1;b++)//一樣會重複跑回圈直到數量到了
		{
			cout<<"#";
		}
		cout<<endl;
	}
    return 0;
}
```
> 乘法表
```cpp=
#include<iostream>
using namespace std;
int main()
{
  int a,b,y;//b是那一橫裡的第幾個//a是第幾行//y是要甚麼乘法表 
    while(cin>>y)
	{ 
	for(a=1;a<=y;a++)
		{	 
		for(b=1;b<=y;b++)
		  {
			cout<<a<<"*"<<b<<"="<<a*b<<" ";
		  }
			cout<<endl;
		}
	}
    return 0;
}
```
---
###### > ***質因數分解    有重複的質因數時無法輸出***
> #include<iostream>
> using namespace std;
> int main()
> {
> 	int a,x;
> 	cout<<"請輸入一個數字"<<endl; 
> 	cin>>x;
> 	for(a=2;a<=x;a++){
>      if(x%a==0)
> 	   {
> 		 cout<<a<<" ";
> 		 x=x/a;
> 	   }
>     }
> 	
>    return 0;
> }
> 
---
> 選擇排序法  難!!!!!
```cpp=

using namespace std;

int main()
{
    int x,y,a,i;
    int d[1000];
    cin>>a;
    for(i=0;i<a;i++)//i從零開始，因為陣列從[0]開始，然後i<a，不能i<=a，那樣會多一個數字要輸入 
	{
		cin>>d[i];
	}
	for(i=0;i<a;i++)//一樣不能小於等於，如果小於等於的話會造成陣列一直多一個數字0，因為那個陣列是空的 
	{
		for(y=i+1;y<a;y++)
		{
			if(d[i]>d[y])
			{
				swap(d[i],d[y]);
			}
		}
	}
	for(i=0;i<a;i++)//小於等於的話會多輸出一個零在最後面 
	{
		cout<<d[i]<<" ";
	}
    return 0;
}
```
> 一元二次方程式
```cpp=
#include<iostream>
#include <cmath>
using namespace std;

int main()
{
    int x,y,a;
    cin>>x>>y>>a;
    int w=sqrt(y*y-4*x*a);
	 if(w<0)
	 {
	 	cout<<"No real root";
	 }
	 else if(w>0)
	 {
	 	cout<<"Two different roots x1="<<(w-y)/(2*x)<<" , "<<"x2="<<(-w-y)/(2*x);
	 }
	 else 
	 {
	 	cout<<"Two same roots x="<<(-y)/2*x;
	 }
    return 0;
}

```
> 數字顛倒
```cpp=
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;

if(t==0)
{
cout<<0<<endl;
}

while(t%10==0)
{
t=t/10;
}
while(t>0)
{
cout<<t%10;
t=t/10;
}
cout<<endl;

}

```












