一、实验内容
1.有一个四位正整数,组成这个四位数的四个数字各不相同,如果把它们的首尾互换,第二位与第三位互换,组成一个新的四位数。原四位数为新四位数的4倍,请找出一个这样的四位数。
#include <stdio.h>
int main()
{
int a,b,c,d,num,sum;
printf("输入一个四位整数
");
for(num=1000;num<=9999;num++)
{
a=num/1000;
b=num/100%10;
c=num/10%10;
d=num%10;
sum=1000*d+100*c+10*b+a;
if(num==4*sum&&a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d)
{
printf(" %4d",num);
}
} return 0;
}

2.输入任意一个多位的数字,求各位数字之和。如果在【1,12】之内,则输出与和数字对应的月份的英文名称,否则输出***。
样例: 输入123, 输出 6 June
输入12345,输出 15 ***
#include <stdio.h>
int main()
{
int a,b,sum=0;
printf("输入一个多位数
");
scanf("%d",&a);
while(a>0)
{
b=a%10;
a=a/10;
sum=sum+b;
}
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("octomber
");
}
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,i,x,y,z,n=0,num;
printf("输入一个不超过6的整数
");
scanf("%d",&A);
i=A+4;
for(x=A;x<i;x++)
for(y=A;y<i;y++)
for(z=A;z<i;z++)
{
if(x!=y&&x!=z&&y!=z)
{
num=100*x+10*y+z;
printf(" %d",num);
n++;
if(n%6==0)
{
printf("
");
}
}
}
return 0;
}

4.万年历
#include<stdio.h>
int main()
{
int year,month,day,i,a,days=0,date;
scanf("%d%d",&year,&month);
a=1900,i=0;
while(a<year)
{
if((a%4==0&&a%100!=0)||(a%400==0))
i+=1;
a++;
}
if((year%4==0&&year%100!=0)||(year%400==0))
{
switch(month)
{
case 1:day=31;break;
case 2:days=31;day=29;break;
case 3:days=31+29;day=31;break;
case 4:days=31+29+31;day=30;break;
case 5:days=31+29+31+30;day=31;break;
case 6:days=31+29+31+30+31;day=30;break;
case 7:days=31+29+31+30+31+30;day=31;break;
case 8:days=31+29+31+30+31+30+31;day=31;break;
case 9:days=31+29+31+30+31+30+31+31;day=30;break;
case 10:days=31+29+31+30+31+30+31+31+30;day=31;break;
case 11:days=31+29+31+30+31+30+31+31+30+31;day=30;break;
case 12:days=31+29+31+30+31+30+31+31+30+31+30;day=31;break;
}
}
else
{
switch(month)
{
case 1:day=31;break;
case 2:days=31;day=28;break;
case 3:days=31+28;day=31;break;
case 4:days=31+28+31;day=30;break;
case 5:days=31+28+31+30;day=31;break;
case 6:days=31+28+31+30+31;day=30;break;
case 7:days=31+28+31+30+31+30;day=31;break;
case 8:days=31+28+31+30+31+30+31;day=31;break;
case 9:days=31+28+31+30+31+30+31+31;day=30;break;
case 10:days=31+28+31+30+31+30+31+31+30;day=31;break;
case 11:days=31+28+31+30+31+30+31+31+30+31;day=30;break;
case 12:days=31+28+31+30+31+30+31+31+30+31+30;day=31;break;
}
}
days=(year-1900-i)*365+i*366+days;
date=(days+1)%7;
printf("%d
",date);
printf("星期日 星期一 星期二 星期三 星期四 星期五 星期六
");
for(i=0;i<date;i++)
{
printf(" ");
}
for(i=1;i<=day;i++)
{
printf("%d ",i);
if((i+date)%7==0)
{
printf("
");
}
}
return 0;
}

二.实验总结:
1.顺序结构
(1)标识符由字母,数字,下划线组成
(2)“=”与“==”的区别
(3)变量先声明后使用
2.选择结构
(1)if else语句
(2)数学函数#include <math.h>
包括:绝对值函数和平方根函数分别用double fabs和double sqrt
(3)在if和else后面总要用到{}
3.循环结构
(1)for语句 while语句 do~while语句
(2)一行语句中一个变量只出现增,减运算符
(3)无限循环中,通过在循环体中加break语句对循环控制
三.作业总结 对于第二题应该想好是对谁取余,谁除10,还有先后问题
万年历的题日期能计算出来但是表格输不出来