供参考:
#include <stdio.h>
#include <ctype.h>
int Check(char *a)
{
int s = 0, i;
for (i = 0; a[i]; i++){
if (isdigit(a[i]))
s = s * 10 + a[i] - '0';
else
return -1;
}
if (s >= 1 && s <= 1000)
return s;
else
return -1;
}
int main()
{
char a[128], b[128];
int A , B;
scanf("%s %[^\n]", a, b);
A = Check(a);
B = Check(b);
if (A == -1)
printf("? + ");
else
printf("%d + ", A);
if (B == -1)
printf("? = ");
else
printf("%d = ", B);
if (A == -1 || B == -1)
printf("?");
else
printf("%d", A + B);
return 0;
}
【以下回答由 GPT 生成】
代码问题: 1. 第8行的代码 int matrix[n][m];
使用的是变量 n 和 m,这是不允许的,因为在 C 语言中,必须使用常量来声明数组的大小。 2. 第13行的代码 scanf("%d", matrix[i][j]);
中,&
操作符缺失,应该写成 scanf("%d", &matrix[i][j]);
。 3. 第19行的代码中,应该在数字和空格之间加一个空格,即 printf("%d ", matrix[i][j]);
。
解决方案如下:
#include <stdio.h>
#define MAX_ROW 100
#define MAX_COL 100
int main() {
int n, m;
scanf("%d %d", &n, &m);
int matrix[MAX_ROW][MAX_COL];
// 读取矩阵数据
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 输出矩阵数据
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
这样修改后的代码应该能够解决你的问题。如果还有其他的问题,请随时提问。
【相关推荐】