6-5 批量求和(*) 分数 20 作者 李祥 单位 湖北经济学院 请编写函数,从一个文件中读取实数求和,并将结果写入另一个文件。 函数原型 void BatchAdd(FILE *in, FILE *out); 说明:参数 in 和 out 为指示两个文件的指针。函数从 in 所指文件中的读出数据,将结果写入 out 所指的文件中。 要求:in 所指文件中有很多行,每行包含两个实数,以空格间隔。函数求出这两个实数的和,写入 out 文件中,每行一个结果。 要求:输出结果保留 2 位小数。 裁判程序 #include <stdio.h> #include <stdlib.h> void BatchAdd(FILE *in, FILE *out); int main() { FILE *in, *out; in = fopen("Addition.txt", "r"); out = fopen("Sum.txt", "w"); if (in && out) { BatchAdd(in, out); } else { puts("文件无法打开!"); } if (in) { fclose(in); } if (out) { fclose(out); puts("文件保存成功!"); } return 0; } /* 你提交的代码将被嵌在这里 */ 在程序所在文件夹中创建文本文件“Addition.txt”,复制下面的内容: Addition.txt 25.9 8.7 120.9 87.518 12.8 65.2 输入样例 (无) 输出样例 文件保存成功! 程序运行结束后,打开“Sum.txt”文件,查看文件内容。 34.60 208.42 78.00 代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB
时间: 2024-03-19 16:40:25 浏览: 11
void BatchAdd(FILE *in, FILE *out)
{
double a, b;
while (fscanf(in, "%lf %lf", &a, &b) == 2) //读取两个实数
{
fprintf(out, "%.2lf\n", a + b); //写入它们的和
}
}
相关问题
6-1 判断日期 分数 20 作者 李祥 单位 湖北经济学院 请编写函数,判断日期是否有效。 函数原型 int IsValidDate(int year, int month, int day);
好的,根据您的要求,我为您编写了如下的函数,用于判断给定的日期是否合法:
```
int IsValidDate(int year, int month, int day) {
if (year < 1 || month < 1 || month > 12 || day < 1) {
return 0;
}
int max_day = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
max_day = 30;
} else if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
max_day = 29;
} else {
max_day = 28;
}
}
return day <= max_day;
}
```
这个函数接受三个参数:年份、月份和日期,返回一个整数值,如果日期是合法的,则返回1,否则返回0。
该函数的实现思路如下:
首先,如果年份、月份或日期中有任何一个小于1,则该日期无效,直接返回0。
其次,根据每个月的天数以及闰年的情况,计算该月最大的天数。对于4、6、9、11月,最大天数为30;对于2月,如果是闰年,则最大天数为29,否则为28;其余月份最大天数为31。
最后,比较给定的日期是否小于等于该月最大天数,如果是,则该日期有效,返回1,否则返回0。
希望这个函数能够满足您的需求!
-7 串逆置* 分数 10 作者 李祥 单位 湖北经济学院 请编写函数,将字符串逆置。 函数原型 char* StrReverse(char *str); 说明:str 为字符串起始地址。函数将字符串内容逆置,函数值为 str。 裁判程序 #include <stdio.h> void ChrSwap(char *x, char *y); char* StrReverse(char *str); int main() { char a[128]; gets(a); StrReverse(a); puts(a); return 0; } ...... /* 你的代码将被嵌在这里 */ 说明:ChrSwap 函数用于交换两个字符。
实现字符串逆置的代码如下:
```
void ChrSwap(char *x, char *y) {
char temp = *x;
*x = *y;
*y = temp;
}
char* StrReverse(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
ChrSwap(&str[i], &str[len - i - 1]);
}
return str;
}
```
在主函数中,先读入字符串,然后调用 StrReverse 函数逆置字符串,最后输出结果即可。注意,使用 gets 函数存在安全风险,建议使用 fgets 函数代替。
完整的程序如下:
```
#include <stdio.h>
#include <string.h>
void ChrSwap(char *x, char *y) {
char temp = *x;
*x = *y;
*y = temp;
}
char* StrReverse(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
ChrSwap(&str[i], &str[len - i - 1]);
}
return str;
}
int main() {
char a[128];
fgets(a, 128, stdin);
StrReverse(a);
puts(a);
return 0;
}
```