c++ 输出乱码!

来源:百度知道 编辑:UC知道 时间:2024/09/12 23:36:04
#include<iostream>
using namespace std;
int main()
{
int x[7];
cin>>x[7];
for(int i=1;i<=7;i++)
{
cout<<x[i]<<" ";
}
}
给他复制时是 1234567 它应该输出1 2 3 4 5 6 7吧!!!!为什么是乱码!

不知道你的程序是要干什么,只是数组的输入和输出都不对以下这个程序可以运行:
#include<iostream>
using namespace std;
int main()
{
int x[7];
for(int i=0;i<7;i++)
cin>>x[i];
for(i=0;i<=6;i++)
{
cout<<x[i]<<" ";
}
}

x[7]是经x[0]到x[6]
cin>>x[7]是错误的,数组越界了。我想你可能的意思是:

for(int i=1;i<7;i++)
{
cin >> x[i];
}

最后打印的时候:
for(int i=1;i<7;i++)
{
cout >> x[i] << " ";
}

1.初始化数组错误,即只初始化了一个元素,并且是非法访问的,数组越界,n维数组的下标应该是从0到n-1
2.由于你没有初始化这个数组,所以到最后又将其进行了输出,而且又是局部数组,所以编译器不会进行默认的初始化,由于没有初始化,所以数组元素引用的是不确定的值,所以就会有这样的乱吗出现了

cin>x[7]; 只是把值赋给了这个变量 而你前面的没有赋值所以前面的全是内存中的随机数值。
比如你输入123 回车将在最后会输出123

你没正确初始化数组的值,它输出的只是内存里面已经存在的随机值

cin>>x[7];

这一句只是给x[7]赋值,而且这还是个非法的赋值,数组x的下标范围是0~6,x[7]已经越界了。

应该这样:

#include<iostream>
using namespace std;
int main()