首页 > 代码库 > 第六次作业
第六次作业
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include <stdio.h> int main() { int a,b,c,d,x,y; for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) { x=a*1000+b*100+c*10+d; y=d*1000+c*100+b*10+a; if(x==4*y) { printf("%d\n",x); } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include <stdio.h> int main() { long x,sum=0,z; printf("请输入一串数字"); scanf("%ld",&x); while(x>0) { z=x%10; x=x/10; sum+=z; } switch(sum) { case 1:printf("1 January");break; case 2:printf("2 Feburary");break; case 3:printf("3 March");break; case 4:printf("4 April");break; case 5:printf("5 May");break; case 6:printf("6 June");break; case 7:printf("7 July");break; case 8:printf("8 August");break; case 9:printf("9 September");break; case 10:printf("10 October");break; case 11:printf("11 November");break; case 12:printf("12 December");break; } 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 i,j,k,a,b,c=0;
printf("请输入一个不小于6的正整数"); scanf("%d",&a); for(i=a;i<a+4;i++) for(j=a;j<a+4;j++) for(k=a;k<a+4;k++) if(i!=j&&j!=k&&k!=i) { b=i*100+j*10+k; printf("%d ",b); c++; if(c%6==0) { printf("\n"); } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
附加题
有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,d,e,f; for(a=0;a<=9;a++) for(b=0;b<=9;b++) { if(a==1) { d=2; } if(a==2||a==3||a==5) { d=5; } if(a==4) { d=4; } if(a==0||a==6||a==9) { d=6; } if(a==7) { d=3; } if(a==8) { d=7; } if(b==1) { e=2; } if(b==2||b==3||b==5) { e=5; } if(b==4) { e=4; } if(b==0||b==6||b==9) { e=6; } if(b==7) { e=3; } if(b==8) { e=7; } c=a+b; if(c==1) { f=2; } if(c==2||c==3||c==5) { f=5; } if(c==4) { f=4; } if(c==0||c==6||c==9) { f=6; } if(c==7) { f=3; } if(c==8) { f=7; } if(d+e+f==12&&a!=b&&a+b==c) { printf("%d+%d=%d\n",a,b,c); } } }
小项目:自动出题器
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int a,b,result,answer,d,i,j=0,x,y,z,f,g=0,h=0; char c,choose; float accuracy,accuracy1; do { for (i=1;i<=5;i++) { srand(time(NULL)); a=rand()%100; b=rand()%100; d=rand()%4+1; switch(d) { case 1:c=‘+‘;result=a+b;break; case 2:c=‘-‘;result=a-b;break; case 3:c=‘*‘;result=a*b;break; case 4:c=‘/‘;x=a/b;y=a%b; } printf("%d%c%d=?\n",a,c,b); printf("请输入答案\n"); if (c==‘/‘) { printf ("请输入商和余数,中间用空格隔开\n"); scanf("%d %d",&z,&f); h++; if (x==z&&y==f) { j++; g++; printf("you are right\n"); continue; } else { printf("you are wrong,the right answer is %d %d\n",x,y); continue; } } scanf("%d",&answer); h++; if (answer==result) { j++; g++; printf("you are right\n"); } else { printf("you are wrong,the right answer is %d\n",result); } } accuracy=g/5.0; printf("你真棒,你做对了%d道题,正确率为%.2f%%",g,accuracy*100); printf("请选择继续游戏或者退出游戏,分别为Y(y),N(n)\n"); scanf(" %c",&choose); if(choose==78||choose==110) { printf("你选择了退出游戏"); accuracy1=(float)j/h; printf("你一共对了%d道题,正确率为%.2f%%",j,accuracy1*100); } g=0; }while(choose==89||choose==121); return 0; }
知识点总结:1 单独用if来做判断,if else和switch case都可以用!
2 重新开始循环用do while较容易,用while要重新定义变量!
实验总结:1 等号与赋值要弄清!
2 注意for循环下面的语句是在for循环里面还是外面!
3 返回最初循环是可重新定义变量或者用do while,do while 较简单!
4 代码较多就一步一步写,不要着急!
5 穷举法很好用,就是写出来的代码太多!
第六次作业