一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h>
#include<math.h>
int main()
{
int num;
int a,b,c,d,i;
for(i=1000;i<10000;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)
{
num=a*1000+b*100+c*10+d*1;
if(i*4==num)
{
printf("%d*4=%d\n",i,num);
}
}
}
return 0;
}
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h>
int main()
{
int i=0,sum=0;
printf("请输入一个正数:\n");
while(1)
{
scanf("%d",&i);
if(i<=0)
{
printf("输入错误,重新输入:\n");
continue;
}
else
{
break;
}
}
while(i>0)
{
sum=sum+(i%10);
i=i/10;
}
printf("%d",sum);
if(sum==1)
{
printf("January");
}
else if(sum==2)
{
printf("February");
}
else if(sum==3)
{
printf("March");
}
else if(sum==4)
{
printf("April");
}
else if(sum==5)
{
printf("May");
}
else if(sum==6)
{
printf("June");
}
else if(sum==7)
{
printf("July");
}
else if(sum==8)
{
printf("August");
}
else if(sum==9)
{
printf("September");
}
else if(sum==10)
{
printf("October");
}
else if(sum==11)
{
printf("November");
}
else if(sum==12)
{
printf("December");
}
else
{
printf("***");
}
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>
#include<stdlib.h>
int main()
{
int a,b,c,d,e,f,i=0;
printf("输入一个整数,要求在1-6之间:\n");
while(1)
{
scanf("%d",&a);
if(a>=7||a<=0)
{
printf("输入错误,重新输入:\n");
continue;
}
else
{
system("CLS");
break;
}
}
printf("输入的数字是%d:\n",a);
for(b=a;b<(a+4);b++)
for(c=a;c<(a+4);c++)
for(d=a;d<(a+4);d++)
{
if(b!=c&&c!=d&&b!=d)
{
f=b*100+c*10+d;
printf("%d",f);
i++;
if(i%6==0)
{
printf("\n");
}
}
}
return 0;
}
4. 万年历、看商品猜价格、自动出题器、猜拳游戏。(完成个人选定的题目)
猜拳游戏
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{
char gamer;
int computer;
int result,score=0;
while(1)
{
printf("这是一个猜拳的小游戏,请你输入你要出的拳。\n");
printf("A:剪刀\nB:石头\nC:布\nD:不玩\n");
scanf(" %c",&gamer);
switch(gamer)
{
case 65:
case 97:
gamer=4;
break;
case 66:
case 98:
gamer=7;
break;
case 67:
case 99:
gamer=10;
break;
case 68:
case 100:
return 0;
default:
printf("你的选择为%c,选择错误,退出。\n",gamer);
getchar();
system("CLS");
return 0;
break;
}
computer=rand()%3;//获取0~2的随机数
result=(int)gamer+computer;
printf("电脑出");
switch(computer)
{
case 0:printf("剪刀\n");
break;
case 1:printf("石头\n");
break;
case 2:printf("布\n");
break;
}
printf("你出");
switch(gamer)
{
case 4:printf("剪刀\n");
break;
case 7:printf("石头\n");
break;
case 10:printf("布\n");
break;
}
if(result==6||result==7||result==11)
{
printf("你赢了。\n");
score++;
}
else if(result==5||result==9||result==10)
{
printf("你输了。\n");
}
else
{
printf("平局。\n");
}
printf("继续下一轮游戏吗?回复N退出游戏,回复其他继续游戏。\n");
scanf(" %c",&gamer);
printf("对战情况:\n");
printf("你得分%d",score);
}
return 0;
}
二、知识点总结(对顺序结构、选择结构、循环结构做综合总结)
1.头文件#include<math.h>,#include<stdlib.h>的使用,四位数换位的方法,个位与10求余,十百千位各除10取余。
2.输出的格式注意,例第一题新组成的数为原来数的四倍 printf("i*4==%d\n",i,new num);。
3.编程时先判断不符的情况,强制输出,若符合就执行,表述清楚,思维清晰,例第二题的格式,注意大括号内的语句。
4.在比较长的编程中,中间可以使用清屏语句,system("cLs");。
三、实验总结(实验中遇到的问题及解决方法)
1.第一道题遇到的问题还是大括号的使用,if语句的循环嵌套,以后要特别注意。
2.第二道题是主用while语句
3.做猜拳游戏的编程时遇到的问题比较多,然后解决是先确定电脑出拳,然后定一个值代表玩家和电脑出拳指的数值之和,再做判断,然后得分情况也出现了错误,输入的时候没有赋出值,在程序里也没循环起来,这都是要注意的地方。