一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include <stdio.h> int main() { int number,nnumber; for(number=1000;number<=9999;number++) { nnumber=number%10*1000+number%100/10*100+number%1000/100*10+number/1000; if(number==4*nnumber) { printf("%d ",number); } } return 0; }
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include <stdio.h> int main() { int number,num,sum=0,i; printf("请输入一个多位数:"); scanf("%d",&number); if(number<10) { printf("输入的数据有误"); } else if(number>=10) { while(number>0) { num=number; sum=sum+num%10; number=number/10; } if(sum>12) { 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
#include <stdio.h> int main() { int n,n1,n2,n3,i=0; printf("请输入入一个不大于6的正整数:"); scanf("%d",&n); if(n>6||n<=0) printf("输入的数据有误"); else { for(n1=n;n1<=(n+3);n1++) { for(n2=n;n2<=(n+3);n2++) { for(n3=n;n3<=(n+3);n3++) { if(n1!=n2&&n1!=n3&&n2!=n3) { printf("% d",n1*100+n2*10+n3); i++; if(i%6==0) printf(" "); } } } } } return 0; }
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
#include<stdio.h> #include<time.h> int main() { int w,c,success=0,fail=0,p=0,z=1,s,j,b; char Q; do{ srand(time(NULL)); c=rand()%3+1; printf("*****猜拳小游戏***** "); printf("第%d轮对决 ",z); printf("该你出拳了,请选择:1.石头 2.剪刀 3.布 "); scanf("%d",&w); if(w>3||w<0) { printf("数据错误,请重新输入"); } else if(w==1) { z++; switch(c) { case 1 : printf("你出了石头,电脑出石头 平局,加油啊 "); p++; break; case 2 : printf("你出了石头,电脑出剪刀 运气真好,你赢了 "); success++; break; case 3 : printf("你出了石头,电脑出布 很遗憾,你输了 "); fail++; break; } } else if(w==2) { z++; switch(c) { case 1 : printf("你出了剪刀,电脑出石头 很遗憾,你输了 "); fail++; break; case 2 : printf("你出了剪刀,电脑出剪刀 平局,加油啊 "); p++; break; case 3 : printf("你出了剪刀,电脑出布 运气真好,你赢了 "); success++; break; } } else if(w==3) { z++; switch(c) { case 1 : printf("你出了布,电脑出石头 运气真好,你赢了 "); success++; break; case 2 : printf("你出了布,电脑出剪刀 很遗憾,你输了 "); fail++; break; case 3 : printf("你出了布,电脑出布 平局,加油啊 "); p++; break; } } printf("继续下一轮游戏吗?Y(y)orN(n) "); scanf(" %c",&Q); }while(Q=='Y'||Q=='y'); printf("对决战况: 作战次数:%d 平局次数:%d 电脑得分:%d 你得分:%d ",z-1,p,fail,success); if(success>fail) printf("最终结果:你赢了 "); else if(success<fail) printf("最终结果:你输了 "); else if(success=fail) printf("最终结果:平局 "); 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 a,b,c,a1,b1,c1; for(a=0;a<=9;a++) { for(b=0;b<=9;b++) { for(c=0;c<=9;c++) { switch(a) { case 1: a1=2; break; case 2: case 3: case 5: a1=5; break; case 4: a1=4; break; case 6: case 9: case 0: a1=6; break; case 7: a1=3; break; case 8: a1=7; break; } switch(b) { case 1: b1=2; break; case 2: case 3: case 5: b1=5; break; case 4: b1=4; break; case 6: case 9: case 0: b1=6; break; case 7: b1=3; break; case 8: b1=7; break; } switch(c) { case 1: c1=2; break; case 2: case 3: case 5: c1=5; break; case 4: c1=4; break; case 6: case 9: case 0: c1=6; break; case 7: c1=3; break; case 8: c1=7; break; } if(a+b==c&&a1+b1+c1==12) { printf("%d+%d=%d ",a,b,c); } } } } return 0; }
二、知识点总结
1牢记选择结构与循环结构的几种形式
2分清在什么情况更适合使用什么样的循环结构
三、实验总结
1:< <= > >=的运算优先级比== !=高
2:switch语句具有穿透性,可以用break跳出
3:可以新增一个变量进行求余来实现输出结果的换行
4:不同编译器之间存在着差异,写好程序后要在不同编译器都测试一遍
5:在某些情况下,用switch case语句要比if else语句更便利