首页 新闻 搜索 专区 学院

c语言程序运行问题

0
悬赏园豆:20 [已解决问题] 解决于 2021-08-11 19:32

include<stdio.h>

int main(void)
{
int x;
double sum = 0;
int cnt;
int number[100];
printf("请输入数字:");
scanf("%d", &x);
while (x != -1) {
number[cnt] = x;
sum += x;
cnt++;
scanf("%d", &x);
}
if (cnt > 0) {
double average = sum / cnt;
for (int i = 0; i < cnt; i++) {
if (number[i] > average) {
printf("%d ",number[i]);
}
}
}

return 0;

}
可以正常运行,但输入值后,程序直接结束,没有任何输出结果

新手小白。的主页 新手小白。 | 初学一级 | 园豆:103
提问于:2021-08-11 13:21
< >
分享
最佳答案
0

cnt没有初始化,后续直接使用 number[cnt] = x; ,这一点就不可以吧。改成int cnt = 0; 后我这里就能正常运行了。

收获园豆:20
给给龙 | 菜鸟二级 |园豆:235 | 2021-08-11 16:45

我这里还是不行,你用的啥ide

新手小白。 | 园豆:103 (初学一级) | 2021-08-11 19:19

@新手小白。: 调试吧

给给龙 | 园豆:235 (菜鸟二级) | 2021-08-11 19:21

@给给龙: 找到问题了,一调试看出来了,万分感谢!

新手小白。 | 园豆:103 (初学一级) | 2021-08-11 19:33
其他回答(4)
0

你缺少关键代码:参考三种解决方法:C语言——解决编程运行时程序闪退问题(VS中)

熊泽-学习中的苦与乐 | 园豆:2021 (老鸟四级) | 2021-08-11 14:33

不是闪退的问题,可以正正常运行,但是他不会输出任何结果

支持(0) 反对(0) 新手小白。 | 园豆:103 (初学一级) | 2021-08-11 15:00
0

多打印一下不就知道了(printf("num:%d ,ave:%d",number[i],average);),输入2 ,-1

include<stdio.h>

int main(void)
{
int x;
double sum = 0;
int cnt;
int number[100];
printf("请输入数字:");
scanf("%d", &x);
while (x != -1) {
number[cnt] = x;
sum += x;
cnt++;
scanf("%d", &x);
}
if (cnt > 0) {
double average = sum / cnt;
for (int i = 0; i < cnt; i++) {
printf("num:%d ,ave:%d",number[i],average);
if (number[i] > average) {
printf("%d ",number[i]);
}
}
}

return 0;
}

逆袭之路666 | 园豆:206 (菜鸟二级) | 2021-08-11 14:36

printf("num:%d ,ave:%d",number[i],average);这一句输出了
但average等于0了

支持(0) 反对(0) 新手小白。 | 园豆:103 (初学一级) | 2021-08-11 15:01
0

我的ide直接都给干崩溃了
你用的啥ide?

echo_lovely | 园豆:311 (菜鸟二级) | 2021-08-11 17:16
#include <stdio.h> 
int main(void)
{
    int x;
    double sum = 0;
    int cnt = 0;//加了0 
    int number[100];
    printf("请输入数字:");
    scanf("%d", &x);
    while (x != -1)
    {
        number[cnt] = x;
        sum += x;
        cnt++;
        scanf("%d", &x);
    }
    if (cnt > 0)
    {
        double average = sum / cnt;
		int i = 0;//我这ide不能在for里声明变量 
        for (; i < cnt; i++)
        {
            if (number[i] > average)
            {
                printf("%d ", number[i]);
            }
        }
    }
    return 0;
}
支持(0) 反对(0) echo_lovely | 园豆:311 (菜鸟二级) | 2021-08-11 17:46


不知道你这段代码是要干啥的

养成好习惯,变量声明的时候顺手初始化变量的值

支持(0) 反对(0) echo_lovely | 园豆:311 (菜鸟二级) | 2021-08-11 17:47

vs2019 devc++都用过了,这是一个练习题,要求输出大于平均值的数字

支持(0) 反对(0) 新手小白。 | 园豆:103 (初学一级) | 2021-08-11 19:18
0

cnt没有初始化,直接访问number[cnt]=x有风险
声明局部变量需要初始化!!!

计算机知识杂谈 | 园豆:332 (菜鸟二级) | 2021-08-11 19:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册