第六次作业
Posted 燕超
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六次作业相关的知识,希望对你有一定的参考价值。
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,i,g,k; for(i=1000;i<=9999;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) { continue; } else { g=a*1000+b*100+c*10+d; k=g*4; if(k==i) { printf("%d\\n",i); } } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include <stdio.h> int main() { int x,sum=0,i=1,num=0; printf("请输入一个数:\\n"); scanf("%d",&x); if(x>10) { while(i>0) { i=x%10; sum=sum+i; x=x/10; { if(x<10) { sum=sum+x; break; } } } printf("%d\\n",sum); switch(sum) { case 1: sum=1; printf("January"); break; case 2: sum=2; printf("February"); break; case 3: sum=3; printf("March"); break; case 4: sum=4; printf("April"); break; case 5: sum=5; printf("May"); break; case 6: sum=6; printf("June"); break; case 7: sum=7; printf("July"); break; case 8: sum=8; printf("August"); break; case 9: sum=9; printf("September"); break; case 10: sum=10; printf("October"); break; case 11: sum=11; printf("November"); break; case 12: sum=12; printf("December"); break; } } else if(x<-10) { while(i>0) { i=x%(-10); i=i*(-1); sum=sum+i; x=x/(-10); if(x>0) { sum=sum+x; break; } } printf("%d\\n",sum); switch(sum) { case 1: sum=1; printf("January"); break; case 2: sum=2; printf("February"); break; case 3: sum=3; printf("March"); break; case 4: sum=4; printf("April"); break; case 5: sum=5; printf("May"); break; case 6: sum=6; printf("June"); break; case 7: sum=7; printf("July"); break; case 8: sum=8; printf("August"); break; case 9: sum=9; printf("September"); break; case 10: sum=10; printf("October"); break; case 11: sum=11; printf("November"); break; case 12: sum=12; printf("December"); break; } } else if(x==0) { printf("num=0"); } else { printf("intput error!!"); } 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=0,i,g,h,number; printf("请输入一个数:\\n"); scanf("%d",&A); for(i=A;i<=(A+3);i++) { for(g=A;g<=(A+3);g++) { for(h=A;h<=(A+3);h++) { if(i!=g&&i!=h&&g!=h) { number=i*100+g*10+h; printf("%d ",number); B++; if(B%6==0) { printf("\\n"); } } else { continue; } } } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
#include <stdio.h> int main() { int DE=1,year,year1,sum,g,h,l,month,day=0,T,run,K,f=0; printf("请输入一个年份和月份:\\n"); scanf("%d%d",&year,&month); while(DE=1) { if(year<1900||month<1||month>12) { printf("input error!!请重新输入:\\n"); DE=1; } else { break; } scanf("%d%d",&year,&month); } system("CLS"); run=(year-1904)/4+1; day=365*(year-1900-run)+run*366; K=month-1; printf("星期一\\t星期二\\t星期三\\t星期四\\t星期五\\t星期六\\t星期日\\n"); if(year%4==0&&year%100!=0||year%400==0) { switch(K) { case 0: sum=0; g=31; break; case 1: sum=31; g=29; break; case 2: sum=60; g=31; break; case 3: sum=91; g=30; break; case 4: sum=121; g=31; break; case 5: sum=152; g=30; break; case 6: sum=182; g=31; break; case 7: sum=213; g=31; break; case 8: sum=244; g=30; break; case 9: sum=274; g=31; break; case 10: sum=305; g=30; break; case 11: sum=335; g=31; break; } day=day+sum; T=day%7-1; if(T==0) { for(l=1;l<=g;l++) { printf("%d\\t",l); f++; if((f+T)%7==0) { printf("\\n"); } } } else { for(h=1;h<=T;h++) { printf("\\t"); } for(l=1;l<=g;l++) { printf("%d\\t",l); f++; if((f+T)%7==0) { printf("\\n"); } } } } else { switch(K) { case 0: sum=0; g=31; break; case 1: sum=31; g=28; break; case 2: sum=59; g=31; break; case 3: sum=90; g=30; break; case 4: sum=120; g=31; break; case 5: sum=151; g=30; break; case 6: sum=181; g=31; break; case 7: sum=212; g=31; break; case 8: sum=243; g=30; break; case 9: sum=273; g=31; break; case 10: sum=304; g=30; break; case 11: sum=334; g=31; break; } day=day+sum; T=day%7; if(T==0) { for(l=1;l<=g;l++) { printf("%d\\t",l); f++; if((f+T)%7==0) { printf("\\n"); } } } else { for(h=1;h<=T;h++) { printf("\\t"); } for(l=1;l<=g;l++) { printf("%d\\t",l); f++; if((f+T)%7==0) { printf("\\n"); } } } } return 0; }
附加题
有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的拼法如图所示:
#include <stdio.h> int main() { int x1,x2,x3,club1,club2,club3,sum,num; for(x1=0;x1<=9;x1++) { switch(x1) { case 0: club1=6; break; case 1: club1=2; break; case 2: club1=5; break; case 3: club1=5; break; case 4: club1=4; break; case 5: club1=5; break; case 6: club1=6; break; case 7: club1=3; break; case 8: club1=7; break; case 9: club1=6; break; } for(x2=0;x2<=9;x2++) { switch(x2) { case 0: club2=6; break; case 1: club2=2; break; case 2: club2=5; break; case 3: club2=5; break; case 4: club2=4; break; case 5: club2=5; break; case 6: club2=6; break; case 7: club2=3; break; case 8: club2=7; break; case 9: club2=6; break; } for(x3=0;x3<=9;x3++) { switch(x3) { case 0: club3=6; break; case 1: club3=2; break; case 2: club3=5; break; case 3: club3=5; break; case 4: club3=4; break; case 5: club3=5; break; case 6: club3=6; break; case 7: club3=3; break; case 8: club3=7; break; case 9: club3=6; break; } sum=club1+club2+club3; if(sum==12&&x1+x2==x3) { num++; printf("%d+%d=%d\\n",x1,x2,x3); } } } } printf("%d\\n",num); return 0; }
顺序结构:
1:在程序中较为常见,思路简单。
2:内容格式简单明了,但是对于重复输出类的程序就需要多次进行,远不如循环结构。
循环结构:
1:和顺序结构相比,处理多次输入的程序有神效。
2:循环结构固定,但是做题思路不定,导致一题N解。
3:循环结构自身也有一定的区别,for while do...while ,注意使用时机。个人不喜欢用do...while
以上是关于第六次作业的主要内容,如果未能解决你的问题,请参考以下文章