这是我写的C语言代码,vs里输出总是有问题:#include <stdio.h> #include <string.h> int main() { char a; int n, c, d; char s[100], b[10]; scanf_s("%d", &n); getchar(); for (int i = 0; i < n; i++) { fgets(b, 12, stdin); if (b[0] >= 'a' && b[0] <= 'z') { a = b[0]; scanf_s("%d%d", &c, &d); } else { sscanf_s(b, "%d", &c); scanf_s("%d", &d); } memset(s, 0, sizeof(s)); if (a == 'a') sprintf_s(s, "%d+%d=%d", c, d, c + d); else if (a == 'b') sprintf_s(s, "%d-%d=%d", c, d, c - d); else if (a == 'c') sprintf_s(s, "%d*%d=%d", c, d, c * d); printf("%s\n%d\n", s, strlen(s)); } return 0; }
时间: 2024-03-23 18:42:11 浏览: 58
你好,根据你提供的代码,我发现代码中有几个问题:
1. `fgets(b, 12, stdin)` 中的 12 应该改成 10,因为 `b` 只有 10 个字符的空间,最后一个字符应该留给 `\0`。
2. 在输入 `c` 和 `d` 时,应该使用 `scanf_s("%d %d", &c, &d)`,因为输入的数据可能包含空格。
3. 在输出结果时,应该用 `strlen(s) - 1`,因为 `fgets()` 会将输入的换行符 `\n` 也一同读入 `b` 中。
根据以上修改,这是更新后的代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a;
int n, c, d;
char s[100], b[10];
scanf_s("%d", &n);
getchar();
for (int i = 0; i < n; i++) {
fgets(b, 10, stdin);
if (b[0] >= 'a' && b[0] <= 'z') {
a = b[0];
scanf_s("%d %d", &c, &d);
}
else {
sscanf_s(b, "%d", &c);
scanf_s("%d", &d);
}
memset(s, 0, sizeof(s));
if (a == 'a')
sprintf_s(s, "%d+%d=%d", c, d, c + d);
else if (a == 'b')
sprintf_s(s, "%d-%d=%d", c, d, c - d);
else if (a == 'c')
sprintf_s(s, "%d*%d=%d", c, d, c * d);
printf("%s\n%d\n", s, strlen(s) - 1);
}
return 0;
}
```
希望这个修改能够解决你的问题。如果你还有任何疑问或需要进一步的帮助,请随时告诉我。
阅读全文