输出 出现一组奇怪的值怎么来的?

来源:百度知道 编辑:UC知道 时间:2024/05/15 17:59:06
int main(int argc, char* argv[])
{
//数组a中有10个元素,求a中各相邻两个元素的和
//并存于数组b中并按3个一行输出
//例如输入1 2 3 4 5 6 7 8 9 0输出 1+2 3+4 5+6 7+8 9+0

int i=0,arr[10]; //定义变量
int brr[10]; //定义整型数组

for(i=0;i<10;i++)//给数组赋值
{
scanf("%d",&arr[i]);
}
for(i=0;i<10;i=i+2)//计算相邻元素的和
{
brr[i]=arr[i]+arr[i+1];
}
for(i=0;i<10;i++)//对数组brr进行输出
{
printf("%d\t",brr[i]);
if(i%3==0)//每行输出三个数后输出换行符
printf("\n");

}
}

输出结果是对的,但是中间夹杂着几个错误的数字 -858993460

怎么改正?
回1楼: 改为long还是不对 ,在答案中,夹杂好几个 -858993460

回2楼: 因为夹杂着-858993460 所以如果是5输出5个答案是(3 ,乱 ,7 ,乱,11),改成10是因为能出5个正解夹杂乱码(3 ,乱 ,7 ,乱,11,乱,15,乱,9).

回3楼:输出正确,请问为什么要 *2 呢?

#include <stdio.h>
int main(int argc, char* argv[])
{
//数组a中有10个元素,求a中各相邻两个元素的和
//并存于数组b中并按3个一行输出
//例如输入1 2 3 4 5 6 7 8 9 0输出 1+2 3+4 5+6 7+8 9+0

int i=0,arr[10]={1,2,3,4,5,6,7,8,9,0}; //定义变量
int brr[5]; //定义整型数组

for(i=0;i<5;i++)//计算相邻元素的和
{

brr[i]=arr[i*2]+arr[i*2+1];
}
for(i=0;i<5;i++)//对数组brr进行输出
{
printf("%d\t",brr[i]);
if(i%2==0)//每行输出三个数后输出换行符
printf("\n");

}
}

for(i=0;i<10;i=i+2)//对数组brr进行输出
{
printf("%d\t",brr[i]);
if(i%3==0)//每行输出三个数后输出换行符
printf("\n");

}

别忘了,源数组是10个数,求a中各相邻两个元素的和,算出来的结果可是5个数
并且你把5个数存在了brr数组的0 2 4 6 8的位置上
但是你输出的时候却是1,3,5,7,9位置也输出了,而你有没有初始化brr数组,所以
1,3,5,7,9的位置上没有赋值,就会出现奇怪的数字

程序确实没有问题,如果中间夹杂几个错误的数字,表示你的输入的数字超过int型范围,将int型改为long型即可

long i,arr[10];
long brr[10];