第六次作业
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
# include <stdio.h> int main () { int a,b,c,d,e,i; for (i=1000;i<=9999;i++) { a=i%10; b=(i/10)%10; c=(i/100)%10; d=i/1000; e=a*1000+b*100+c*10+d; if ((a!=b)&&(b!=c)&&(c!=d)) { if(i==4*e) { printf ("%d",i); } } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
# include <stdio.h> int main () { int a,b,c,sum=0; printf("输入任意一个多位的数字"); scanf ("%d",&a); while(a!=0) { sum=sum+a%10; a=a/10; } printf ("%d",sum); if(sum>12||sum<1) { printf(" ***"); } else { switch(sum) { case 1:printf("January"); break; case 2:printf("February"); break; case 3:printf("March"); break; case 4:printf("April"); break; case 5:printf("May"); break; case 6:printf("June"); break; case 7:printf("July"); break; case 8:printf("August"); break; case 9:printf("September"); break; case 10:printf("October"); break; case 11:printf("November"); break; case 12:printf("December"); break; } } 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,a,b,c,d,e,count=0; printf ("请输入不超过6的正整数A"); scanf ("%d",&A); if (A<=0||A>6) { printf ("error"); } else { a=A+4; for(b=A;b<a;b++) for(c=A;c<a;c++) for(d=A;d<a;d++) { if((b!=c)&&(c!=d)&&(b!=d)) { e=b*100+c*10+d; printf(" %d",e); count++; if(count%6==0) { printf ("\n"); } } } } return 0; }
4.完成看商品猜价格小游戏。 要求:1.对输入数据进行合法性验证,每次猜数结果如果不对,则提示猜大了还是猜小了,每件商品最多猜10次,如果猜对了,输出猜了几次,如果10次都没猜对,则输出商品的价格。 一轮游戏结束后,让用户选择是继续下一轮游戏还是退出。
# include <stdio.h> #include <time.h> # include <stdlib.h> int main () { int magic,guess,i,count=0; char reply; srand (time(NULL)); magic=rand()%100+1; do { printf ("请猜一个价格,只有十次机会哟!"); scanf ("%d",&guess); count++; for(i=1;i<=10;i++) { if (guess>magic) { printf ("太大了,请重新输入!"); } else if (guess<magic) { printf("太小了,请重新输入!"); } else if (guess==magic) { printf("恭喜你,答对了!"); break; } scanf ("%d",&guess); if (i==10) { printf("十次都没猜对,正确结果是%d",magic); } } printf ("继续下一轮游戏吗?Y(y)orN(n)"); scanf (" %c",&reply); } while(reply=='Y'||reply=='y'); printf ("一共猜了%d 轮",count); return 0; }
二.知识点总结:
1.求个位数十位数百位数等;
2.不知循环次数可用while语句,switch....case 语句的使用,记得加break
3.第三题这个类型的题用穷举法
4第四题这种类型的题用do ...while 语句循环很方便;
三.实验总结
1.要考虑好每道题的完整性,不能有漏洞。例如让输入一定范围内的数字,如果输入的数字超出范围,要写输入错误等。
2.要熟悉运用循环语句;
3.a=b=c要写成a==b&&b==c&&c==a,别落了c==a
4.尽可能要简化自己的程序
5.switch....case 语句的使用,记得加break