简单C语言,程序显示没错误,但是总是运行不出来,为啥呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单C语言,程序显示没错误,但是总是运行不出来,为啥呢?相关的知识,希望对你有一定的参考价值。

#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);

你只定义了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语言要非常小心。
参考技术A 你只定义了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语言要非常小心。
参考技术B 明显的错误嘛,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);
参考技术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);
参考技术D 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=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],不然就数据溢出了

本回答被提问者采纳

为啥devc运行和编译可以但是没分

devc运行和编译可以但是没分,
是因为devc的运行和编辑和正常的编辑程序是不一样的,它的逻辑思维是反过来的,所以是可以正常使用的,但是是不能够给分的。
参考技术A 为什么devc运行和编译可以但是没分?
答案如下:是因为代码和设置出现错误导致!首先第一步先点击打开设置按钮,然后帐户管理在页面点击账号安全中心进入即可完成!
参考技术B 试一下从命令行直接执行程序是否有问题。

但无论如何,不应该再用DevC++了。这个程序已经多年没有更新,同 Win10 不兼容是大概率事件,而且也不要指望有官方支持。更何况你安装的说不定还是谁魔改过的版本。请去找更加现代一点的IDE。如果只是自己学习的话,用编辑器+makefile也是可以的。
参考技术C devc++是一个类似于bc++的编译器,因为开发公司不同,在设计上有些不同,导入vc工程是会出现错误,但是你可以直接在devc++上直接建工程,而不需要导入工程!这样就会避免错误!!在devc++上建工程于vc上大致一样!如果万一不行,你可以采用borlandc++编译器。这也是一个不错的编译器。并且在c语言方面执行效率要比vc高! 参考技术D 有可能只编译没有运行,或者是命令行窗口自动关闭了 devc++是一个类似于bc++的编译器,因为开发公司不同,在设计上有些不同,导...

以上是关于简单C语言,程序显示没错误,但是总是运行不出来,为啥呢?的主要内容,如果未能解决你的问题,请参考以下文章

c语言文件读写问题,文件没内容?程序是照着书上搬出来的,运行什么都没问题就是生成的文件里面看不到内容

为啥devc运行和编译可以但是没分

visual 2010 如何设置语法错误自动提示,哪里错误就会出现红色波浪线,但是现在没了 不知道如何调出来

DEV C++如何显示运行结果

为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教

simulink 转换成c语言