简单C语言,程序显示没错误,但是总是运行不出来,为什么呢?
#include<stdio.h>voidmain(){intmax,num[6],i;printf("请输入6个数字:\n");scanf("%d%d%d%d%d%d"...
#include<stdio.h>
void main()
{
int max,num[6],i;
printf("请输入6个数字:\n");
scanf("%d %d %d %d %d %d",&num[i]);
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the max num is %d\n",max);
} 展开
void main()
{
int max,num[6],i;
printf("请输入6个数字:\n");
scanf("%d %d %d %d %d %d",&num[i]);
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the max num is %d\n",max);
} 展开
9个回答
展开全部
你只定义了6个数组,可是你用了7个元素,已经越界溢出了。你把循环改成这样就OK了。
for(i=1;i<6;i++)
C/C++语言定义的数组是不包括本身元素,而且是从零元素开始,即你定义的应该是:
num[0],num[1],num[2],num[3],num[4],num[5];
并不包括num[6]。因此,你就会出错。
编译器只能检测你的语法有没有问题,并不能检测隐藏的问题。所以学C语言要非常小心。
for(i=1;i<6;i++)
C/C++语言定义的数组是不包括本身元素,而且是从零元素开始,即你定义的应该是:
num[0],num[1],num[2],num[3],num[4],num[5];
并不包括num[6]。因此,你就会出错。
编译器只能检测你的语法有没有问题,并不能检测隐藏的问题。所以学C语言要非常小心。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
明显的错误嘛,scanf()前面6个%d,需要分配6个int的,你后面只有一个num,运行的话会出现段错误,改成:
{
int
max,num[6],i;
printf("请输入6个数字:\n");
for(i=0;i<6;i++)
scanf("%d",num[i]);
max=num[0];
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the
max
num
is
%d\n",max);
}
{
int
max,num[6],i;
printf("请输入6个数字:\n");
for(i=0;i<6;i++)
scanf("%d",num[i]);
max=num[0];
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the
max
num
is
%d\n",max);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
明显的错误嘛,scanf()前面6个%d,需要分配6个int的,你后面只有一个num,运行的话会出现段错误,改成:
{
int max,num[6],i;
printf("请输入6个数字:\n");
for(i=0;i<6;i++)
scanf("%d",num[i]);
max=num[0];
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the max num is %d\n",max);
}
{
int max,num[6],i;
printf("请输入6个数字:\n");
for(i=0;i<6;i++)
scanf("%d",num[i]);
max=num[0];
for(i=1;i<=6;i++)
{
if(max<num[i])
max=num[i];
}
printf("the max num is %d\n",max);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.scanf("%d %d %d %d %d %d",&num[i]);
改成:
for(i=0;i<6;i++)
scanf("%d",&num[i]);
2.for(i=1;i<=6;i++)改成for(i=0;i<6;i++)
数组下标是从0开始的,=6就越界了
改成:
for(i=0;i<6;i++)
scanf("%d",&num[i]);
2.for(i=1;i<=6;i++)改成for(i=0;i<6;i++)
数组下标是从0开始的,=6就越界了
追问
但是有的程序我写for(i=1;i<=6;i++)从1开始也可以的,是不是规定要从0开始?
追答
可以运行,但是输出的数值不对,比如你输入1 2 3 4 5 6
按照你的写法,1被略过了,最后一个数值是随机的,输出可能是2 3 4 5 6 某值
数组规定,下标从0开始,比如 int a[10],访问时,只能是a[0]到a[9],不能到a[10],不然就数据溢出了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询