题解 | #公务员面试#

公务员面试

https://www.nowcoder.com/practice/f3a134908d5b41869f14f58307008a97

#include <stdio.h>

int main()
{
    int a,max=0,min=100,sum=0,count=0;
    //为什么将max定义为0,min定义为100
    //将max初始化为0就是意味着输入的任何数都将大于max的初始值,然后max的值就被重新赋值为那个数,然后后面输入的数就依次比较
    //将min初始化为100的目的大差不差,输入的任何数字都比初始化的100小,故当第一个数字被输入时,最小的数就是第一个数,然后与后面输入的数依次进行比较
    while(~scanf("%d",&a))//循环输入多组数字
    {
        //更新max
        if(a>max)
        
        max=a;
        if(a<min)
        //更新min
        min=a;
        sum+=a;//将输入的数字累加进来
        count++;//计算次数
        if(count%7==0)//检测用户输入的数据有没有7个
        {
            printf("%.2f\n",(sum-max-min)/5.0);//计算减去最大最小后的平均值
            sum=0;
            min=100;
            max=0;
            //将这三个数据重置,进行下一组的输入和输        
        }
    }

    return 0;
}
//或许很多人不理解为什么我的在多组输入时,在scanf前面添加了一个波浪号~
/*
在这段代码中,`~scanf("%d", &a)` 是一个常见的技巧用来检测输入是否结束。在 C 语言中,`scanf` 函数返回成功读取的参数个数,当输入结束时,`scanf` 函数会返回 `EOF` (-1)。

由于我们在循环中使用 `~scanf("%d", &a)`,`~` 是按位取反操作符,它会将 `EOF` 的值从 -1 取反为 0,因此循环会一直执行直到输入结束。

所以,`~scanf("%d", &a)` 的作用是检测是否成功读取了一个整数,如果成功读取,则条件为真,循环继续执行;如果读取失败或输入结束,条件为假,循环结束。


*/

全部评论

相关推荐

10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务