第六次作业
一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
1.1 代码:
#include <stdio.h> int main () { int a,b,c,d,e,i; for(i=1000;i<=9999;i++) { a=i/1000; b=i%1000/100; c=i%100/10; d=i%10; e=d*1000+c*100+b*10+a; if(i==4*e) { printf("%d\n",i); } } return 0; }
1.2 程序运行结果:
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
2.1 代码:
#include <stdio.h> int main () { long a,b,c,sum=0; printf("请输入一个多位数字\n"); scanf("%ld",&a); if(a<9) { printf("error\n"); } else { while(a>0) { b=a%10; a=a/10; sum=sum+b; } printf("%d\n",sum); 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; default : printf("***\n"); } } return 0; }
2.2 程序运行结果:
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
3.1 代码:
#include <stdio.h> int main() { int A,i,j,k,a,sum=0; printf("请输入一个不超过6的正整数\n"); scanf("%d",&A); if(A<0||A>6) { printf("error"); } else { for(i=A;i<=A+3;i++) { for(j=A;j<=A+3;j++) { for(k=A;k<=A+3;k++) { if(i!=j&&j!=k&&k!=i) { sum=i*100+j*10+k; a++; printf("%4d",sum); if(a%6==0) { printf("\n"); } } } } } } return 0; }
3.2 程序运行结果:
4.猜拳游戏
4.1 代码:
#include <stdio.h> #include <stdlib.h> #include <time.h> int main () { int player,computer,b=1,n,i=0,j=0,k=0; char a,y; while (1) { srand(time(NULL)); computer=rand()%3+1; printf("***猜拳游戏***\n"); printf("第%d次对决,请做出你的选择:\n 1.石头 2.剪刀 3.布\n",b); scanf("%d",&player); while (player<1||player>3) { printf("输入错误,请重输\n"); scanf("%d",&player); } { if(computer==1) { printf("电脑出了石头\n"); switch(player) { case 1:printf("你出了石头\n 平局\n");i++;break; case 2:printf("你出了剪刀\n 你输了\n");j++;break; case 3:printf("你出了布\n 你赢了\n");k++;break; } } if(computer==2) { printf("电脑出了剪刀\n"); switch(player) { case 1:printf("你出了石头\n 你赢了\n");k++;break; case 2:printf("你出了剪刀\n 平局\n");i++;break; case 3:printf("你出了布\n 你输了\n");j++;break; } } if(computer==3) { printf("电脑出了布\n"); switch(player) { case 1:printf("你出了石头\n 你输了\n");j++;break; case 2:printf("你出了剪刀\n 你赢了\n");k++;break; case 3:printf("你出了布\n 平局\n");i++;break; } } printf("是否继续?按n退出,按其他键继续 \n"); scanf(" %c",&a); if (a=='n') break; } b++; } if(j>k) { printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局\n",b,k,j,i); printf("你输了\n"); } else if(j<k) { printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局\n",b,k,j,i); printf("你赢了\n"); } else { printf("共对战了%d局,你赢了%d局,电脑赢了%d局,打平%d局\n",b,k,j,i); printf("平局\n"); } exit (0); return 0; }
4.2 程序运行结果:
附加题
有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的拼法如图所示:
二、知识点总结
1.switch语句后要有相应的break.
2.for循环和while循环要分开,注意两者的使用条件
三、实验总结
1.注意运行的是否为副本,副本运行出的结果与源程序是不一样的。
2.记得要对程序进行合法性验证,给出错误数据的解决方法
3.注意穷举法的应用.
4.数据对齐时要注意空位.