首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c语言小疑点。

2012-05-11 
c语言小问题。。。。#includestdio.h3 int main()4 {5int i, a[10], oddNum6oddNum 07i 18for( i 0

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]里面的值可能会不同。里面存的值是内存中自带的值。

热点排行