新手帮我看下这代码错在哪

幽灵Killer 2014-03-18 07:44:00
#include<iostream.h>
#include<stdlib.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<a[10]<<endl;
system("pause");


}
我定义数组为什么输出来的结果是?怎么回事?
...全文
166 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-03-19
  • 打赏
  • 举报
回复
其实电脑开机后物理内存的每个字节都是可读写的,区别仅在于操作系统内存管理模块在你读写时是否能发现并是否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
幽灵Killer 2014-03-18
  • 打赏
  • 举报
回复
引用 8 楼 hjl0508 的回复:
[quote=引用 5 楼 u014197691 的回复:] [quote=引用 4 楼 hjl0508 的回复:] 数组的下标是从0开始的,所以a[10]是数组外的数,这个就没准是啥了,而且不知道你这段程序是想要实现什么效果,如果要输出第十个数的话,把a[10]改成a[9]就行了,如果你想依次输出数组里的十个数的话,要用到循环

for(int i=0;i<10;i++)
{
       cout<<a[i]<<endl;
}
我是想一、定义一个10个元素的数组,并给它赋值。 然后、找出上述数组中的最大值,并找出下标。如果用你就不知道怎么做了。。。。。真心不懂。。。[/quote]

#include<iostream>
using namespace std;
#define N 10
int searchmax(int s[],int n,int &a)
{
	a=1;
	int max=s[0];
	for(int i=1;i<n;i++)
	{
		if(s[i]>max)
		{
			max=s[i];
			a=i+1;
		}
	}
	return max;
}

int main()
{
	int a[N],x,max;
	cout<<"Input "<<N<<" numbers:"<<endl;
	for(int i=0;i<N;i++)
	{
		cout<<"Input the "<<i+1<<" number:";
			cin>>a[i];
	}
	cout<<endl;
	max=searchmax(a,N,x);
	cout<<"The max number is:"<<max<<endl;
	cout<<"The position is:"<<x<<endl;
	system("pause");
}
看看这个,试一下。[/quote] 嗯,谢了,我理解下代码
derekrose 2014-03-18
  • 打赏
  • 举报
回复
教科书般的越位
hjl0508 2014-03-18
  • 打赏
  • 举报
回复
引用 5 楼 u014197691 的回复:
[quote=引用 4 楼 hjl0508 的回复:] 数组的下标是从0开始的,所以a[10]是数组外的数,这个就没准是啥了,而且不知道你这段程序是想要实现什么效果,如果要输出第十个数的话,把a[10]改成a[9]就行了,如果你想依次输出数组里的十个数的话,要用到循环

for(int i=0;i<10;i++)
{
       cout<<a[i]<<endl;
}
我是想一、定义一个10个元素的数组,并给它赋值。 然后、找出上述数组中的最大值,并找出下标。如果用你就不知道怎么做了。。。。。真心不懂。。。[/quote]

#include<iostream>
using namespace std;
#define N 10
int searchmax(int s[],int n,int &a)
{
	a=1;
	int max=s[0];
	for(int i=1;i<n;i++)
	{
		if(s[i]>max)
		{
			max=s[i];
			a=i+1;
		}
	}
	return max;
}

int main()
{
	int a[N],x,max;
	cout<<"Input "<<N<<" numbers:"<<endl;
	for(int i=0;i<N;i++)
	{
		cout<<"Input the "<<i+1<<" number:";
			cin>>a[i];
	}
	cout<<endl;
	max=searchmax(a,N,x);
	cout<<"The max number is:"<<max<<endl;
	cout<<"The position is:"<<x<<endl;
	system("pause");
}
看看这个,试一下。
buyong 2014-03-18
  • 打赏
  • 举报
回复
std::sort
buyong 2014-03-18
  • 打赏
  • 举报
回复
引用 5 楼 u014197691 的回复:
[quote=引用 4 楼 hjl0508 的回复:] 数组的下标是从0开始的,所以a[10]是数组外的数,这个就没准是啥了,而且不知道你这段程序是想要实现什么效果,如果要输出第十个数的话,把a[10]改成a[9]就行了,如果你想依次输出数组里的十个数的话,要用到循环

for(int i=0;i<10;i++)
{
       cout<<a[i]<<endl;
}
我是想一、定义一个10个元素的数组,并给它赋值。 然后、找出上述数组中的最大值,并找出下标。如果用你就不知道怎么做了。。。。。真心不懂。。。[/quote] std::max
幽灵Killer 2014-03-18
  • 打赏
  • 举报
回复
引用 4 楼 hjl0508 的回复:
数组的下标是从0开始的,所以a[10]是数组外的数,这个就没准是啥了,而且不知道你这段程序是想要实现什么效果,如果要输出第十个数的话,把a[10]改成a[9]就行了,如果你想依次输出数组里的十个数的话,要用到循环

for(int i=0;i<10;i++)
{
       cout<<a[i]<<endl;
}
我是想一、定义一个10个元素的数组,并给它赋值。 然后、找出上述数组中的最大值,并找出下标。如果用你就不知道怎么做了。。。。。真心不懂。。。
hjl0508 2014-03-18
  • 打赏
  • 举报
回复
数组的下标是从0开始的,所以a[10]是数组外的数,这个就没准是啥了,而且不知道你这段程序是想要实现什么效果,如果要输出第十个数的话,把a[10]改成a[9]就行了,如果你想依次输出数组里的十个数的话,要用到循环

for(int i=0;i<10;i++)
{
       cout<<a[i]<<endl;
}
百曉生 2014-03-18
  • 打赏
  • 举报
回复
楼上正解,建议lz先好好看看数组的用法吧!可以看看这个——http://blog.csdn.net/u012421456/article/details/18938553 也可以自己去查一些
芹菜木头 2014-03-18
  • 打赏
  • 举报
回复
大神哥,头文件没有.h stdio.h是标C的风格,在C++中需要使用标准C库中的头文件时,在前面加上c即可,如 #include <cstdio> ,你定义了int 数组,10个元素,你如果要打印数组,需要循环打印,a[10] 表示的是数组中第11个元素,你只定义了一个10*4字节的内存空间,所以a[10] 不属于你定义的数组,所以打印是一个 未知的 数字
点不亮的黑色 2014-03-18
  • 打赏
  • 举报
回复
额,你不知道数组的下标是从 0 开始的么?你该去看看数组是如何定义的了。第十位也就是a[9],而不是a[10]。像你那样只能得到一个未知的随机数。。。

65,208

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧