【题目内容】
某个文件中保存着为3年级小学生设计的算术题,要求所有题目运算数必须是100以内,并且结果不能是小数或负数,请检查所有题目是否符合要求,不符合要求题目请将其题号写在另一个文件中,并且附上原因。
【输入形式】
文本文件
【输出形式】
题目检查结果
【测试用例1】
输入:
(1) 3-4 (2) 5*4 (3) 3/2
输出:
(1) 结果为负数
(3) 结果为小数
完整的代码实现和注释如下,望采纳
#include <stdio.h>
#include <stdlib.h>
int main() {
// 打开输入文件
FILE *input_file = fopen("input.txt", "r");
if (input_file == NULL) {
printf("无法打开输入文件\n");
exit(1);
}
// 打开输出文件
FILE *output_file = fopen("output.txt", "w");
if (output_file == NULL) {
printf("无法打开输出文件\n");
exit(1);
}
// 循环读取输入文件中的每一行
char line[100];
int line_num = 0;
while (fgets(line, sizeof(line), input_file) != NULL) {
// 对于每一行,使用sscanf函数从字符串中读取两个整数和一个运算符
int num1, num2;
char operator;
sscanf(line, "%d %c %d", &num1, &operator, &num2);
// 计算表达式的结果
int result;
if (operator == '+')
result = num1 + num2; else if (operator == '-')
result = num1 - num2; else if (operator == '*')
result = num1 * num2; else if (operator == '/')
result = num1 / num2;
// 如果结果不合法,则将题号和原因写入输出文件
if (result < 0 || result > 100 || (operator == '/' && num2 == 0)) {
line_num++;
if (result < 0)
fprintf(output_file, "(%d) 结果为负数\n", line_num); else if (result > 100)
fprintf(output_file, "(%d) 结果超过100\n", line_num); else if (operator == '/' && num2 == 0)
fprintf(output_file, "(%d) 除数为0\n", line_num);
}
}
// 关闭文件
fclose(input_file);
fclose(output_file);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!