首页 > 代码库 > 第六次作业
第六次作业
一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,e,i; for(a=1000;a<10000;a++) { b=a%10; c=a/10%10; d=a/100%10; e=a/1000; if(b==c||b==d||b==e||c==d||c==e||d==e) { printf(""); } else { i=b*1000+c*100+d*10+e; } if(4*i==a) { printf("%04d",a); } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { long a,b,i=0; printf("请输入任意一个多位的整数\n"); scanf("%ld",&a); while(a>0) { b=a%10; a=a/10; i=i+b; } printf("%ld\n",i); switch(i) { 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; }
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
此题可在pta网站注册提交测试。https://pta.patest.cn/pta/test/14/exam/4/question/796
#include<stdio.h> int main() { int a,b,c,d,e,f; printf("请输入一个不超过6的正整数A;\n"); scanf("%d",&a); if(a<1||a>6) { printf("输入有误。\n"); } else { 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&&d!=b) { e=b*100+c*10+d; printf("%d ",e); f++; if(f%6==0) { printf("\n"); } } } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int computer,player,x=0,y=0; char a; while(1) { computer=rand()%3+1; printf("欢迎来到猜拳小游戏,请输入(1剪刀2石头3布)\n"); scanf("%d",&player); if(player<=0||player>=4) { printf("输入错误,请重新输入\n"); } else if( (player==1&&computer==3)||(player==2&&computer==1)||(player==3&&computer==2) ) { printf("恭喜你,你赢了,电脑输入的是",computer); x++; if(computer==1) { printf("剪刀\n"); } if(computer==2) { printf("石头\n"); } if(computer==3) { printf("布\n"); } } else if( (player==1&&computer==2)||(player==2&&computer==3)||(player==3&&computer==1) ) { printf("很不幸,你输了。电脑输入的是",computer); y++; if(computer==1) { printf("剪刀\n"); } if(computer==2) { printf("石头\n"); } if(computer==3) { printf("布\n"); } } else if( (player==1&&computer==1)||(player==2&&computer==2)||(player==3&&computer==3) ) { printf("这一局是平局。电脑输入的是",computer); if(computer==1) { printf("剪刀\n"); } if(computer==2) { printf("石头\n"); } if(computer==3) { printf("布\n"); } } else { printf("输入错误,输入X结束游戏,按任意键重新开始游戏。\n"); } fflush(stdin); printf("输入0结束游戏,按任意键继续。\n"); scanf("%c",&a); if(a==‘0‘) { if(x>y) { printf("你赢了,你的得分是%d,电脑得分是%d。\n",x,y); break; } else if(x=y) { printf("你和电脑打成了平手,你的得分是%d,电脑的得分是%d。\n",x,y); break; } else { printf("你输了,你的得分是%d,电脑的得分是%d。\n",x,y); break; } } } return 0; }
二、知识点总结:
1.只有在scanf后才有地址符。
2.循环嵌套时要注意限制条件。
三、实验总结:
1.switch语句中要在最后加break。
2.do...while语句后边要加分号,而while、for语句后边不能加分号。
第六次作业