一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include<stdio.h>
int main()
{
int a,b,c,d,e,f;
for(a=1000;a<=9999;a++)
{
b=a/1000;
c=a%1000/100;
d=a%100/10;
e=a%10;
f=e*1000+d*100+c*10+b;
if(b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e&&a==4*f)
{
printf("原四位数为%d,新的四位数为%d",a,f);
}
}
return 0;
}
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include<stdio.h>
int main()
{
long long int a,sum;
sum=0;
printf("请输入一个多位数\n");
scanf("%lld",&a);
while(a>0)
{
sum=sum+a%10;
a=a/10;
}
prntf("%d\n"sum);
if(sum>=1&&sum<=12)
{
switch(sum)
{
case 1: printf("January\n");break;
case 2: printf("February\n");break;
case 3: printf("March\n");break;
case 4: printf("April\n");break;
case 5: printf("May\n");break;
case 6: printf("June\n");break;
case 7: printf("July\n");break;
case 8: printf("August\n");break;
case 9: printf("September\n");break;
case 10: printf("October\n");break;
case 11: printf("November\n");break;
case 12: printf("December\n");break;
}
}
else
{
printf("***\n");
}
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 a,b,c,d,e,x;
printf("请输入一个不超过6的正整数A\n");
scanf("%d",&a);
while(1)
{
if(a<=0||a>6)
{
printf("输入错误,请重新输入\n");
}
else if(a>0&&a<=6)
{
for(b=a;b<(a+3);b++)
{
for(c=a;c<=(a+3);c++)
{
for(d=a;d<=(a+3);d++)
{
if(b!=c&&b!=d&&c!=d)
{
e=b*100+c*10+d;
printf("% d",e);
x++;
if(x%6==0)
{
printf("\n");
}
}
}
}
}
}
}
return 0;
}
4、猜拳小游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int computer,gamer,win,low,draw,great;
char a;
a=0,great=0,win=0,low=0,draw=0;
while(1)
{
computer=rand()%3+1;
printf("欢迎来到猜拳小游戏,请输入1,2,3分别代表剪刀、石头、布\n");
scanf("%d",&gamer);
if(gamer<=0||gamer>=4)
{
printf("输入错误,请重新输入\n");
}
else if((gamer==1&&computer==3)||(gamer==2&&computer==1)||(gamer==3&&computer==2))
{
printf("你赢了\n");
printf("电脑输出的是",computer);
if(computer==1){printf("剪刀\n");}
if(computer==2){printf("石头\n");}
if(computer==3){printf("布\n");}
win++;
}
else if((gamer==1&&computer==2)||(gamer==2&&computer==3)||(gamer==3&&computer==1))
{
printf("你输了\n");
printf("电脑输出的是",computer);
if(computer==1){printf("剪刀\n");}
if(computer==2){printf("石头\n");}
if(computer==3){printf("布\n");}
low++;
}
else if((gamer==1&&computer==1)||(gamer==2&&computer==2)||(gamer==3&&computer==3))
{
printf("平局\n");
printf("电脑输出的是",computer);
if(computer==1){printf("剪刀\n");}
if(computer==2){printf("石头\n");}
if(computer==3){printf("布\n");}
draw++;
}
fflush(stdin);
printf("如果继续游戏请输入任意键,输入N结束游戏\n");
scanf("%c",&a);
if(a=='N')
{
printf("你的得分是%d,电脑的得分是%d",win,low);
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根火柴棍必须全部用上
用火柴棍拼数字0-9的拼法如图所示:
#include<stdio.h>
int main()
{
int a,b,c,A,C,B;
for(a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
switch(a)
{
case 0:A=6;break;
case 1:A=2;break;
case 2:A=5;break;
case 3:A=5;break;
case 4:A=4;break;
case 5:A=5;break;
case 6:A=6;break;
case 7:A=3;break;
case 8:A=7;break;
case 9:A=6;break;
}
switch(b)
{
case 0:B=6;break;
case 1:B=2;break;
case 2:B=5;break;
case 3:B=5;break;
case 4:B=4;break;
case 5:B=5;break;
case 6:B=6;break;
case 7:B=3;break;
case 8:B=7;break;
case 9:B=6;break;
}
switch(c)
{
case 0:C=6;break;
case 1:C=2;break;
case 2:C=5;break;
case 3:C=5;break;
case 4:C=4;break;
case 5:C=5;break;
case 6:C=6;break;
case 7:C=3;break;
case 8:C=7;break;
case 9:C=6;break;
}
if(a+b==c&&A+B+C==12&&a!=b)
{
printf("%d+%d=%d\n",a,b,c);
}
}
}
}
return 0;
}
二、对知识点总结
1、顺序结构:程序的基本结构:(1)声明变量(2)输入(3)计算(4)输出
2、选择结构:if单分枝形式 if else 双分支形式 和 多分支形式。
3、穷举法,把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出,并进行程序的优化,减少程序进行的复杂性。
4、程序的调试、设置断点、单步调试,利用调试工具查找程序的错误。
三、实验总结
1、注意C语言的数学问题的正确算法 如3x为3*x
2、输入的值太长时考虑字符的长度
3、注意考虑数据的合法性
4、循环的嵌套,先把最外层的进行完,在进行外层 以此类推
5、考虑系统随机给的数的范围