注册 登录
编程论坛 C语言论坛

用数组求平均数,但运行时崩溃。

小白级的小黑 发布于 2022-12-11 11:31, 1862 次点击
原因是:在网上看到。用一般方法时,数组的大小是固定的。
    所以用以下代码来改善一下。于是自己也写下来,但运行时崩溃了。
    网上也说明了‘在std=c99的标准下’。

源码如下:
程序代码:

/********用数组求平均数********/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x;
    double sum = 0.0;
    int count;
   
    printf("请确定输入数字的数量:");
    scanf("%d", &count);
   
    if( count > 0 )
    {
        int number[count];
        scanf("%d", &x);
        
        while( x != -1 )
        {
            number[count] = x;
            sum += x;
            count++;
            scanf("%d", &x);
        }        
        printf("average:%f\n", sum / count);
    }
   
    system( "pause" );
    return 0;
}
12 回复
#2
rjsp2022-12-11 14:30
你把完整的题目贴一下嘛,
你的代码我看不懂,怎么又是count,又是x!=-1
#3
小白级的小黑2022-12-11 15:44
回复 2楼 rjsp
描述:用户输入一组数字,输入-1表示结束。求这组数字的平均数。
-----------------------------------------------------------
输入样例(一行):
1    2    3    4    -1
——————————————————————————————
输出样例(一行):
2.500000
------------------------------------------------------------
#4
rjsp2022-12-11 16:39
这题目也太含糊了,起码要说一下这个“数字”的类型和取值范围,数量的取值范围。

程序代码:
#include <stdio.h>

int main( void )
{
    size_t count = 0;
    double sum = 0;

    for( double v; scanf("%lf",&v)==1 && v!=-1; ++count )
        sum += v;

    printf( "%f\n", sum/count );
}
#5
renkejun19422022-12-11 17:03
number[count] = x;

数组越界了吧?
#6
小白级的小黑2022-12-11 19:42
回复 5楼 renkejun1942
我写到自己的编辑器上的时候也是怎么想的,可是网上就这么放出来了。
#7
renkejun19422022-12-11 19:44
回复 6楼 小白级的小黑
要么是你抄错了,要么是代码不是C语言。
发链接来看看吧。

number[count] = x;
这代码就已经越界了。
更别提后面的
count++
了。

我本打算帮你改一下,发现你所谓的用数组算平均数,跟本就多此一举。你还是再研究下你的代码吧。

number[count] = x;
            sum += x;
            count++;
            scanf("%d", &x);

你的数组压根就没排上用场。所以弄个数组的意义到底在哪里?

[此贴子已经被作者于2022-12-11 19:51编辑过]

#8
小白级的小黑2022-12-11 19:54
回复 4楼 rjsp
您回复我的这些代码。这里for循环中的条件判断我有点模糊。
就是这个:scanf("%lf",&v) == 1
这个scanf的返回值是:只要输入了值,就返回真吗?
#9
小白级的小黑2022-12-11 20:04
回复 7楼 renkejun1942
我誊写的时候只保留了截图
(我知道论坛中有关代码的图片尽量少发,可我找不到那个视频了。求谅解!)

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-12-11 20:07编辑过]

#10
rjsp2022-12-11 20:19
回复 8楼 小白级的小黑
scanf成功接受几个字段就返回几,遇到错误则返回EOF
#11
renkejun19422022-12-11 20:29
回复 9楼 小白级的小黑
那只能说明你誊抄的“原件”就是错的。而且这个所谓的“原件”也是多此一举的,数组没排上任何用场,所以数组的存在毫无意义。
#12
郭源潮942022-12-12 16:56
题目要求输入一组数,输入-1时结束,没要求输入数目的个数,用数组不必要
#13
郭源潮942022-12-12 17:03
#include<stdio.h>
int main()
{
    int number;
    double count = 0;
    double sum  = 0;
    while(scanf("%d",&number),number!=-1)
    {
        sum+=number;
        count++;
    }
    printf("%f\n",sum/count);
    return 0;
}
1