c语言问题。求高手帮忙,是个小细节

程序如下所示:有两点疑问:1,为什么0输出之后是4199449出现这个的原因是什么?
2,出现个小窗口的原因是什么?求高手解答!
#include "stdafx.h"
int main(int agrc, char*argv[])
{
printf("请输入十个数:\n");
int a[9],i,max=0,t,j;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<=9;i++)
{
if(max<=a[i])
{
max=a[i];
}
}
printf("这十个数中最大的数是: max=%d \n",max);
for(j=9;j>=0;j--)
{
for(i=0;i<=j;i++)
{
if(a[i]<=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("从大到小的排序为:\n");
for(i=0;i<=9;i++)
{
printf("%d ",a[i]);
}
printf("\n");
printf("从小到大的排序为:");
for(i=9;i>=0;i--)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}

代码有问题
产生问题1和2的本质原因都是因为你数组越界了
定义了int a[9]
但是你下面的
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
等等代码

同学,你的数组总共只有9个元素,你却让他遍历从a[0]~a[9],这里有10个元素啊!!!还不是越界么!!!追问

我开始的时候是10,但是10运行出来问题就大了!求解决方案!!!

追答

//#include "stdafx.h"
//要么写纯粹的C,要么写纯粹的C++,你这算什么
#include
int main(int agrc, char*argv[])
{
int a[10],i,max=0,t,j;//考虑到为了兼容不支持C99的编译器,故将此句定义提前至函数开头
printf("请输入十个数:\n");

for(i=0;i0;j--)//
{
for(i=0;i=0;i--)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}

追问

谢谢你,觉得你很厉害,看来我还得加倍努力,但是我想说的是,我们学的时候用的开发环境是c++兼容c的,所以才会出现那个c++的头文件!

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜