C语言 第六章 多重循环练习
一、循环输入
#include "stdio.h" void main() { char c; do { printf("我告诉你1+1=2\n"); printf("你相信吗?(y/n)"); c=getchar(); fflush(stdin); }while(c=='n'); }
二、输入行与列显示矩形
#include "stdio.h" void main() { int row,col,i,j; char c; do{ printf("行:"); scanf("%d",&row); fflush(stdin); printf("列:"); scanf("%d",&col); fflush(stdin); for(i=1;i<=row;i++) { for(j=1;j<=col;j++) { printf("*"); } printf("\n"); } printf("是否继续?(y/n)"); c=getchar(); fflush(stdin); }while(c=='y'); }
三、1-10之间的阶乘
1!+2!+3!
1+(1*2)+(1*2*3)
#include "stdio.h" void main() { int i,j,n,cnt,sum=0; for(j=1;j<=10;j++) { cnt=1; for(i=1;i<=j;i++) { cnt=cnt*i; printf("%d x ",i); } sum+=cnt; printf("=%d\n",cnt); } printf("%d",sum); }
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,j,result=1,sum=0; for(i=1;i<=10;i++)//i=3 { result=i*result; //2 sum+=result; //3 } printf("%d",sum); }
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { //1!+2!+3!+...10! //5!=1*2*3*4*5 //5!=5*4! //4!=4*3! int i,j,result,sum=0; for(i=1;i<=10;i++) //i=6 { result=1; for(j=1;j<=i;j++){//j=6 result*=j; //120 } sum+=result; //累加 } printf("%d",sum); }
四、买苹果
#include "stdio.h" void main() { //总苹果数x0.8/天数=每天花的钱 int n,cnt=0,day=0; //表示当天买的苹果数 for(n=2;n<=100;n=n*2,day++) { cnt=cnt+n; //累加每天的苹果数 printf("%d %d\n",n,cnt); } printf("%.2f",(cnt*0.8)/day); }
五、课后练习吃饭吃菜
#include "stdio.h" void main() { int i,j; for(i=1;i<=10;i++) { printf("\n吃一口饭\n"); for(j=1;j<=3;j++) { printf("吃菜\t"); } } }
六、分解质因数
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { int i,n; scanf("%d",&n); //输入 for(i=2;i<=n;i++) //假定i-n之间的所有数都是n的质因数 { if(n%i==0) //是否整除 { printf("%d \t",i); n=n/i; i--; //为了避免跳过多个相同因子将i-- } //n=28 14 7 1 //i=2 1 2 1 2 3 4 5 6 7 6 7 8 } //2 2 7 }
七、101-200间的素数,P136
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { //判断一个数是否是素数 int n=101,leap,i,cnt=0; while(n<=200) //外重循环用于准备数 { leap=1; //假定n就是素数 for(i=2;i<n/2;i++) { if(n%i==0) //只要在2-n之间有一个数被整除 { leap=0; //标记n不是素数 break; //结束内重循环 } } if(leap) { cnt++; printf("%d ",n); if(cnt%10==0) printf("\n"); //当素数个数是10的倍数时换行 } n++; } printf("\n101-200之间共有%d个素数",cnt); }
/* Note:Your choice is C IDE */ #include "stdio.h" void main() { //101-200 int i,leap,j,sum=0; for(i=101;i<=200;i++) { leap=1; //假定当前数就是素数 树旗 赋值 for(j=2;j<=i/2;j++) { if(i%j==0) //是否整除 { leap=0; //不是素数 break; //结束 } } if(leap==1) //判断是否为1 { printf("%-4d",i); sum++; if(sum%10==0) printf("\n"); } } printf("\n101-200间共有素数:%d",sum); }
八、乒乓球比赛题 P140
#include "stdio.h" void main() { int i,j; for(i='a';i<='c';i++) { for(j='x';j<='z';j++) { if(i=='a'&&j=='x'||(i=='c'&&(j=='x'||j=='z'))) continue; printf("%c VS %c \n",i,j); } } }
#include "stdio.h" void main() { int i,j,k=0,flag=0,n=0; char a[]="abc"; char b[]="xyz"; char c[3]; for(i=2;i>=0;i--) { for(j=0;j<=2;j++) { if(a[i]=='a'&&b[j]=='x'||(a[i]=='c'&&(b[j]=='x'||b[j]=='z'))) continue; //如果数组中已存在则不行 flag=0; for(k=0;k<3;k++) { if(c[k]==b[j]){flag=1;break;}; } //存入数组中 if(flag==0){ c[n++]=b[j]; break; } } } for(i=0;i<3;i++) { printf("%c对%c \t",a[i],c[2-i]); } }