实验一:
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
代码:
#include<stdio.h>
int main()
{
int a,b,c,d,i,e;
for(i=1000;i<=9999;i++)
{
a=i/1000;
b=(i/100)%10;
c=(i/10)%10;
d=i%10;
e=d*1000+c*100+b*10+a;
if(a==b||a==c||a==d||b==c||b==d||c==d)
{
continue;
}
if(e*4==i)
{
printf("%d\n",i);
}
}
return 0;
}
实验二:
2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
代码:
#include<stdio.h> int main() { int y=0,x,i,a; printf("请输入一个多位数字\n"); scanf("%d",&x); if(x<10) { printf("请输入多位数"); } else { while(x>0) { a=x%10; y=y+a; x=x/10; } if(y>12) { printf("%d ***",y); } else { switch(y) { case 1:printf("1 January ");break; case 2:printf("2 February");break; case 3:printf("3 March");break; case 4:printf("4 April");break; case 5:printf("5 May");break; case 6:printf("6 June");break; case 7:printf("7 July");break; case 8:printf("8 August");break; case 9:printf("9 September");break; case 10:printf("10 October");break; case 11:printf("11 November");break; case 12:printf("12 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 A,a,b,c,d,e,f,i,x=0; printf("请给定一个不超过6的正整数"); scanf("%d",&A); a=A+1; b=A+2; c=A+3; for(i=A*100;i<=1000;i++) { d=i/100; e=(i/10)%10; f=i%10; if(d!=e&&d!=f&&e!=f) { if(d<=c&&e<=c&&f<=c&&d!=0&&e!=0&&f!=0&&d>=A&&e>=A&&f>=A) { printf("%d",i); x++; if(x%5<5) { printf(" "); } if(x%6==0) { printf("\n"); } } } } 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,d,e,f;
for(a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
if(a+b==c)
{
if(a==1)
{
d=2;
}
if(a==7)
{
d=3;
}
if(a==4)
{
d=4;
}
if(a==2||a==3||a==5)
{
d=5;
}
if(a==6||a==9||a==0)
{
d=6;
}
if(a==8)
{
d=7;
}
if(b==1)
{
e=2;
}
if(b==7)
{
e=3;
}
if(b==4)
{
e=4;
}
if(b==2||b==3||b==5)
{
e=5;
}
if(b==6||b==9||b==0)
{
e=6;
}
if(b==8)
{
e=7;
}
if(c==1)
{
f=2;
}
if(c==7)
{
f=3;
}
if(c==4)
{
f=4;
}
if(c==2||c==3||c==5)
{
f=5;
}
if(c==6||c==9||c==0)
{
f=6;
}
if(c==8)
{
f=7;
}
if(d+e+f==12)
{
printf("%d+%d=%d \n",a,b,c);
}
}
}
}
}
return 0;
}
万年历:
#include<stdio.h> int main() { int i,year,years,month,months,day,days=0,x,mday,numbur,week; printf("请输入年和月,用逗号隔开\n"); scanf("%d%d",&year,&month); for(years=1900;years<=year;years++) { if(years%4==0&&years%100!=0||years%400==0) { day=366; } else { day=365; } days=days+day; } for(months=1;months<=month;months++) { if(months==1||months==3||months==5||months==7||months==8||months==10||months==12) { mday=31; } if(months==4||months==6||month==9||month==11) { mday=30; } if(month==2) { if(years%4==0&&years%100!=0||years%400==0) { mday==29; } else { mday==28; } } days=days+mday; } week=days%7; printf(" =========%d年=========\n\n",year); printf(" %d月 \n\n",month); printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六\n"); printf("=======================================================\n"); switch(week%7) { case 0: printf("\t");x=1;break; case 1: printf("\t\t");x=2;break; case 2: printf("\t\t\t");x=3;break; case 3: printf("\t\t\t\t");x=4;break; case 4: printf("\t\t\t\t\t");x=5;break; case 5: printf("\t\t\t\t\t\t");x=6;break; case 6: x=0;break; } if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) { mday=31; } if(month==4||month==6||month==9||month==11) { mday=30; } if(month==2) { if(year%4==0&&year%100!=0||year%400==0) { mday=29; } else { mday=28; } } for(numbur=1;numbur<=mday;numbur++) { x++; printf(" %2d ",numbur); if(x%7==0) printf("\n"); } return 0;
}
知识点总结:
顺序结构
1 顺序结构需要注意的是语句需要赋值时要在合适的地方;
2 顺序结构思路要清晰,要让人容易理解;
循环结构
1 循环结构有多种如while,do while,for循环,不同情况下选择不同的结构;
2 当知道循环条件时用for循环
3 当需要用户多次输入时用while循环
选择结构
1 选择结构有if 和swich两个结构,swich需要把各种情况分别用一个语句列出
2 if语句要学会嵌套,思路要清晰
实验总结:
1 数据较小时没有必要定义为float型,定义为int型即可;
2 当用整除不能得到想要的结果时可以换个思路,比如换成相乘;
3 想要跳出循环时可以用continue跳出;
4 fflush语句是清除缓存的,system是清屏的,不要混淆,两个语句都是包含在<stdlib.h>库文件中