1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int i,a,b,c,d,x; i=1000; while(i<10000) { a=i%10; b=i%100/10; c=i/100%10; d=i/1000; x=a*1000+b*100+c*10+d; if(i==4*x&&a!=b&&b!=c&&c!=d&&d!=a) { printf("%d ",i); } i++; } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
#include<stdio.h> int main() { int a,m,n,sum=0; printf("请输入任意一个多位数字 "); scanf("%d",&a); do { m=a%10; n=a/10; sum=sum+m; a=n; }while(n>0); if(sum>=1&&sum<=12) { switch(sum) { case 1:printf("%d January ",sum);break; case 2:printf("%d February ",sum);break; case 3:printf("%d March ",sum);break; case 4:printf("%d April ",sum);break; case 5:printf("%d May ",sum);break; case 6:printf("%d June ",sum);break; case 7:printf("%d July ",sum);break; case 8:printf("%d August ",sum);break; case 9:printf("%d September ",sum);break; case 10:printf("%d October ",sum);break; case 11:printf("%d November ",sum);break; case 12:printf("%d December ",sum);break; } } else { printf("%d *** ",sum); } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
#include<stdio.h> int main() { int x,a,b,c,i,l,m,n,j=0; printf("请输入一个不超过6的正整数A "); scanf("%d",&x); while(x>6||x<1) { printf("error 请重新输入 "); scanf("%d",&x); } if(x>=1&&x<=6) { a=x+1; b=a+1; c=b+1; } for(i=x*100;i<1000;i++) { l=i/100; m=i%100/10; n=i%10; if(l!=m&&l!=n&&m!=n&&m>=x&&m<=c&&l>=x&&l<=c&&n>=x&&n<=c) { printf("%4d",i); j++; if(j%6==0) { printf(" "); } } } return 0; }
4.猜拳游戏
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int gamer,computer,result,a=1,b,x=0,y=0,z=0; char complete; do { srand(time(NULL)); computer=rand()%3+1; printf("******猜拳游戏****** 第%d轮对决 该你出拳了,请选择 1.石头 2.剪刀 3.布 ",a); scanf("%d",&gamer); while(gamer<1||gamer>3) { printf("数据错误,请重新输入 "); scanf("%d",&gamer); } if(computer==1) { printf("电脑出石头 "); switch(gamer) { case 1:printf("平局 ");x++;break; case 2:printf("你输了 ");z++;break; case 3:printf("你赢了 ");y++;break; } } else if(computer==2) { printf("电脑出剪刀 "); switch(gamer) { case 1:printf("你赢了 ");y++;break; case 2:printf("平局 ");x++;break; case 3:printf("你输了 ");z++;break; } } else if(computer==3) { printf("电脑出布 "); switch(gamer) { case 1:printf("你输了 ");z++;break; case 2:printf("你赢了 ");y++;break; case 3:printf("平局 ");x++;break; } } a++; b=a-1; printf("是否进行下一轮游戏,YES(y) or NO(n) "); scanf(" %c",&complete); if(complete==110||complete==78) { printf("你选择了退出游戏 对战状况: 对决次数:%d 平局次数%d 电脑得分%d 你得分%d ",b,x,z,y); if(z>y) { printf("最终结果:你输 "); } else if(z<y) { printf("最终结果:你赢 "); } else { printf("最终结果:平 "); } } while(complete!=110&&complete!=78&&complete!=121&&complete!=89) { printf("error 请重新输入 YES(y) or NO(n) "); scanf(" %c",&complete); if(complete==110||complete==78) { printf("你选择了退出游戏 对战状况: 对决次数:%d 平局次数%d 电脑得分%d 你得分%d ",b,x,z,y); if(z>y) { printf("最终结果:你输 "); } else if(z<y) { printf("最终结果:你赢 "); } else { printf("最终结果:平 "); } } } }while(complete==121||complete==89); return 0; }
附加题
#include<stdio.h> #include<stdlib.h> int main() { int x,y,z,a=7,b=6,c=5,d=4,e=3,f=2,l,m,n; for(x=0;x<=9;x++) for(y=0;y<=9;y++) for(z=0;z<=9;z++) { if(z==x+y) { l=x; m=y; n=z; switch(l) { case 0:l=b;break; case 1:l=f;break; case 2:l=c;break; case 3:l=c;break; case 4:l=d;break; case 5:l=c;break; case 6:l=b;break; case 7:l=e;break; case 8:l=a;break; case 9:l=b;break; } switch(m) { case 0:m=b;break; case 1:m=f;break; case 2:m=c;break; case 3:m=c;break; case 4:m=d;break; case 5:m=c;break; case 6:m=b;break; case 7:m=e;break; case 8:m=a;break; case 9:m=b;break; } switch(n) { case 0:n=b;break; case 1:n=f;break; case 2:n=c;break; case 3:n=c;break; case 4:n=d;break; case 5:n=c;break; case 6:n=b;break; case 7:n=e;break; case 8:n=a;break; case 9:n=b;break; } if(l+m+n==12) { printf("%d+%d=%d ",x,y,z); } } } return 0; }
知识点总结:
1.跳出选择语句要用stdlib.h函数,并且在语句后加exit(0);
2.跳出循环和case使用break,若是跳出一个语句使用continue
3.求一个数的每一位用穷举法先取余后除十
4.do while循环后要加分号
实验总结:
1.定义变量多了不要混乱
2.循环选择相互嵌套,要逻辑合理。
3.赋值和相等一个是=一个是==