各位大佬能帮我看一下嘛,不知道哪里有问题

Aurora___001 2024-05-18 17:11:57

//从键盘输入一些数,
//当输入的数字为负值时,输入结束

//统计输入的数字的平均数
#include <stdio.h>
#define num 10

double average(int a[],int n)
{
    double sum=0;
    int i;
    for(i=0;i<num;i++)
    sum +=(double)a[i];
    return sum/n;
}

int main()
{
    int a[num];
    int i,b;
    printf("input member\n");

    while (i<num)
    {
    printf("input %d member:",i+1);
    scanf("%d",&a[i]);
        if(a[i]<0)
        {
            break;
            b=i;
        }
    i++;
    b=i;
    }

    double ave;
    ave = average(a,b);
    printf("%lf",ave);
    
    
    return 0;
}

...全文
237 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
★雨 潇★ 2024-05-23
  • 打赏
  • 举报
回复 1

以下内容引用天工AI GPT3.0智能回答,如有帮助请采纳!

您的代码中有几个问题,我会逐一指出并提供修改建议:

  1. while (i<num) 循环中的 i 没有初始化。在进入循环之前,您应该初始化 i 为0。
  2. if(a[i]<0) 条件下的 break 语句后面的 b=i; 永远不会执行,因为一旦执行了 break,程序就会跳出循环。
  3. b 变量的作用不明确。如果您想用它来记录输入了多少个非负数,那么应该在循环结束后赋值给 b
  4. average 函数中的 n 参数应该是 num,而不是 b,因为 average 函数计算的是所有输入数的平均值,而不是直到第一个负数为止的数的平均值。
  5. average 函数中的 sum 应该初始化为0,但在循环开始前已经初始化了。

下面是修正后的代码:

#include <stdio.h>
#define num 10

double average(int a[], int n) {
    double sum = 0;
    for (int i = 0; i < n; i++) {
        sum += (double)a[i];
    }
    return sum / n;
}

int main() {
    int a[num];
    int i = 0; // 初始化 i
    printf("input member\n");

    while (i < num) {
        printf("input %d member: ", i + 1);
        scanf("%d", &a[i]);
        if (a[i] < 0) {
            break;
        }
        i++;
    }

    double ave;
    ave = average(a, i); // 使用 i 作为参数,因为 i 记录了实际输入的元素数量
    printf("%lf\n", ave);

    return 0;
}

在这个修正后的代码中,i 用来跟踪当前输入的元素位置,并且在遇到负数时终止循环。然后,average 函数使用 i 作为参数来计算直到第一个负数为止的数的平均值。

l1026914765 2024-05-21
  • 打赏
  • 举报
回复

1.首先输入负数程序执行完毕自然就退出了啊,是不是考虑在return前边加一个等待呢(比如加一行getchar()或者死循环,getchar()可能还要考虑缓冲区清空的问题)
2.其次变量的话最好初始化一下,否则可能会出现不确定的数字

zara 2024-05-18
  • 打赏
  • 举报
回复

i 没有初始化,int i=0; 即可。

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧