题解 | #公务员面试#
公务员面试
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)` 的作用是检测是否成功读取了一个整数,如果成功读取,则条件为真,循环继续执行;如果读取失败或输入结束,条件为假,循环结束。 */