C语言给一个数组赋值完毕后,输出这个数组,哪里错了?

#include <stdio.h>
void main()
{
int i,a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
printf("%d",a[10]);
}
我是初学者,说得通俗点,要不我不懂。

你运行的时候应该是报“内存不能为读”之类的溢出错误,在Linux系统上提示为“段错误”,代码应该改为下面的样子:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int a[10];
int i;
for(i = 0; i < 10; ++i)
{
scanf("%d",&a[i]);
}
for(i = 0; i < 10; ++i)
{
printf("%d ",a[i]);
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-02-19
printf("%d",a[10]);
这样数组越界了,即使不越界,也只输出了一个而已
for i=0; i<10; i++
printf ("%d",a[i])
第2个回答  2011-02-19
你定义的数组a[10]是从a[0]到a[9]而之后输出a[10]就溢出越界了,所以不对

求助,c语言新手,我想给数组挨个赋值然后输出,为什么出错了?
你的reserve函数错了,你给这个函数定义的形参,有数组(iArray[ ])和整型(iCount)但是你在main函数中却没有给它传递这个参数进去。你的意思应该是把所有数组的reserve写在那个函数里,你应该这么写。include <cstdio>void ReverseArray(){ int iCount; printf("请输入数据个数:"); scanf(...

C语言,一维数组已经赋值,然后再赋值的话,为什么就报错了呢?附图如下...
你第一次赋值就不对,这种赋值方式只能在声明初始化时,不能这样,数组是不能整体赋值的。int a[3]={1,2,3};这样是可以的,而像你那样不对。下面的for循环才是正确的赋值方式。

C语言,数组输入遇到问题求大神指教:哪里错了,如何改正,为什么会出现...
scanf的格式加'\\n',含义特殊,不是输入一个回车,而是输入完一个数字后,必须等待一个非空格、制表符、回车的输入,程序才会继续。所以你那样写,第一次循环输入2回车,不会进入下一次循环,而是等待再次输入,然后你输入3的时候2被存储在元素1中,进入下一个循环,已经有3了还要等待输入,于是你输入...

C语言输入一个数组后将数组里的数相加,为什么输出结果不对?_百度知 ...
程序当中一共有三个错误。第一,定义的浮点数变量sum没有初始值,应该在定义的时候给他赋初始值为0。第二,循环体没有加花括号,导致只有读入语句是执行循环的,而下面的累加到sum的语句则要到循环结束以后才执行一次,起不到累加的作用。第三,格式化输入语句scanf在给float类型输入时是不能指定小数...

...一次输入一个数,一直全部输完。程序如下,哪里错了
c++输出格式 一:标准输入函数cin 不知道说它是个函数对还是不对,它是代表标准的输入设备--键盘。他是属于流的,他的用法和流的用法是一样的。也就是:cin>>变量;小小的说明一下,输入多个变量可以写在一行,如:cin>>x>>y>>z;这样写不是不允许,而是不好看,如果是不同的变量类型,那就更是...

c语言我把一个数组赋值给另外一个数组这样做为什么错了?
数组相当于常量指针,不能用赋值改变的。正确做法如下:include<stdio.h> int main(){int *b;\/\/此处改为普通指针即可 int i;int items[6]={32,11,21,32,43,3};b=items;for(i=0;i<6;i++)printf("%4d",b[i]);}

c语言我把一个数组赋值给另外一个数组这样做为什么错了?
数组相当于常量指针,不能用赋值改变的。正确做法如下:include<stdio.h> int main(){int *b;\/\/此处改为普通指针即可 int i;int items[6]={32,11,21,32,43,3};b=items;for(i=0;i<6;i++)printf("%4d",b[i]);}

c语言字符数组赋值,这个为什么是错的:char s[10]; s="abcde"?
那么char s[10],将会分配内存,大小为10字节,假设分配的内存地址为a1,此时s就代表数组的首地址,所以s=a1;现在看第二个语句s="abcde","abcde"也会在内存中分配空间,假设地址为a2,那么执行s="abcde"后就变成了s=a2,那岂不是和之前s=a1冲突?所以C语言是不允许这样的赋值的。

C语言数组题哪个对那个错?
B是错的。如果赋给的数据个数比定义的数组元素多,就会造成越界错误,篡改掉相邻的数据块内容。C是对的。数组的名称符号,其含义相当于一个指针,指向数组在内存中的首址。D是对的。传递数组给函数后,也就相当于把这个指针给函数了,一旦函数内按照数组名进行操作,就会直接修改数组在内存中的实际内容...

C语言设定一个数组,从键盘给数组赋值。然后判断输入数的个数,如果小于...
int main(){ float a[4],s,area;int i;char ss[80];do { while(1){ printf("input side lengths a b c:\\n");gets(ss);i = sscanf(ss,"%f %f %f %f",&a[0],&a[1],&a[2],&a[3]);if (i==3 && a[0]>0 && a[1]>0 && a[2]>0) break;if (i<3) printf(...

相似回答