加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C中的平均,最大和最小程序

发布时间:2020-12-16 09:49:37 所属栏目:百科 来源:网络整理
导读:所以我用C编码,我需要提出一些代码,它将从用户那里获取n个数字,并找到它们的最小值,最大值,平均值和平方和.到目前为止,我有平均和平方和部分,但最小值和最大值是咬我的. 请记住,我处于一个非常基本的水平,我还没有到达阵列.我所知道的只是逻辑运算符,函数,循
所以我用C编码,我需要提出一些代码,它将从用户那里获取n个数字,并找到它们的最小值,最大值,平均值和平方和.到目前为止,我有平均和平方和部分,但最小值和最大值是咬我的.

请记住,我处于一个非常基本的水平,我还没有到达阵列.我所知道的只是逻辑运算符,函数,循环以及stdlib.h,math.h和stdio.h库的使用.

这就是我到目前为止所拥有的.
当我在编译期间尝试将float和double放在一起时,平均函数给了我很多问题,因此将它乘以1.0固定.我拥有一切,只有最小和最大.我一直把最后一个条目作为我的最大值,最小值为0.

#include<stdio.h>
int main()
{
    float average;
    int i,n,count=0,sum=0,squaresum=0,num,min,max;


    printf("Please enter the number of numbers you wish to evaluaten");
    scanf_s("%d",&n);

    printf("Please enter %d numbersn",n);

    while(count<n)
    {
        min=0;
        max=0;

            if(num>max)
               max=num;
            if(num<min)
               min=num;

            scanf_s("%d",&num);

        sum = sum+num;
        squaresum = squaresum + (num*num);

        count++;
    }
        average = 1.0*sum/n;

    printf("Your average is %.2fn",average);
    printf("The sum of your squares is %dn",squaresum);    



    printf("Your maximum number is %dn",max);
    printf("Your minimum number is %dn",min);

return(0);
}

解决方法

你的算法不太正确.以下是正确的实现:

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main(void)
{
    float average;
    int n,count = 0,sum = 0,squaresum = 0;
    int min = INT_MAX,max = INT_MIN;
    bool gotAnswer = false;

    /* Don't Let User Enter Wrong Input */
    while(!gotAnswer)
    {
        printf("Please enter the number of numbers you wish to evaluate: ");
        if(scanf_s("%d",&n) != 1)
        {
            /* User Entered Wrong Input; Clean Up stdin Stream*/
            while(getchar() != 'n')
            {
                 continue;
            }
        }
        else
        {
            /* User Input Was Good */
            gotAnswer = true;
        }
    }

    /* Clear stdin Stream Just In Case */
    while(getchar() != 'n')
        continue;

    while(count < n)
    {
        /* Don't Let User Enter Wrong Input */
        gotAnswer = false;
        printf("Enter number %d: ",count + 1);
        if(scanf_s("%d",&num) != 1)
        {
            /* User Entered Wrong Input; Clean Up stdin Stream */
            while(getchar() != 'n')
                continue;

            /* Let User Try Again */
            continue;
        }
        else
        {
            /* User Input Was Correct */
            gotAnswer = true;

            /* Clear stdin Stream Just In Case */
            while(getchar() != 'n')
                continue;
        }

        if(num > max)
            max = num;
        if(num < min)
            min = num;

        sum += num;
        squaresum += num * num;
        count++;
    }

    average = 1.0 * sum / n;

    printf("Your average is %.2fn",squaresum);    
    printf("Your maximum number is %dn",min);

    system("pause");
    return 0;
}

我添加了错误检查和恢复.如果您对逻辑有任何疑问,请询问.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读