
比如这个,需要读入两个数组,我用了do while也没有结束循环,要是结束了循环的话恐怕在第一个数组就结束了。我是初学者自学的,



关注引自免费微信小程序:皆我百晓生
为了帮您解决这个问题,我将首先分析您的代码,然后提供修改后的版本。您的代码有一个逻辑错误,即在do...while循环中使用了scanf()函数,这导致当用户输入0时,程序并没有正确地跳出循环。
下面是修改后的代码,使用两个嵌套的for循环,分别处理两个多项式,并添加了一个额外的条件来检查是否已经读取到0次幂(即输入结束)。这样,当读取到两个0次幂后,程序会自动退出。
#include <stdio.h>
#define SIZE 20
int main() {
int x, y;
int xishu1[SIZE], mi1[SIZE];
int xishu2[SIZE], mi2[SIZE];
// 读入第一个多项式
for (int i = 0; i < SIZE; ++i) {
scanf("%d%d", &x, &y);
if (x == 0 && y == 0) break;
mi1[i] = x;
xishu1[i] = y;
}
// 检查是否已读取到两个0次幂
if (i >= SIZE - 1) {
printf("Invalid input: too many non-zero terms.\n");
return 1;
}
// 读入第二个多项式
for (int j = i; j < SIZE; ++j) {
scanf("%d%d", &x, &y);
if (x == 0 && y == 0) break;
mi2[j] = x;
xishu2[j] = y;
}
// 检查是否已读取到两个0次幂
if (j >= SIZE - 1) {
printf("Invalid input: too many non-zero terms.\n");
return 1;
}
// 计算和并输出结果
printf("Result:\n");
for (int k = 0; k <= i; ++k) {
if (xishu1[k] + xishu2[k] != 0) {
printf("%dx^%d", xishu1[k] + xishu2[k], mi1[k]);
if (k < i) printf("+");
}
}
printf("\n");
return 0;
}
这段代码应该能解决您的问题。当用户输入两个多项式后,它会计算它们的和并按照题目要求的格式输出结果。如果输入的多项式超出规定的幕次数(即超过100),程序会提示"Invalid input: too many non-zero terms."。