读书人

c语言小疑点。

发布时间: 2012-05-11 12:55:37 作者: rapoo

c语言小问题。。。。
#include<stdio.h>

3 int main()
4 {
5 int i, a[10], oddNum;
6 oddNum = 0;
7 i = 1;
8 for( i = 0; i<= 10; i++){
9 scanf("%d", &a[i]);
10 if(a[i] % 2 == 1 )
11 oddNum = oddNum + 1;
12 }
13 printf("The number of odd is %d", oddNum);
14 printf("%d", oddNum);
15 return 0;

结果如下:222011321081031@C-server:~$ ./a.out
1 2 3 4 5 6 7 8 9 0^[[D
The number of odd is 55222011321081031@C-server:~$
疑惑:按入十个数字之后 按enter键依旧在进行 如果按一下其他不是数字的一个键 在按一下enter键才可以出现答案,这是为什么呢?怎么出现了55这样的结果

[解决办法]

C/C++ code
8 for( i = 0; [color=#FF0000]i<= 10[/color]; i++)
[解决办法]
a[10]数组只定义了大小为10,却要输入11个数,数组溢出
[解决办法]
数组溢出了!
[解决办法]
数组溢出了 出现了不可预知的错误~~
[解决办法]
//正确的,出现55因为输出两次。(i<=10存在越界问题)

#include<stdio.h>

int main()
{
int i, a[10], oddNum;
oddNum = 0;
for( i = 0; i< 10; i++)
{
scanf("%d", &a[i]);
if(a[i] % 2 == 1 )
oddNum = oddNum + 1;
}
printf("The number of odd is %d", oddNum);
return 0;
}


[解决办法]
你需要debug下。编译工具的不同,a[10]里面的值可能会不同。里面存的值是内存中自带的值。

读书人网 >C语言

热点推荐