第六次
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h>
int main()
{
int i,a,b,c,d,x;
i=1000;
while(i<10000)
{
a=i%10;
b=i%100/10;
c=i/100%10;
d=i/1000;
x=a*1000+b*100+c*10+d;
if(i==4*x&&a!=b&&b!=c&&c!=d&&d!=a)
{
printf("%d\n",i);
}
i++;
}
return 0;
}

2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
#include<stdio.h>
int main()
{
int a,m,n,sum=0;
printf("请输入任意一个多位数字\n");
scanf("%d",&a);
do
{
m=a%10;
n=a/10;
sum=sum+m;
a=n;
}while(n>0);
if(sum>=1&&sum<=12)
{
switch(sum)
{
case 1:printf("%d January\n",sum);break;
case 2:printf("%d February\n",sum);break;
case 3:printf("%d March\n",sum);break;
case 4:printf("%d April\n",sum);break;
case 5:printf("%d May\n",sum);break;
case 6:printf("%d June\n",sum);break;
case 7:printf("%d July\n",sum);break;
case 8:printf("%d August\n",sum);break;
case 9:printf("%d September\n",sum);break;
case 10:printf("%d October\n",sum);break;
case 11:printf("%d November\n",sum);break;
case 12:printf("%d December\n",sum);break;
}
}
else
{
printf("%d ***\n",sum);
}
return 0;
}

3.给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:输入在一行中给出A。
输出格式:输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
#include<stdio.h>
int main()
{
int x,a,b,c,i,l,m,n,j=0;
printf("请输入一个不超过6的正整数A\n");
scanf("%d",&x);
while(x>6||x<1)
{
printf("error\n请重新输入\n");
scanf("%d",&x);
}
if(x>=1&&x<=6)
{
a=x+1;
b=a+1;
c=b+1;
}
for(i=x*100;i<1000;i++)
{
l=i/100;
m=i%100/10;
n=i%10;
if(l!=m&&l!=n&&m!=n&&m>=x&&m<=c&&l>=x&&l<=c&&n>=x&&n<=c)
{
printf("%4d",i);
j++;
if(j%6==0)
{
printf("\n");
}
}
}
return 0;
}

4.猜拳游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int gamer,computer,result,a=1,b,x=0,y=0,z=0;
char complete;
do
{
srand(time(NULL));
computer=rand()%3+1;
printf("******猜拳游戏******\n第%d轮对决\n该你出拳了,请选择 1.石头 2.剪刀 3.布\n",a);
scanf("%d",&gamer);
while(gamer<1||gamer>3)
{
printf("数据错误,请重新输入\n");
scanf("%d",&gamer);
}
if(computer==1)
{
printf("电脑出石头\n");
switch(gamer)
{
case 1:printf("平局\n");x++;break;
case 2:printf("你输了\n");z++;break;
case 3:printf("你赢了\n");y++;break;
}
}
else if(computer==2)
{
printf("电脑出剪刀\n");
switch(gamer)
{
case 1:printf("你赢了\n");y++;break;
case 2:printf("平局\n");x++;break;
case 3:printf("你输了\n");z++;break;
}
}
else if(computer==3)
{
printf("电脑出布\n");
switch(gamer)
{
case 1:printf("你输了\n");z++;break;
case 2:printf("你赢了\n");y++;break;
case 3:printf("平局\n");x++;break;
}
}
a++;
b=a-1;
printf("是否进行下一轮游戏,YES(y) or NO(n)\n");
scanf(" %c",&complete);
if(complete==110||complete==78)
{
printf("你选择了退出游戏\n对战状况:\n对决次数:%d 平局次数%d 电脑得分%d 你得分%d\n",b,x,z,y);
if(z>y)
{
printf("最终结果:你输\n");
}
else if(z<y)
{
printf("最终结果:你赢\n");
}
else
{
printf("最终结果:平\n");
}
}
while(complete!=110&&complete!=78&&complete!=121&&complete!=89)
{
printf("error\n请重新输入\nYES(y) or NO(n)\n");
scanf(" %c",&complete);
if(complete==110||complete==78)
{
printf("你选择了退出游戏\n对战状况:\n对决次数:%d 平局次数%d 电脑得分%d 你得分%d\n",b,x,z,y);
if(z>y)
{
printf("最终结果:你输\n");
}
else if(z<y)
{
printf("最终结果:你赢\n");
}
else
{
printf("最终结果:平\n");
}
}
}
}while(complete==121||complete==89);
return 0;
}

附加题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,z,a=7,b=6,c=5,d=4,e=3,f=2,l,m,n;
for(x=0;x<=9;x++)
for(y=0;y<=9;y++)
for(z=0;z<=9;z++)
{
if(z==x+y)
{
l=x;
m=y;
n=z;
switch(l)
{
case 0:l=b;break;
case 1:l=f;break;
case 2:l=c;break;
case 3:l=c;break;
case 4:l=d;break;
case 5:l=c;break;
case 6:l=b;break;
case 7:l=e;break;
case 8:l=a;break;
case 9:l=b;break;
}
switch(m)
{
case 0:m=b;break;
case 1:m=f;break;
case 2:m=c;break;
case 3:m=c;break;
case 4:m=d;break;
case 5:m=c;break;
case 6:m=b;break;
case 7:m=e;break;
case 8:m=a;break;
case 9:m=b;break;
}
switch(n)
{
case 0:n=b;break;
case 1:n=f;break;
case 2:n=c;break;
case 3:n=c;break;
case 4:n=d;break;
case 5:n=c;break;
case 6:n=b;break;
case 7:n=e;break;
case 8:n=a;break;
case 9:n=b;break;
}
if(l+m+n==12)
{
printf("%d+%d=%d ",x,y,z);
}
}
}
return 0;
}

知识点总结:
1.跳出选择语句要用stdlib.h函数,并且在语句后加exit(0);
2.跳出循环和case使用break,若是跳出一个语句使用continue
3.求一个数的每一位用穷举法先取余后除十
4.do while循环后要加分号
实验总结:
1.定义变量多了不要混乱
2.循环选择相互嵌套,要逻辑合理。
3.赋值和相等一个是=一个是==
浙公网安备 33010602011771号