对两个数组逐元素相加时,程序要求输入过多数字的问题排查
问题分析与修复方案
问题1:输入次数远超预期
你的代码用了三重嵌套循环,外层循环执行n次,每输入一个num1[i],中间循环就会执行n次来输入num2[j]。这意味着num2数组会被重复输入n遍,总输入数字量变成了1(n的输入) + n + n²,远远超过你需要的1 + 2n个数字,所以程序会一直要求输入。
问题2:数组相加逻辑完全错误
当前代码里,每次内层循环会把num3的所有元素都赋值为num1[i] + num2[j],最后num3的所有元素都会被最后一次循环的num1[n-1] + num2[n-1]覆盖,根本没实现对应索引元素相加的需求。
修复后的代码
#include<stdio.h> int main(){ int n; scanf("%d",&n); int num1[n],num2[n],num3[n]; // 输入第一个数组的n个元素 for(int i = 0;i<n;i++){ scanf("%d",&num1[i]); } // 输入第二个数组的n个元素 for(int i = 0;i<n;i++){ scanf("%d",&num2[i]); } // 对应索引相加存入第三个数组 for(int i = 0;i<n;i++){ num3[i] = num1[i] + num2[i]; } // 输出结果 for (int l = 0; l < n; l++) printf("%d ",num3[l]); printf("\n"); return 0; }
代码说明
- 拆分三个独立循环:分别输入两个数组,再执行对应索引相加,逻辑清晰且符合需求。
- 总输入数字量为
1 + 2n,和预期一致,不会出现无限要求输入的情况。 - 正确实现了
num3[i] = num1[i] + num2[i]的对应索引相加逻辑。
内容的提问来源于stack exchange,提问作者Tanvir Anjum
相关产品推荐
相关产品推荐

