求c语言大神,我这个程序总是多出来一个-800809,求解释,下浮代码

[复制链接]
查看11 | 回复4 | 2012-12-20 16:49:08 | 显示全部楼层 |阅读模式
你的数组初始化问题。这是C语言的弊端,你只能主动去控制。在你定义了int a[11]的时候,编译器就会给你分配内存了。但只有三种情况之一编译器才会把数组里没有初始化的部分赋值为0(int),'\0'(char)1:这个数组是全局数组,就是写在mian()的外面。2:这个数组是静态数组,定义数组时在前面加个静态说明符 start (比如:start int a[11];)3:这个数组在定义时,就初始化了一部分数据(比如:int a[11]={1,2};)如果不是这三种:那么数组里的数据就是随机值(数值数组),甚至乱码(字符数组)。所以:C语言的灵活性强,这就需要程序员的控制能力了。不过也因此,c语言才这么强大。(比如:你上...
回复

使用道具 举报

千问 | 2012-12-20 16:49:08 | 显示全部楼层
给你修改了一下: #include void main(){ int a[11]; int i,j,t,num; printf("输入十个学生的成绩:\n"); for(i=0;i<10;i++)scanf("%d",&a); for(j=0;j<9;j++)for(i=j+1;i<...
回复

使用道具 举报

千问 | 2012-12-20 16:49:08 | 显示全部楼层
看了下代码以后 if和 for在使用的时候多注意用花括号括住该执行的代码 上面代码用的很乱 多的数字应是“printf("%d\n",a);”造成的,数组刚开始没有初始化,导致 a[10] 里面的数据是内存中遗留的...
回复

使用道具 举报

千问 | 2012-12-20 16:49:08 | 显示全部楼层
你第一个for循环的scanf只接受了10个数,但是数组是11位的,结束循环后你的i值是10,你在printf(a[10]), 肯定是一个脏数据。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行