首页 > 代码库 > 第六次作业
第六次作业
一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,e,f; for(a=1000;a<=9999;a++) { b=a/1000; c=a%1000/100; d=a%100/10; e=a%10; f=e*1000+d*100+c*10+b; if(b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a==4*f) { printf("原四位数为%d,新的四位数为%d",a,f); } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { long long int a,sum; sum=0; printf("请输入一个多位数\n"); scanf("%lld",&a); while(a>0) { sum=sum+a%10; a=a/10; } if(sum>=1&&sum<=12) { switch(sum) { case 1: printf("January\n");break; case 2: printf("February\n");break; case 3: printf("March\n");break; case 4: printf("April\n");break; case 5: printf("May\n");break; case 6: printf("June\n");break; case 7: printf("July\n");break; case 8: printf("August\n");break; case 9: printf("September\n");break; case 10: printf("October\n");break; case 11: printf("November\n");break; case 12: printf("December\n");break; } } else { printf("***\n"); } 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,e,x; printf("请输入一个不超过6的正整数A\n"); scanf("%d",&a); while(1) { if(a<=0||a>=6) { printf("输入错误,请重新输入\n"); } else if(a>0&&a<6) { for(b=a;b<(a+3);b++) { for(c=a;c<=(a+3);c++) { for(d=a;d<=(a+3);d++) { if(b!=c&&b!=d&&c!=d) { e=b*100+c*10+d; printf("% d",e); x++; if(x%6==0) { printf("\n"); } } } } } } } return 0; }
4、猜拳小游戏
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int computer,gamer,win,low,draw,great; char a; a=0,great=0,win=0,low=0,draw=0; while(1) { computer=rand()%3+1; printf("欢迎来到猜拳小游戏,请输入1,2,3分别代表剪刀、石头、布\n"); scanf("%d",&gamer); if(gamer<=0||gamer>=4) { printf("输入错误,请重新输入\n"); } else if((gamer==1&&computer==3)||(gamer==2&&computer==1)||(gamer==3&&computer==2)) { printf("你赢了\n"); printf("电脑输出的是",computer); if(computer==1){printf("剪刀\n");} if(computer==2){printf("石头\n");} if(computer==3){printf("布\n");} win++; } else if((gamer==1&&computer==2)||(gamer==2&&computer==3)||(gamer==3&&computer==1)) { printf("你输了\n"); printf("电脑输出的是",computer); if(computer==1){printf("剪刀\n");} if(computer==2){printf("石头\n");} if(computer==3){printf("布\n");} low++; } else if((gamer==1&&computer==1)||(gamer==2&&computer==2)||(gamer==3&&computer==3)) { printf("平局\n"); printf("电脑输出的是",computer); if(computer==1){printf("剪刀\n");} if(computer==2){printf("石头\n");} if(computer==3){printf("布\n");} draw++; } fflush(stdin); printf("如果继续游戏请输入任意键,输入N结束游戏\n"); scanf("%c",&a); if(a==‘N‘) { printf("你的得分是%d,电脑的得分是%d",win,low); 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,A,C,B; for(a=0;a<=9;a++) { for(b=0;b<=9;b++) { for(c=0;c<=9;c++) { switch(a) { case 0:A=6;break; case 1:A=2;break; case 2:A=5;break; case 3:A=5;break; case 4:A=4;break; case 5:A=5;break; case 6:A=6;break; case 7:A=3;break; case 8:A=7;break; case 9:A=6;break; } switch(b) { case 0:B=6;break; case 1:B=2;break; case 2:B=5;break; case 3:B=5;break; case 4:B=4;break; case 5:B=5;break; case 6:B=6;break; case 7:B=3;break; case 8:B=7;break; case 9:B=6;break; } switch(c) { case 0:C=6;break; case 1:C=2;break; case 2:C=5;break; case 3:C=5;break; case 4:C=4;break; case 5:C=5;break; case 6:C=6;break; case 7:C=3;break; case 8:C=7;break; case 9:C=6;break; } if(a+b==c&&A+B+C==12&&a!=b) { printf("%d+%d=%d\n",a,b,c); } } } } return 0; }
二、对知识点总结
1、顺序结构:程序的基本结构:(1)声明变量(2)输入(3)计算(4)输出
2、选择结构:if单分枝形式 if else 双分支形式 和 多分支形式。
3、穷举法,把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出,并进行程序的优化,减少程序进行的复杂性。
4、程序的调试、设置断点、单步调试,利用调试工具查找程序的错误。
三、实验总结
1、注意C语言的数学问题的正确算法 如3x为3*x
2、输入的值太长时考虑字符的长度
3、注意考虑数据的合法性
4、循环的嵌套,先把最外层的进行完,在进行外层 以此类推
5、考虑系统随机给的数的范围
第六次作业