我正在读取两个数字数组及其长度,并试图找到每个数组的总和。
我认为一个是正确的,但对于其他部分,我不知道发生了什么?有人可以看看它并帮助我吗?
int m, n, snum, i, smun;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++) {
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
对于此代码,我可以有效地获取 smun ,但 snum 总是错误的? 即
for input:
5
-2 -1 0 1 2
6
-3 -2 -1 1 2 3
my out put is: 0 -291502240
答案 0 :(得分:5)
您需要将sum变量初始化为某个值。
int m,n,snum,i,smun;
snum=0;
smun=0;
scanf("%d",&m);
int num[m];
for (i=0;i<m;i++){
scanf("%d",&num[i]);
snum+=num[i];
}
scanf("%d",&n);
int mun[n];
for (i=0;i<n;i++) {
scanf("%d",&mun[i]);
smun+=mun[i];
}
printf("%d %d ",smun,snum);
当为变量分配地址时,它会获取该特定地址的数据,我们将其视为垃圾或垃圾值。第一个输出是正确的,因为你很幸运,地址中的值也是零。
答案 1 :(得分:2)
因为你做了很多未定义的行为
int m,n,snum,i,smun;
然后累积到 snum ,其中未初始化
snum+=num[i];
做类似
的事情int m = 0;
int n = 0;
int snum = 0;
int i = 0;
int smun= 0;
将提供正确的初始化和结果
答案 2 :(得分:2)
你没有初始化snum和smun,它应该先snum = 0; smun = 0;
然后操纵总和。