第六次作业
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int i,a,b,c,d,x; i=1000; while(i<10000) { a=i%10; b=i%100/10; c=i/100%10; d=i/1000; x=a*1000+b*100+c*10+d; if(i==4*x) { printf("%d\n",i); } i++; } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
#include<stdio.h> int main() { int a,b=0,c,d; printf("请输入一个多位数字\n"); scanf("%d",&a); do { c=a%10; d=a/10; b=b+c; a=d; }while(d>0); if(b>=1&&b<=12) { if(b==1) { printf("%d,January\n",b); } else if(b==2) { printf("%d,February\n",b); } else if(b==3) { printf("%d,March\n",b); } else if(b==4) { printf("%d,April\n",b); } else if(b==5) { printf("%d,May\n",b); } else if(b==6) { printf("%d,June\n",b); } else if(b==7) { printf("%d,July\n",b); } else if(b==8) { printf("%d,August\n",b); } else if(b==9) { printf("%d,September\n",b); } else if(b==10) { printf("%d,October\n",b); } else if(b==11) { printf("%d,November\n",b); } else if(b==12) { printf("%d,December\n",b); } } else { printf("%d,***\n",b); } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
#include<stdio.h> int main() { int a,b,c,d,e,f,g,i,j=0; printf("请输入一个不大于6的整数"); scanf("%d",&a); if(a>=1&&a<=6) { b=a+1; c=a+2; d=a+3; for(i=a*100;i<=999;i++) { e=i/100; f=i%100/10; g=i%10; if(e!=f&&f!=g&&g!=e&&e>=a&&e<=d&&f>=a&&f<=d&&g>=a&&g<=d) { printf("%4d",i); j++; if(j%6==0) { printf("\n"); } } } } return 0; }
4.猜拳游戏
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a,b,i=0,j=0,k=0,l=0; char x; do { srand(time(NULL)); b=rand()%3+1; printf("请输入你的选择:1。剪刀2。拳头3。布\n"); scanf("%d",&a); while(a<=0||a>3) { printf("error\n"); scanf("%d",&a); } if(a==b) { printf("平局\n"); l++; } else if((a==1&&b==2)||(a==2&&b==3)||(a==3&&b==1)) { printf("你输了\n"); if(b==1) { printf("电脑出的剪刀"); } else if(b==2) { printf("电脑出的石头"); } else if(b==3) { printf("电脑出的布"); } j++; } else if((a==2&&b==1)||(a==3&&b==2)||(a==1&&b==3)) { printf("你赢了\n"); if(b==1) { printf("电脑出的剪刀"); } else if(b==2) { printf("电脑出的石头"); } else if(b==3) { printf("电脑出的布"); } k++; } i++; printf("请问你是否要继续“y”or“n”"); scanf(" %c",&x); }while(x=='y'||x=='Y'); printf("一共进行了%d次,平局了%d次,输了%d次,赢了%d次",i,l,j,k); return 0; }
实验总结:如果情况很多的话,用switch比用if要简单一些,也更清楚。
当你进行循环的时候,要考虑,什么语句应该放在外面,什么放在里面。
do while和while一个实现执行后判断,一个实现判断后执行