首页 > 代码库 > 第六次作业
第六次作业
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,old,new; for(old=1000;old<=9999;old=old+1) { a=old/1000; b=old/100%10; c=old/10%10; d=old%10; if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) { new=d*1000+c*100+b*10+a; if(new==old/4) { printf("这个四位数是%d。",old); } } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { int x,sum; sum=0; scanf("%d",&x); while(x) { sum=sum+x%10; x=x/10; } if(sum<=0) { printf("输入错误\n"); } else if(sum==1) { printf("January"); } else if(sum==2) { printf("February"); } else if(sum==3) { printf("March"); } else if(sum==4) { printf("April"); } else if(sum==5) { printf("May"); } else if(sum==6) { printf("June"); } else if(sum==7) { printf("July"); } else if(sum==8) { printf("August"); } else if(sum==9) { printf("September"); } else if(sum==10) { printf("October"); } else if(sum==11) { printf("November"); } else if(sum==12) { printf("December"); } else if(sum>12) { printf("***"); } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:2
输出样例:234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
#include<stdio.h> int main() { int a,b,c,d,n,sum; sum=0; n=0; printf("请输入一个不超过6的正整数\n"); scanf("%d",&a); if(a>=4) { printf("输入错误\n"); } else { for(b=a;b<6;b=b+1) { for(c=a;c<6;c=c+1) { for(d=a;d<6;d=d+1) { if(b!=c&&b!=d&&c!=d) { sum=b*100+c*10+d; printf("%d%\t",sum); n=n+1; if(n%5==0) { printf("\n"); } } } } } } return 0; }
4. 看商品猜价格
#include<stdlib.h> #include<stdio.h> #include<time.h> int main() { int a,x,i; char b; srand(time(NULL)) ; while(1) { printf("猜一个数,在1~100之间;\n"); x=rand()%100+1; for(i=1;i<=10;i=i+1) { printf("请输入\n"); scanf("%d",&a); if(a>x) { printf("太大了,重新输入!\n"); } else if(a<x) { printf("太小了,重新输入!\n"); } else if(a=x) { printf("你猜对了,\n一共猜了%d次\n",i); break; } if(i==10&&a!=x) { printf("10次都没有猜对,正确答案是%d\n",x); } } printf("继续下一轮游戏吗?Y(y)orN(n)\n"); fflush(stdin); scanf("%c",&b); if(b==‘n‘||b==‘N‘) { break; } } return 0; }
附加题
有16根火柴,可以拼出多少个形如“A+B=C”的等式,A、B、C是用火柴棍拼出的整数,且为一位数,输出该等式形式。
注意: 1. 加号与等号各自需要两根火柴棍 2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0) 3. 16根火柴棍必须全部用上
用火柴棍拼数字0-9的拼法如图所示:
#include<stdio.h> int main() { int a,b,c,x,y,z; for(a=0;a<=9;a=a+1) for(b=0;b<=9;b=b+1) for(c=0;c<=9;c=c+1) { switch(a) { case 0:x=6;break; case 1:x=2;break; case 2:x=5;break; case 3:x=5;break; case 4:x=4;break; case 5:x=5;break; case 6:x=6;break; case 7:x=3;break; case 8:x=7;break; case 9:x=6;break; } switch(b) { case 0:y=6;break; case 1:y=2;break; case 2:y=5;break; case 3:y=5;break; case 4:y=4;break; case 5:y=5;break; case 6:y=6;break; case 7:y=3;break; case 8:y=7;break; case 9:y=6;break; } switch(c) { case 0:z=6;break; case 1:z=2;break; case 2:z=5;break; case 3:z=5;break; case 4:z=4;break; case 5:z=5;break; case 6:z=6;break; case 7:z=3;break; case 8:z=7;break; case 9:z=6;break; } if(a+b==c&&x+y+z==12) { printf("%d+%d=%d ",a,b,c); } } return 0; }
二、知识点总结
1.清除缓存区fflush(stdin)。
2.利用循环进行整数的分解,计算整数的位数以及如何利用循环将一个数逆序输出。
3.合理利用穷举法计算。
4.循环嵌套时要注意限制条件。
5.分情况合理运用if与switch。
三、实验总结
1.等于用“==”符号,不是“=”。
2.注意考虑数据的合法性。
3.使用穷举法时,要仔细检查能否简化程序。
4.注意\t的合理利用。
第六次作业