第六次作业
一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> #include<math.h> int main() { int num; int a,b,c,d,i; for(i=1000;i<10000;i++) { a=i%10; b=(i/10)%10; c=(i/100)%10; d=i/1000; if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) { num=a*1000+b*100+c*10+d*1; if(i*4==num) { printf("%d*4=%d\n",i,num); } } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { int i=0,sum=0; printf("请输入一个正数:\n"); while(1) { scanf("%d",&i); if(i<=0) { printf("输入错误,重新输入:\n"); continue; } else { break; } } while(i>0) { sum=sum+(i%10); i=i/10; } printf("%d",sum); 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 { 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> #include<stdlib.h> int main() { int a,b,c,d,e,f,i=0; printf("输入一个整数,要求在1-6之间:\n"); while(1) { scanf("%d",&a); if(a>=7||a<=0) { printf("输入错误,重新输入:\n"); continue; } else { system("CLS"); break; } } printf("输入的数字是%d:\n",a); for(b=a;b<(a+4);b++) for(c=a;c<(a+4);c++) for(d=a;d<(a+4);d++) { if(b!=c&&c!=d&&b!=d) {
f=b*100+c*10+d; printf("%d",f); i++; if(i%6==0) { printf("\n"); } } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
猜拳游戏
#include<stdio.h> #include<stdlib.h> #include<math.h> int main() { char gamer; int computer; int result,score=0; while(1) { printf("这是一个猜拳的小游戏,请你输入你要出的拳。\n"); printf("A:剪刀\nB:石头\nC:布\nD:不玩\n"); scanf(" %c",&gamer); switch(gamer) { case 65: case 97: gamer=4; break; case 66: case 98: gamer=7; break; case 67: case 99: gamer=10; break; case 68: case 100: return 0; default: printf("你的选择为%c,选择错误,退出。\n",gamer); getchar(); system("CLS"); return 0; break; } computer=rand()%3;//获取0~2的随机数 result=(int)gamer+computer; printf("电脑出"); switch(computer) { case 0:printf("剪刀\n"); break; case 1:printf("石头\n"); break; case 2:printf("布\n"); break; } printf("你出"); switch(gamer) { case 4:printf("剪刀\n"); break; case 7:printf("石头\n"); break; case 10:printf("布\n"); break; } if(result==6||result==7||result==11) { printf("你赢了。\n"); score++; } else if(result==5||result==9||result==10) { printf("你输了。\n"); } else { printf("平局。\n"); } printf("继续下一轮游戏吗?回复N退出游戏,回复其他继续游戏。\n"); scanf(" %c",&gamer); printf("对战情况:\n"); printf("你得分%d",score); } return 0; }
二、知识点总结(对顺序结构、选择结构、循环结构做综合总结)
1.头文件#include<math.h>,#include<stdlib.h>的使用,四位数换位的方法,个位与10求余,十百千位各除10取余。
2.输出的格式注意,例第一题新组成的数为原来数的四倍 printf("i*4==%d\n",i,new num);。
3.编程时先判断不符的情况,强制输出,若符合就执行,表述清楚,思维清晰,例第二题的格式,注意大括号内的语句。
4.在比较长的编程中,中间可以使用清屏语句,system("cLs");。
三、实验总结(实验中遇到的问题及解决方法)
1.第一道题遇到的问题还是大括号的使用,if语句的循环嵌套,以后要特别注意。
2.第二道题是主用while语句
3.做猜拳游戏的编程时遇到的问题比较多,然后解决是先确定电脑出拳,然后定一个值代表玩家和电脑出拳指的数值之和,再做判断,然后得分情况也出现了错误,输入的时候没有赋出值,在程序里也没循环起来,这都是要注意的地方。