用C语言:输入格式,第一行为数值 i,接着的 i 行为需要输入的算式,每行可能有三个数据或两个数据。若该行为三个数据则第一个数据表示运算类型,a 表示加法运算,b 表示减法运算,c 表示乘法运算,接着的两个数据表示参加运算的运算数。若该行为两个数据,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。输出格式,输出2×i 行。对于每个输入的算式,输出完整的运算式及结果,第二行输出该运算式的总长度
时间: 2024-03-22 20:40:10 浏览: 54
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
int i, j, k, len, op_type = 0;
double num1, num2, result;
char op, expr[100];
scanf("%d", &i);
for (j = 0; j < i; j++) {
scanf("%lf %lf", &num1, &num2);
if (j != 0) {
op = op_type == 1 ? '+' : (op_type == 2 ? '-' : '*');
sprintf(expr, "%.2lf %c %.2lf = ", num1, op, num2);
} else {
sprintf(expr, "%.2lf", num1);
}
if (scanf(" %c", &op) == 1) {
op_type = (op == 'a') ? 1 : ((op == 'b') ? 2 : 3);
if (op_type == 1) {
result = num1 + num2;
} else if (op_type == 2) {
result = num1 - num2;
} else {
result = num1 * num2;
}
sprintf(expr + strlen(expr), "%.2lf\n", num2);
} else {
result = num1;
strcat(expr, "\n");
}
len = strlen(expr);
printf("%s%d\n", expr, len);
printf("%.2lf\n", result);
}
return 0;
}
```
程序的思路是先读入需要计算的算式的个数 i,然后进行 i 次循环,每次读入一个算式。在读入算式时,根据上一个算式的运算类型以及当前算式的数据个数来判断本次的运算类型,然后进行相应的计算,计算结果保存在 result 变量中,并将完整的运算式及其结果输出。
注意,为了方便计算字符串长度,我们在输出完整的运算式时还会输出其长度,这个长度包括了运算式及其结果的长度。
程序中用到了 sprintf 函数和 strcat 函数,它们可以帮助我们将字符串拼接起来。另外,我们在读入运算符时使用了 scanf 函数的返回值来判断是否成功读入了一个字符。
阅读全文