---
# System prepended metadata

title: 初入C++的世界

---

# 初入C++的世界
最一開始會想接觸程式設計是因為從小耳濡目染，覺得作為一位資訊工程師會有很好的成就，能有很高的收入遍對於這門課程很有興趣。
## 用while迴圈打出數列
```c=
#include<iostream>
using namespace std;

int main()
{
    int i;

    i = 1;
    while( i<=n )
    {
        cout << i << " ";
        i = i+1;
    }

    return 0;
}
```
___
## 用while迴圈找出因數
```c=
#include<iostream>
using namespace std;

int main()
{
    int n, i;

    cin >> n;

    i = 1;
    while( i <= n )
    {
        if( n%i == 0 )
        {
            cout << i << " ";
        }

        i = i+1;
    }
    cout << endl;

    return 0;
}
```
---
## 找總共有幾位數
```c=
#include<iostream>
using namespace std;

int main()
{
    int n;
    int ans;

    while( cin >> n )
    {
        ans = 0;
        while( n>0 )
        {
            n = n / 10;
            ans = ans+1;
        }
        cout << ans << endl;
    }

    return 0;
}
```
## 解題目 - Feynman
```c=
#include<iostream>
using namespace std;


int main()
{
    int N;
    int i;
    int ans;

    while( cin >> N )
    {
        if( N == 0 )
            break;

        ans = 0;
        i = 0;
        while( i < N )
        {
            ans = ans + (N-i)*(N-i);

            i = i+1;
        }
        cout << ans << endl;
    }

    return 0;
}
```
---
## 轉換時間
```c=
#include<iostream>
using namespace std;

int main()
{
    int N;
    int h, m, s;

    cin >> N;

    h = N/3600;
    N = N%3600;

    m = N/60;
    N = N%60;

    s = N;

    cout << h << " hr " << m << " min " << s << " sec" << endl;

    return 0;
}
```
---
## 如果在使用 printf() 時要指定整數、浮點數、字元等進行顯示，則要配合格式指定字（format specifier），以下列出幾個可用的格式指定碼：

### %c	以字元方式輸出
### %d	10 進位整數輸出
### %o	以 8 進位整數方式輸出
### %u	無號整數輸出
### %x, %X	將整數以 16 進位方式輸出
### %f	浮點數輸出
### %e, %E	使用科學記號顯示浮點數
### %g, %G	浮點數輸出，取 %f 或 %e（%f 或 %E），看### h3#示精簡
### %%	顯示 %
### %s	字串輸出
### %lu	long unsigned 型態的整數
### %p	指標型態
---
## 您可以在輸出浮點數時指定精度，例如若為浮點數
```c=
printf("example:%.2f\n", 19.234);
```
### .2 指定小數點後取兩位，執行結果會輸出
```c=
example:19.23
```
### 若在 % 之後指定負號，例如 %-6.2f，則表示靠左對齊，沒有指定則靠右對齊
```c=
#include <stdio.h>

int main(void) {
    printf("example:%6.2f\n", 19.234);
    printf("example:%-6.2f\n", 19.234);

    return 0;
}
```
### 若事先無法決定字元寬度，則可以使用 *(常用)
```c=
#include <stdio.h>

int main(void) {
    printf("%*d\n", 1, 1);
    printf("%*d\n", 2, 1);
    printf("%*d\n", 3, 1);

    return 0;
}
```
### 如果打算取得使用者的輸入，則可以使用標準輸入的 scanf() 函式，並搭配格式指定字與 & 取址運算子指定給變數，例如：
### scanf類似int 用於宣告
```c=
#include <stdio.h>

int main(void) {
    int input;

    printf("請輸入數字：");
    scanf("%d", &input);

    printf("您輸入的數字：%d\n", input);

    return 0;
}
```
### scanf() 在接受輸入時，可以接受多個值，也可以指定輸入的格式
```c=
#include <stdio.h>

int main(void) {
    int number1, number2;

    printf("請輸入兩個數字，中間使用空白區隔）：");
    scanf("%d %d", &number1, &number2);
    printf("您輸入的數字：%d %d\n", number1, number2);

    printf("請再輸入兩個數字，中間使用-號區隔）：");
    scanf("%d-%d", &number1, &number2);
    printf("您輸入的數字：%d-%d\n", number1, number2);

    return 0;
```
### 用for迴圈做出長方形
```c=
#include<iostream>
using namespace std;

int main()
{
    int X, Y;
    int i, j;

    cin >> X >> Y;

    for( i=1 ; i<=Y ; i=i+1 )
    {
        for( j=1 ; j<=X ; j=j+1 )
        {
            cout << "*";
        }
        cout << endl;
    }

    return 0;
}
```
### 製造直角三角形
```c=
#include<iostream>
using namespace std;

int main()
{
    int N;
    int i, j;

    cin >> N;

    for( i=1 ; i<=N ; i=i+1 )
    {
        for( j=1 ; j<=i ; j=j+1 )
        {
            cout << "*";
        }
        cout << endl;
    }

    return 0;
}
```
### 製造金字塔
```c=
#include<iostream>
using namespace std;

int main()
{
    int N;
    int i, j;

    cin >> N;

    for( i=1 ; i<=N ; i=i+1 )
    {
        for( j=1 ; j<=N-i ; j=j+1 )
        {
            cout << " ";
        }
        for( j=1 ; j<=2*i-1 ; j=j+1 )
        {
            cout << "*";
        }
        cout << endl;
    }

    return 0;
}
```
#### 打出99乘法表
```c=
#include<iostream>
using namespace std;

int main()
{
    int i, j;

    for( i=1 ; i<=9 ; i=i+1 )
    {
        for( j=1 ; j<=9 ; j=j+1 )
        {
            cout << i << "*" << j << "=" << i*j << " ";
        }
        cout << endl;
    }

    return 0;
}
```
### b004牛牛吃草
```c=
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
int main()
{
    double D,L,s,l;
    double PI=2*acos(0);
    while(cin>>D>>L)
        {
            l=L/2;
            s=sqrt((L/2)*(L/2)-(D/2)*(D/2));
            printf("%.3lf\n", PI*l*s);
        }

}
```
### c776屋瓦
```c=
#include <iostream>

using namespace std;

int main()
{
    int n,m;
    while(cin>>n>>m)
        {
            cout<<n*m*3+n*2+m*1<<endl;
        }
        return 0;
}
```
### d549矩形中的幾何
```c=
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
    double a,b,c;
    while(cin>>a>>b>>c)
    {
        cout << fixed << setprecision(2) << sqrt(a*a + c*c - b*b) << endl;
    }
    return 0;
}
```
### d053巧克力切切
```c=
#include <iostream>

using namespace std;

int main()
{
    int m,n;
    while(cin>>m>>n)
    {
        cout<<m*n-1<<endl;

    }
}
```
### d277 矩陣對角線
```c=
#include <iostream>

using namespace std;

int main()
{
    int a;
    while(cin>>a)
    {
        cout<<a-(a%2)<<endl;
    }
}
```
### b681 1. 山洞探險
```c=
#include <iostream>

using namespace std;

int main()
{
    int L;
    while(cin>>L)
    {
        if(L>0)
        {
            cout<<L*2-1<<endl;

        }
        else
        {
            cout<<(-L)*2<<endl;
        }
    }

    return 0;
}
```
### 127 牧場面積
```c=
#include <iostream>

using namespace std;

int main()
{
    long long int L;
    while(cin>>L)
    {
        if(L%4==0)
        {
            cout<<(L/4)*(L/4)<<endl;
        }
        else
        {
            cout<<(L/4)*(L/4+1)<<endl;
                    }

    }
    return 0;
}
```
### d096 00913 - Joana and the Odd Numbers
```c=
#include <iostream>

using namespace std;

int main()
{
    long long  int n,x;
    while(cin>>n)
    {
        x=2*(((n+1)/2)*((n+1)/2))-1;
        cout<<(x-4)+(x-2)+x<<endl;
    }
    return 0;
}
```
### d057 11494 - Queen
```c=
int x1, y1, x2, y2, a, b, w;           
 while(cin>>x1>>y1>>x2>>y2,x1>0 || y1>0 || x2>0 || y2>0)
 {
 if(xy[0] == xy[2] && xy[1] == xy[3]){ //x=a且y=b
      printf("0\n");    
    }
    else if(xy[0] == xy[2] || xy[1] == xy[3]){ //x=a或y=b
      printf("1\n");    
    }
    else if(xy[3]-xy[2]-xy[1]+xy[0] == 0){ //y-x-(b-a)=0
      printf("1\n");   
    }
    else if(xy[3]+xy[2]-xy[1]-xy[0] == 0){ //y+x-(a+b)=0
      printf("1\n");    
    }
    else{
      printf("2\n");
      }
      return 0;
}
```
### a005回家作業
```c=
#include <iostream>

using namespace std;

int main()
{
    int t,a,b,c,d;
    cin>>t;
    while(t--)
    {
        cin>>a>>b>>c>>d;
        if(d-c==c-b)
        {
          cout << a <<" " << b<<" " << c<<" " << d <<" " << b - a + d<<endl;
        }
        else
        {
        cout << a<<" " << b<<" " << c<<" " << d<<" " << d * b<<endl;
        }

    }
    return 0;
}
```
### d095 00579 - ClockHands
```c=
#include<bits/stdc++.h>
using namespace std;
int main()
{
double a,b;
while(scanf("%lf:%lf",&a,&b)==2)
{
if(a==0&&b==0) break;
a=(a*30)+b/12*6;
b*=6;
if(abs(a-b)>180) printf("%.3f\n",360-abs(a-b));
else printf("%.3f\n",abs(a-b));
}
}
```
### c461 apcs 邏輯運算子(Logic Operators)
```c=
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)!=EOF){

if(!!a==!!b&&!!a==0){
if(c==0)printf("AND\nOR\nXOR");
if(c==1)printf("IMPOSSIBLE\n");
}
else if(!!a==!!b&&!!a==1){
if(c==0)printf("XOR\n");
if(c==1)printf("AND\nOR\n");
}
else{
if(c==0)printf("AND\n");
if(c==1)printf("OR\nXOR\n");
}

}


}
```
### c299 1. 連號或不連號
```c=
#include <iostream>
using namespace std;
//大到小
int main(){
int fun, r;
while( cin >> fun ){
r = 1;
int l[fun];
//輸入
for( int t = 0 ; t < fun ; t ++ ){
cin >> l[t];
}
//排序
for( int t = 0 ; t < fun - 1 ; t ++ ){
for( int t2 = 0 ; t2 < fun - 1 ; t2 ++ ){
if( l[t2] < l [t2 + 1] ){
int c = l[t2];
l[t2] = l[t2 + 1];
l[t2 + 1] = c;
}
}
}
//判斷
for( int t = 0 ; t < fun - 1 ; t ++ ){
if( l[t] - 1 != l[t + 1] ){
r = 0;
}
}
//輸出最大和最小
cout << l[fun - 1] << " " << l[0];
//對嗎?
if( r == 1 ){
cout << " yes";
} else {
cout << " no";
}
}
}
```
### d186 11461 - Square Numbers
```c=
//你這裡就放
#include <bits/stdc++.h> 
//我覺得你應該會比較輕鬆
typedef long long ll;

using namespace std;

int main(int argc, const char * argv[])
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    ll a,b;
    while(cin>>a>>b)
    {
        if(a==0 && b==0)    break;
        ll sum = 0;
        for(ll j = sqrt(a);j <= sqrt(b);j++)
        {
            if(pow(j, 2)>=a && pow(j, 2)<=b)
                sum += 1;
        }
        cout<<sum<<'\n';
    }
    return 0;
}

```
### a248 新手訓練 ~ 陣列應用
```c=
#include <iostream>
using namespace std;

int main() {
int a, b, N;
while ( cin >> a >> b >> N ) {
cout << a / b << ".";
a %= b;
while ( N-- ) {
a *= 10;
cout << a / b;
a %= b;
}
cout << endl;
}
return 0;
} 
 ```
 ### a038 數字翻轉
 ```c=
 #include <iostream>

using namespace std ;

int main()
{
long long int in ;
while (cin >>in )
{
if (in==0 )
{
cout << 0 ;
}
while (in%10==0&&in)
{
in/=10;
}
while (in)
{
cout <<in%10 ;
in/=10 ;
}
cout <<endl ;
}
}
```
### a536 11689 - Soda Surpler
```c=
#include<bits/stdc++.h>
using namespace std;

int main(){
    int t,e,f,c,sum,colas;
    while(cin>>t){
        for(int i=0;i<t;i++){
            cin>>e>>f>>c;
            sum=0;
            colas = e+f;
            while(colas/c){
                sum += colas/c;
                colas =colas/c+colas%c;
            }

            cout<<sum<<endl;
        }
    }
}
 

```
### d189 11150 - Cola
```c=
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,num;
while(cin>>n)
{
num=n;
num+=n/3;
n=n%3+n/3;
while(n>=3)
{
num+=n/3;
n=n%3+n/3;
//cout<<n<<' '<<num<<endl;
}
if(n>1) num+=1;
cout<<num<<endl;
}
}
```
### d122 Oh! My Zero!!
```c=
#include
int main()
{ long int n;
int a=0;
while(scanf("%d",&n)!=EOF){
while(n>4){
n-=n%5;
a+=n/5;
n/=5;
}
printf("%d\n",a);
a=0;
}
}
```
### c420 Bert的三角形 (3)
```c=
#include <iostream>

using namespace std;

int main()
{
        int n;
        cin>>n;
        for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=n-i;j++)
                    {
                        cout<<"_";
                    }
                for(int j=1;j<=i*2-1;j++)
                    {
                        cout<<"*";
                    }
                for(int j=1;j<=n-i;j++)
                {
                    cout<<"_";
                }

                cout<<endl;


            }

    return 0;
}
```
### c013 00488-Triangle Wave
```c=
#include<iostream>
using namespace std;
int main()
{
	long long int a, b, c, d, e, f, g;
	while (cin >> a) {
		cout << "\n";
		for (b=0;b<a;b++) {
			cin >> c >> d;
			for (g=0;g<d;g++) {
				for (e=0;e<c+1;e++) {
					for (f=0;f<e;f++) {
						cout << e;
					}
					cout << "\n";
				}
				e -= 2;
				for (;e>0;e--) {
					for (f=0;f<e;f++) {
						cout << e;
					}
					cout << "\n";
				}
			}
			cout << "\n";
		}
	}
}
```



