9、/10;
printf("%d %d %f",*max,*min,*ave);
}
这个题目需要利用函数调用,还要利用指针间接引使用方法,设计函数将最大、最小和平均值求出来。关键是函数调用。
选做题:
题目10 写一个日历显示程序
基础功效:
1).输入任十二个月将显示出该年全部月份日期,对应星期
2). 注意闰年情况
其显示格式要求以下:
1)月份:汉字英文全部能够,
2)下一行显示星期,从周日到周六,中英文全部能够
3)下一行开始显示日期从1号开始,并按其是周几实际情况和上面星期数垂直对齐
当输入显示以下:
Input t
10、he year:
Input the file name:a
The calendar of the year .
Januray 1 February 2
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 2 3 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13
11、 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29
=========================== ===========================
March 3 April 4
Sun Mon Tue Wed
12、 Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23
13、 24
28 29 30 31 25 26 27 28 29 30
=========================== ===========================
…
#include
int year(int p);
int riqi(int z);
int xinqi(int w,int l,int jj);
void dayin(int m,int n,int a[12],int b[12],char c[30]);
int main(voi
14、d)
{
int n,s;
int m,qq,xx;
printf("Input the year:");
scanf("%d",&n);
s=year(n);
int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
int b[12]={31,s,31,30,31,30,31,31,30,31,30,31};
//printf("%d",b[1]);
char c[]="sun mon tue wed thr fri sat";
printf("The cale
15、ndar of the year %d\n",n);
m=riqi(n);
//printf("%d\n",m);
dayin(m,n,a,b,c);
return 0;
}
//判定输入那十二个月是否是闰年
int year(int p)
{
if(p%4 != 0)
{
return 28;
}
if(p%4 == 0)
{
if(p%100 == 0)
{
if(p%400 == 0)
{
return 29;
}
return 28;
}
return 29;
}
}
//求输入那十二个月1月1日式星期几
16、
/*参考1997年1月1日*/
int riqi(int z)
{
int d;
int days=(z-1997)*365;
int i = (z- 1997)/4;
days=days+i*1;
/*1997年1月1日是星期三*/
d=days%7+1;
d=(d+2)%7;
if(d == 0)d = 7;
return d;
}
//从2月开始到12月每个月份1号是星期几
int xinqi(int w,int l,int jj)
{
int ss;
int qi;
int b[12]={31,28,31,30,31,30,
17、31,31,30,31,30,31};
ss=year(l);
b[1]=ss;
qi=(b[jj-1]%7+(w-1)+1)%7;
return qi;
}
void dayin(int m,int n,int a[12],int b[12],char c[30])
{
int i,r,v,xx,j,qq;
for(i=0;i<12;i++)
{
printf("%d\n",a[i]);
printf ("%s\n",c);
if(i==0){
18、 if(m==7)
m=0;
for(xx=0;xx<3*m+m*1;xx++)
{
printf(" ");
}
printf("1");
for(r=2;r<=7-m;r++){
printf("%4d",r);
}
printf("
19、\n");
}
else
{
qq=xinqi(m,n,i);
m=qq;
// printf("%d\\\\\\\\",m);
for(xx=0;xx<3*m+m*1;xx++)
{
printf(" ");
}
20、 printf("1");
for(r=2;r<=7-m;r++)
{
printf("%4d",r);
}
printf("\n");
}
for(j=r,v=1;j<=b[i];j++,v++)
{
printf("%-4d",j);
if(v%7==
21、0)
printf("\n"); }
printf("\n==========================");
printf("\n");
}
}
运行结果:
这个程序要求输入任意年能打印出该年一月到十二月日历表;所以需要年份,月份,日期;但如上程序是以19971月1日(星期三)为参考,所以只能查询1997年以后年份日历(包含1997年)。
步骤图:(以下)
主步骤图:
分层步骤图:
模块步骤图:
dayin:
22、
year:
xinqi:
工程代码:
1.main.c :
#include
#include"li.h"
int main(void)
{
int n,s;
int m,qq,xx;
printf("Input the year:");
scanf("%d",&n);
s=year(n);
int a[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
int b[12]={31,s,31,30,31,30,31,31,30,31,30,31};
23、
//printf("%d",b[1]);
char c[]="sun mon tue wed thr fri sat";
printf("The calendar of the year %d\n",n);
m=riqi(n);
//printf("%d\n",m);
dayin(m,n,a,b,c);
return 0;
}
2.ri.c:
//判定输入那十二个月是否是闰年
int year(int p)
{
if(p%4 != 0)
{
return 28;
}
if(p%4 == 0)
{
24、if(p%100 == 0)
{
if(p%400 == 0)
{
return 29;
}
return 28;
}
return 29;
}
}
//求输入那十二个月1月1日式星期几
/*参考1997年1月1日*/
int riqi(int z)
{
int d;
int days=(z-1997)*365;
int i = (z- 1997)/4;
days=days+i*1;
/*1997年1月1日是星期三*/
d=days%7+1;
d=(d+2)%7;
if(d == 0)d = 7;
return d;
}
//从2月开始到12月
25、每个月份1号是星期几
int xinqi(int w,int l,int jj)
{
int ss;
int qi;
int b[12]={31,28,31,30,31,30,31,31,30,31,30,31};
ss=year(l);
b[1]=ss;
qi=(b[jj-1]%7+(w-1)+1)%7;
return qi;
}
//打印日历
void dayin(int m,int n,int a[12],int b[12],char c[30])
{
int i,r,v,xx,j,qq;
26、 for(i=0;i<12;i++)
{
printf("%d\n",a[i]);
printf ("%s\n",c);
if(i==0){
if(m==7)
m=0;
for(xx=0;xx<3*m+m*1;xx++)
{
printf(" ");
}
printf("1");
27、 for(r=2;r<=7-m;r++){
printf("%4d",r);
}
printf("\n");
}
else
{
qq=xinqi(m,n,i);
m=qq;
// printf("%d\\\\\\\\",m);
for(xx=
28、0;xx<3*m+m*1;xx++)
{
printf(" ");
}
printf("1");
for(r=2;r<=7-m;r++)
{
printf("%4d",r);
}
printf("\n");
29、 }
for(j=r,v=1;j<=b[i];j++,v++)
{
printf("%-4d",j);
if(v%7==0)
printf("\n");
}
printf("\n==========================");
printf("\n");
}
}
3.li.h :
#ifndef LI_H
#define LI_H
int year(int p);
int riqi(int z);
int xinqi(int w,int l,int jj);
void dayin(int m,int n,int a[12],int b[12],char c[30]);
#endif
心得体会
编写一个程序之前首先要分析它,知道它功效,要做什么等等,怎样实现它,需要我们认真思索,分析。对于较复杂程序能够分模块把它逐一实现。编写程序过程中,我们需要耐心,细心,信心。