写一个计算从一月一日到指定日期的天数的C语言程序,数据需要从一个叫“DAYS.DAT"的文件中读取,此文件第一行为要计算的日期的天数剩余的每一行第一个数为月份,第二个数为日期,将计算结果输出到另一个名为“DAYS.OUT"的文件中
时间: 2023-05-27 11:07:58 浏览: 72
由于数据需要从文件中读取和输出,我们需要使用文件操作函数。具体实现如下:
```c
#include <stdio.h>
int main()
{
FILE *input_file, *output_file;
int target_month, target_day;
int month, day;
int days = 0;
// 打开输入文件
input_file = fopen("DAYS.DAT", "r");
if (input_file == NULL)
{
printf("Error: cannot open input file.\n");
return 1;
}
// 读取目标日期
fscanf(input_file, "%d %d", &target_month, &target_day);
// 逐行读取数据并计算天数
while (fscanf(input_file, "%d %d", &month, &day) == 2)
{
// 如果是目标日期,停止计算
if (month == target_month && day == target_day)
break;
// 根据月份计算当月天数并累加
switch (month)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
days += 31;
break;
case 4: case 6: case 9: case 11:
days += 30;
break;
case 2:
// 判断是否为闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
days += 29;
else
days += 28;
break;
default:
printf("Error: invalid month.\n");
return 1;
}
// 累加当月天数
days += day;
}
// 关闭输入文件
fclose(input_file);
// 打开输出文件
output_file = fopen("DAYS.OUT", "w");
if (output_file == NULL)
{
printf("Error: cannot open output file.\n");
return 1;
}
// 输出结果到输出文件
fprintf(output_file, "%d\n", days);
// 关闭输出文件
fclose(output_file);
return 0;
}
```
在上面的代码中,我们首先打开输入文件并读取目标日期,然后逐行读取数据(月份和日期),并根据月份计算当月天数并累加。如果读取到的日期是目标日期,则停止计算。最后,我们打开输出文件并将计算结果输出到文件中。
阅读全文