#include <stdio.h> #define N 40 int GetAboveAver(int score[], int n); void main() { int score[N], m, n; n = -1; //1 do{ n++; scanf("%d", &score[n]);//1 }while (score[n] >= 0); //e2 m = GetAboveAver(score, n); //2 printf("Students of above average is %d\n", m); } int GetAboveAver(int score[], int n) { int i, sum, aver,count; count = 0;//1 sum = 0;//1 for (i=0; i<n; i++)//1 { sum += score[i];//2 } aver=sum/n;//1 for (i=0; i<n; i++)//1 { if (score[i] >= aver)//2 count++;//1 } printf("Total students are %d\n",n); printf("Average score is %d\n",aver); return count;//1 }
时间: 2024-01-26 20:02:16 浏览: 71
这是一段 C 语言程序,主要实现了以下功能:
1. 从输入中读取学生的分数,直到输入负数为止;
2. 计算所有学生的平均分数;
3. 统计高于平均分数的学生人数,并输出结果。
具体而言,程序定义了一个 GetAboveAver 函数来计算高于平均分数的学生人数,该函数接受两个参数:一个整型数组 score,存储了所有学生的分数;一个整型变量 n,表示学生总数。GetAboveAver 函数首先计算所有学生的平均分数,然后遍历数组 score,统计高于平均分数的学生人数,并将结果返回给主函数。
在主函数中,程序首先定义了一个整型数组 score 和两个整型变量 m 和 n。然后使用 do-while 循环读入学生的分数,并将其存储在数组 score 中,直到读入负数为止。接着调用 GetAboveAver 函数计算高于平均分数的学生人数,并将结果存储在变量 m 中。最后输出结果。
需要注意的是,程序中使用了一些宏定义和注释来增加代码的可读性,这些内容在实际编译中并不会被编译器处理。
相关问题
增加开始界面包括开始游戏、游戏说明、退出游戏 #include <graphics.h> #include <stdio.h> #include <time.h> #include <conio.h> #pragma comment(lib,"winmm.lib") //最简单的贪吃蛇 #define NUM 100 //蛇的最大长度 //枚举4个方向 72 80 75 77 ↑↓←→ enum Ch{up=72,down=80,left=75,right=77}; //坐标 struct Coor { int x; int y; }; //蛇的结构体 struct Snake { int n; //蛇当前的节数 Ch ch; //方向 Coor szb[NUM]; //蛇每一节的坐标 }snake; //snake //食物 struct Food { int x; int y; bool isEat; }food; //游戏的初始化函数 void InitGame() { srand((unsigned int)time(NULL)); mciSendString(L"open 甩葱歌.mp3 alias BGM", 0, 0, 0); mciSendString(L"play BGM", 0, 0, 0); //先得到一条蛇 1节 right 320 240 snake.n = 4; snake.ch = right; snake.szb[0].x = 320; snake.szb[0].y = 240; sna
ke.szb[1].x = 300; snake.szb[1].y = 240; snake.szb[2].x = 280; snake.szb[2].y = 240; snake.szb[3].x = 260; snake.szb[3].y = 240; //初始化食物 food.isEat = true; //随机生成一个食物 food.x = rand() % 640; food.y = rand() % 480; } //绘制游戏界面 void DrawGame() { cleardevice(); //绘制蛇 for (int i = 0; i < snake.n; i++) { setfillcolor(RED); solidcircle(snake.szb[i].x, snake.szb[i].y, 10); } //绘制食物 setfillcolor(GREEN); solidcircle(food.x, food.y, 10); } //更新蛇的位置 void UpdateSnake() { //移动蛇 for (int i = snake.n - 1; i > 0; i--) { snake.szb[i].x = snake.szb[i - 1].x; snake.szb[i].y = snake.szb[i - 1].y; } //根据方向更新蛇头 switch (snake.ch) { case up: snake.szb[0].y -= 20; break; case down: snake.szb[0].y += 20; break; case left: snake.szb[0].x -= 20; break; case right: snake.szb[0].x += 20; break; default: break; } //判断是否吃到食物 if (snake.szb[0].x == food.x && snake.szb[0].y == food.y) { snake.n++; food.isEat = true; food.x = rand() % 640; food.y = rand() % 480; } } //判断游戏是否结束 bool IsGameOver() { //判断是否撞墙 if (snake.szb[0].x < 0 || snake.szb[0].x > 640 || snake.szb[0].y < 0 || snake.szb[0].y > 480) { return true; } //判断是否撞到自己 for (int i = 1; i < snake.n; i++) { if (snake.szb[0].x == snake.szb[i].x && snake.szb[0].y == snake.szb[i].y) { return true; } } return false; } //游戏结束 void GameOver() { //关闭音乐 mciSendString(L"close BGM", 0, 0, 0); //输出得分 printf("Game Over! You got %d score!\n", snake.n - 4); } //主函数 int main() { //初始化窗口 initgraph(640, 480); //初始化游戏 InitGame(); //游戏循环 while (1) { //绘制游戏界面 DrawGame(); //更新蛇的位置 UpdateSnake(); //判断游戏是否结束 if (IsGameOver()) { GameOver(); break; } //延时一段时间 Sleep(200); //判断是否需要重新生成食物 if (food.isEat) { food.isEat = false; } } //关闭窗口 closegraph(); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 100 // 学生信息结构体 typedef struct { char num[10]; // 学号 char name[10]; // 姓名 char clas[10]; // 班级 char sex[10]; // 性别 float score; // 成绩 } Student; // 学生信息数组 Student studentList[MAX_SIZE]; int size = 0; 帮我添加一个可以查询学生成绩最大值和最小值的分函数代码
可以添加以下代码来实现查询学生成绩最大值和最小值的函数:
```c
// 查询学生成绩最大值和最小值
void findMinMaxScore() {
float maxScore = 0, minScore = 100;
for (int i = 0; i < size; i++) {
if (studentList[i].score > maxScore) {
maxScore = studentList[i].score;
}
if (studentList[i].score < minScore) {
minScore = studentList[i].score;
}
}
printf("成绩最高的学生信息:\n");
for (int i = 0; i < size; i++) {
if (studentList[i].score == maxScore) {
printf("学号:%s 姓名:%s 班级:%s 性别:%s 成绩:%.2f\n",
studentList[i].num, studentList[i].name,
studentList[i].clas, studentList[i].sex,
studentList[i].score);
}
}
printf("成绩最低的学生信息:\n");
for (int i = 0; i < size; i++) {
if (studentList[i].score == minScore) {
printf("学号:%s 姓名:%s 班级:%s 性别:%s 成绩:%.2f\n",
studentList[i].num, studentList[i].name,
studentList[i].clas, studentList[i].sex,
studentList[i].score);
}
}
}
```
在主函数中,可以通过调用该函数来查询学生成绩最大值和最小值:
```c
int main() {
// 添加学生信息
// ...
// 查询学生成绩最大值和最小值
findMinMaxScore();
return 0;
}
```
阅读全文