2016年10月30日 星期日

C語言 迴圈

1.設計一程式: 利用while、do……while 及for 迴圈,計算2+4+6+8……100

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAX 100
int main(){
 int i,sum;
 i = 2;
 sum = 0;
 while(i <= MAX){
        sum+=i;
        printf("總共%d\n",sum);
        i=i+2;
    }
    system("pause");
    return 0;
    }
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
 int i=2,sum=0;
 do{
        sum += i;
        i++;
        i++;
        printf("總共%d\n",sum);
    }while(i <=100);
    system("pause");
    return 0;
    }
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
 int i,sum=0;
 for(i=2;i<=100;i=i+2){
        sum +=i;
        printf("總共%d\n",sum); 
        }
    system("pause");
    return 0;
    }

2.除錯題

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
    int i;
    printf("印出整數1~10:\n");
    for( i = 1;i <= 10;i++)
    printf("%d\n",i);
    system("pause");
    return 0;
}
    

3.除錯題

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAX 100
int main(){
    int i = 1,total =0;
    while(i <= 100){
    total += i;
    i++;
}
    printf("整數1~100的總和為%d\n",total);
    system("pause");
    return 0;
}

4.請利用雙重for 迴圈來設計一C 程式,輸入整數n,求出1!+2!+...+n!的和

#include<stdio.h>
#include<stdlib.h>
int main(){
    int sum=0,num=1,a,n; 
    printf("請輸入n值:");
    scanf("%d",&n);
    for(a=1;a<=n;a++){
    num=num*a; 
    sum=sum+num; 
} 
    printf("%d\n",sum);
    system("pause");
    return 0;
}
          

5.已知有一公式如下,請設計一程式可輸入k 值,求π 的近似值:
,其中k 的值越大,π 的近似值越精確。

#include<stdio.h>
#include<stdlib.h>
int main (){
    float sigma = 0.0;
    int n,k;
    printf("請輸入k值:"2);
    scanf("%d",&k);
    for(n=0;n<=k;n++){
    if(n%2==0)
    sigma+=(float)1/(2*n+1);
    else sigma+=(float)-1/(2*n+1);
}
 printf("PI=%f\n",4*sigma);
    system("pause");
    return 0;
}

6.除錯題

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAX 100
int main(){
int i;
for(i = 1; i <= 5; i++){
    printf("小明正在跑步...\n");
    printf("小明跑完了第%d圈\n",i);
    }
    printf("小明跑完了!!!\n");
    system("pause");
    return 0;
    }

7.請利用輾轉相除法與while 迴圈來設計一C 程式,來求取任意輸入
兩數的最大公因數(g.c.d)。

#include<stdio.h>
#include<stdlib.h>
int main(){
    int a,b,tmp,mod;
    printf("輸入兩數:");
    scanf("%d %d",&a,&b);
    if(a<b){
            tmp=a;  a=b;  b=tmp; //兩數交換      
            }
            while(b!=0){
            mod= a%b;
            a=b; b=mod;
            }
    printf("最大公因數-->%d",a);
    system("pause");
    return 0;
}

8.試撰寫一程式,利用for 迴圈計算

#include <stdio.h>
#include <stdlib.h>
int main(){
    int i, j,sum1=0,sum2=0,sum=0;
    for(i=1,j=2;i<=49;i=i+2,j=j+2){
     sum+=i*i-j*j;
    }
    printf("sum=%d\n",sum);
    system("pause");
    return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(){
    int i, j,sum1=0,sum2=0,sum=0;
      for(i=1;i<=49;){
      sum1+=i*i;
      i=i+2; //i+=2;
      }
    printf("sum1=%d\n",sum1);
    //---------------------------
      for(i=2;i<=50;){
      sum2+=i*i;   
      i=i+2; //i+=2;             
      }
    printf("sum2=%d\n",sum2);
    //---------------------------
    sum=sum1-sum2;
    printf("sum=%d\n",sum);
    system("pause");
    return 0;
}

9.一個數如果恰好等於它的因數之和,這個數就稱為 "完美數"(perfect
number)。例如6=1+2+3,因1、2 與3 都是6 的因數,因而6 是完美數。
試撰寫一程式,找出1000 以內的所有完美數(使用for 迴圈編寫)

#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,num,sum;
    sum = 0;
    printf("1~1000中是完美數的有:\n");
    for(num = 2;num <= 1000;num++){
        //求因數 
        for(i=1;i < num;i++){
            if(num%i==0)
             sum += i;
        }
        //完美數的判別 
    if(sum==num)
     printf("%d\n",num);
    sum = 0;
    } 
    system("pause");
    return 0;
}

10.假設有一條繩子長3000 公尺,每天剪去一半的長度,請問需要花
費幾天的時間,繩子的長度會短於5 公尺(使用while 迴圈編寫)

#include<stdio.h>
#include<stdlib.h>
int main(){
    int a =3000,b=0;
    while(a >= 5){
        a=a/2;
        b++;
        printf("第%d天,剩下%d公尺\n",b,a);
        }
    printf("需要%d天\n",b);
    system("pause");
    return 0;
}

11.試利用do while迴圈找出最小的n值,使得1+ 2 + 3+ ...+ n的總和大於等於1000

#include<stdio.h>
#include<stdlib.h>
int main(){
    int a,sum;
    a=0; 
    sum=0;
    do{
    a++;
    sum+=a;
    printf("第%d次等於%d\n",a,sum);
 }while(sum<=1000);
    printf("需要到%d\n",a);
    system("pause");
    return 0;
}

12.試利用巢狀迴圈撰寫出一個能產生如下圖結果的程式

        1
      12
    123
  1234
12345

#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=5;i++){
     for(j=1;j<=i;j++){
       printf("%d",j);
      } 
    printf("\n");
 }
 system("pause");
 return 0;
}

13.試撰寫一程式,利用break 敘述來撰寫4個數字之密碼輸入的過程。使用者有三次的輸入機會,並須滿足下列的條件:

如果密碼輸入不對,則會再次的出現 "請輸入密碼:" 字串。

如果三次的輸入都不對,則程式會印出 "密碼輸入超過三次!!" 字串,

然後結束程式的執行。

如果輸入正確,則印出"密碼輸入正確,歡迎使用本系統!!" 字串。

#include<stdio.h>
#include<stdlib.h>
int main(){
    int input,cnt,passwd;
    cnt = 0;
    passwd = 6128;
    while(1){
    printf("請輸入密碼:");
    scanf("%d",&input);
    cnt++;
    if(input==passwd){
     printf("密碼輸入正確,歡迎進入使用本系統!!!");
     break;
     }
    if(cnt >= 3){
     printf("輸入密碼錯誤超過三次!!無法進入系統!!");
     break;
     }
    }
    system("pause");
    return 0;
}

14.試利用continue敘述,找出小於100的整數裡,所有可以被2與3整除,但

不能被12整除的整數

#include<stdio.h>
#include<stdlib.h> 
//小於 100 的正整數 
int main() { 
 int i; 
 for (i=1; i < 100; i++) { 
  if (i%12==0)
   continue; 
  if (i%2!=0)
   continue;
  if (i%3!=0)
   continue;
 printf("%d\n",i);
 } 
 system("pause"); 
 return 0; 
} 

15.設計程式,顯示以下結果。提: 使用 for迴圈

#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=4;i++){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
         printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=4;i>0;i--){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
         printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=4;i>1;i--){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
      printf("*");
        printf("\n");
    }
    for(i=1;i<=4;i++){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
         printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=3;i++){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
         printf("*");
        printf("\n");
    }
    for(i=4;i>0;i--){
     printf("%*s",i," ");
        for(j=1;j<=(5-i)*2-1;j++)
         printf("*");
        printf("\n");
    }
    system("pause");
    return 0;
}

16.設計程式,顯示以下結果。提: 使用 雙重 for迴圈

#include<stdio.h>
#include<stdlib.h> 
int main() { 
 int a,b;
 for(a=1;a <= 5;a++){
  for(b=1;b <= a;b++)
   printf("*");
  printf("\n");
 }
 system("pause");
 return 0;
}
#include<stdio.h>
#include<stdlib.h> 
int main() { 
 int a,b,c,d;
 c = 5;
 for(a=1;a <= 5;a++){
  for(b=1;b < a;b++)
   printf(" ");
     for(d=1;d<=c;d++)
      printf("*");            
  c--;
  printf("\n");
 }
 system("pause");
 return 0;
}
#include<stdio.h>
#include<stdlib.h> 
int main() { 
 int a,b,c;
 c = 5;
 for(a=1;a <= 5;a++){
  for(b=1;b <= c;b++)
   printf("*");
  c--;
  printf("\n");
 }
 system("pause");
 return 0;
}
#include<stdio.h>
#include<stdlib.h> 
int main() { 
 int a,b,c,d;
 c = 5;
 for(a=1;a <= 5;a++){
    for(b=1;b < c;b++)
     printf(" ");
     for(d=1;d<=a;d++)
      printf("*");               
   c--;
  printf("\n");
 }
 system("pause");
 return 0;
}

17.使用 雙重 forforfor迴圈與 if 來設計一程式:

#include<stdio.h>
#include<stdlib.h>
int main(){
    int i,j;
    for(i=1;i<=9;i++){
        for(j=1;j<=9;j++){
         if(i==j||j==(10-i))
           printf("*");
          else
           printf(" ");
       }
     printf("\n");
    }
    system("pause");
    return 0;
}

沒有留言:

張貼留言