C语言上机考试试卷_日期差计算改错题.pdfVIP

  • 0
  • 0
  • 约2.76千字
  • 约 2页
  • 2026-03-09 发布于北京
  • 举报

C语言上机考试试卷_日期差计算改错题.pdf

江苏省高等学校非计算机专业学生

计算机基础知识和应用能力等级考试上机试卷(2009年秋)

二级C语言(试卷代号C01)

(本试卷完成时间70分钟)

一、改错题(16分)

【程序功能】

输入两个正确日期且年份在19009999范围内,计算并输出两个日期之间间隔的天数。

提示:能被4整除并且不能被100整除的年份是闰年,能被400整除的年份也是闰年,其

他年份则是平年。

【测试数据与运行结果】

显示:firstdate:

输入:1980-2-1

显示:seconddate:

输入:2009-8-1

输出:10774days

【含有错误的源程序】

#includestdio.h

#defineleap(inty)((y)%40(y)%100!=0||(y)%4000)

structd

{inty,m,d;};

intdays(structdd1,structdd2)

{intmon[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

inti;longtd=0;

for(i=d1.y;id2.y;i++)

tdleap(i)?366:365;

for(i=1;id1.m;i++)

td-=mon[leap(d1.y)][i];

td-=d1.d-1;

for(i=1;id2.m;i++)

td+mon[leap(d2.y)][i];

td+d2.d-1;

returntd;

}

voidmain()

{structd1,d2;

puts(\nfirstdate:);

scanf(%d-%d-%d,d1.y,d1.m,d1.d);

puts(\nseconddate:);

scanf(%d-%d-%d,d2.y,d2.m,d2.d);

printf(%ddays,days(d1.y,d2.y));

getch();

}

【要求】

1.将上述程序录入到文件myf1.c中,根据题目要求及程序中语句之间的逻辑关系对程序

中的错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译

预处理命令,但不能增加其它语句,也不能删去整条语句。

3.改正后的源程序(文件名myf1.c)保存在T:盘根目录中供阅卷使用,否则不予评分。

二、编程题(24分)

【程序功能】

输入两个自然数P和Q(PQ),找出满足下列条件的整数组(K,M,N)。

(1)P≤KM≤Q

(2)K*K+M*M=N*N

【编程要求】

1.编写函数intchlm(intp,intq,inta[][3])实现以下功能:查找K、M在[p,q]范围内取值且

满足以上条件的所有整数组(K,M,N)。若找到则将这些整数组保存到a指向的数组中,

函数返回找到的整数组的组数。若找不到则函数返回0。

2.编写函数main实现以下功能:二维数组a和变量p、q,输入两个自然数并保存到

p和q中(pq),

文档评论(0)

1亿VIP精品文档

相关文档