一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h> int main() { int a,b,c,d,shu,huan; for(shu=1000;shu<=9999;shu=shu+1) { a=shu/1000; b=shu/100%10; c=shu/10%10; d=shu%10; if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d) { huan=d*1000+c*100+b*10+a; if(shu==huan*4) { printf("原四位数是%d,新四位数是%d",shu,huan); } } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h> int main() { int a,b,c; printf("请输入一个数\n"); scanf("%d",&a); if(a<=0) { printf("输入错误\n"); } else if(a>0) { c=0; while(a!=0) { b=a%10; c=c+b; a=a/10; } if(c==1) { printf("January"); } else if(c==2) { printf("february"); } else if(c==3) { printf("March"); } else if(c==4) { printf("April"); } else if(c==5) { printf("May"); } else if(c==6) { printf("June"); } else if(c==7) { printf("July"); } else if(c==8) { printf("August"); } else if(c==9) { printf("September"); } else if(c==10) { printf("October"); } else if(c==11) { printf("November"); } else if(c==12) { printf("December"); } else if(c>12) { printf("***"); } } return 0; }
3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
#include <stdio.h> int main() { int x,a,b,c,d,i; printf("请输入一个不超过6的正整数\n"); scanf("%d",&x); if(x>6||x<1) { printf("输入错误\n"); } else { for(a=x;a<=x+3;a=a+1) { i=0; for(b=x;b<=x+3;b=b+1) { for(c=x;c<=x+3;c=c+1) { if(a!=b&&a!=c&&b!=c) { d=a*100+b*10+c; i=i+1; if(i!=6) { printf("%d ",d); } else { printf("%d\n",d); } } } } } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
#include<stdlib.h> #include<stdio.h> #include<time.h> int main() { int a,x,i; char b; srand(time(NULL)) ; while(1) { printf("猜1-100之间的一个数,有十次机会\n"); x=rand()%100+1; for(i=1;i<=10;i=i+1) { printf("请输入\n"); scanf("%d",&a); if(a<=0||a>=101) { printf("输入错误\n"); i=i-1; } else if(a>x) { printf("猜大了\n"); } else if(a<x) { printf("猜小了\n"); } else if(a=x) { printf("猜对了,一共猜了%d次\n",i); break; } if(i==10&&a!=x) { printf("十次都猜错了,正确答案是%d\n",x); } } printf("请输入Y进行下一轮游戏,输入其他退出游戏\n"); fflush(stdin); scanf("%c",&b); if(b!=‘y‘&&b!=‘Y‘) { break; } } 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根火柴棍必须全部用上
#include<stdio.h> int main() { int a,b,c,x,y,z; for(a=0;a<=9;a=a+1) { if(a==1) { x=2; } else if(a==2||a==3||a==5) { x=5; } else if(a==4) { x=4; } else if(a==6||a==9||a==0) { x=6; } else if(a==7) { x=3; } else if(a==8) { x=7; } for(b=0;b<=9;b=b+1) { if(b==1) { y=2; } else if(b==2||b==3||b==5) { y=5; } else if(b==4) { y=4; } else if(b==6||b==9||b==0) { y=6; } else if(b==7) { y=3; } else if(b==8) { y=7; } for(c=0;c<=9;c=c+1) { if(c==1) { z=2; } else if(c==2||c==3||c==5) { z=5; } else if(c==4) { z=4; } else if(c==6||c==9||c==0) { z=6; } else if(c==7) { z=3; } else if(c==8) { z=7; } if(a+b==c&&x+y+z==12) { printf("%d+%d=%d\n",a,b,c); } } } } return 0; }
二、知识点总结
1、for语句、while语句和do...while语句的使用和区别
for用在知道循环次数的时候,不知道循环次数的时候用while和do...while,
do...while是必须执行一次
2、简便写法
i=i+1 → i++
a=a+5 → a+=5
3、在循环中,break是结束整个循环,continue是结束本次循环
4、不推荐使用goto语句
5、在判断一个数是否是质数时,用根号来节省运行时间
6、循环嵌套时、外层循环一次,内层完成所有循环
三、实验总结
1、先把数据算好,再写程序
2、一个else对应一个if
3、循环时,注意循环的边界,和循环一次计数的变量增加多少