求助c语言代码

首先,我们需要定义一个结构体来存储学生的成绩信息,然后创建一个二维数组来存储20个班的40名学生的5门课程的成绩。接着,我们需要编写一个函数来生成随机成绩,并计算每个班、每门课程的平均分。最后,我们需要对平均分进行排序并输出结果。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义结构体
typedef struct {
int class_id;
int student_id;
int score;
} Student;
// 生成随机成绩
void generate_scores(Student students[], int num_students) {
for (int i = 0; i < num_students; i++) {
students[i].score = rand() % 101;
}
}
// 计算平均分
float calculate_average(Student students[], int num_students) {
int total_score = 0;
for (int i = 0; i < num_students; i++) {
total_score += students[i].score;
}
return (float)total_score / num_students;
}
// 按成绩从高到低排序
void sort_scores(Student students[], int num_students) {
for (int i = 0; i < num_students - 1; i++) {
for (int j = 0; j < num_students - 1 - i; j++) {
if (students[j].score < students[j + 1].score) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
const int num_classes = 20;
const int num_students = 40;
const int num_courses = 5;
Student students[num_classes][num_students];
// 初始化随机数种子
srand(time(NULL));
// 生成成绩并计算平均分
for (int i = 0; i < num_classes; i++) {
students[i][0].class_id = i + 1;
generate_scores(students[i], num_students);
printf("班级%d的平均分:%.2f
", students[i][0].class_id, calculate_average(students[i], num_students));
}
// 按成绩从高到低排序
for (int i = 0; i < num_classes; i++) {
sort_scores(students[i], num_students);
}
// 输出排序后的结果
for (int i = 0; i < num_classes; i++) {
printf("班级%d的成绩排名:
", students[i][0].class_id);
for (int j = 0; j < num_students; j++) {
printf("学生%d:%d分
", students[i][j].student_id, students[i][j].score);
}
}
return 0;
}
这段代码首先定义了一个结构体Student来存储学生的成绩信息,然后创建了一个二维数组students来存储20个班的40名学生的5门课程的成绩。接着,我们编写了一个函数generate_scores来生成随机成绩,并计算每个班、每门课程的平均分。然后,我们编写了一个函数sort_scores来对平均分进行排序。最后,在main函数中,我们调用这些函数来生成成绩、计算平均分和排序,并输出结果。

下面有个简单的C语言示例来满足您的需求:

#include <stdio.h>#include <stdlib.h>#include <time.h> // for rand() and srand()// 定义一个学生类typedef struct {    int class; // 班级编号    char name[50]; // 学生姓名    float scores[5]; // 成绩数组} Student;// 定义一个班级类typedef struct {    int num_students; // 班级人数    Student students[40]; // 学生数组} Class;int main(){    srand(time(NULL)); // 初始化随机数种子    Class classes[20];    printf("请输入班级数量(最多20): ");    scanf("%d", &classes_num);    if (classes_num > 20) {        printf("错误! 最多只能有20个班级.
");        return -1;    }    for(int i = 0; i< classes_num ;i++) {
       printf("
Enter details of Class %d
", i + 1);        printf("Enter number of students in the class : ");        scanf("%d",&classes[i].num_students);
       for(int j = 0; j< classes[i].num_students ;j++) {  
           strcpy(classes[i].students[j].name, "Student"); // 假设所有学生的名字都是"Student"            for(int k = 0;k<5;k++){                classes[i].students[j].scores[k] = ((float)(rand()%100))/((float)RAND_MAX/100)+1; // 随机生成分数            }        }  
   }    for(int i = 0;i< classes_num ;i++) {
       printf("
Class %d:
", i + 1);        for(int j = 0;j< classes[i].num_students ;j++) {
           printf("Name: %s Score: %.2f
", classes[i].students[j].name , classes[i].students[j].scores[0]);        }                for(int j = 0;j< 5 ;j++) {
           float avg_score = 0;            for(int k = 0;k< classes[i].num_students ;k++) {                avg_score += classes[i].students[k].scores[j];            }            avg_score /= classes[i].num_students;            printf("Average score of Subject %d is %.2f
", j + 1, avg_score );        }    }    return 0;}

这个程序定义了Student和Class的数据类型,然后用它们创建了一些数据。

注意:随机数是基于当前时间戳作为种子进行初始化的。

每个学生都有五个科目,他们的成绩数组长度为五。

计算平均分时,遍历了所有的学生累加他们在这个科目的得分,最后除以学生总数目得到平均值。



以下是一个使用C语言和结构体实现的示例代码,可以存储20个班,每个班40名学生的5门课程的成绩,并按照从高到低的顺序显示每个班、每门课程的平均分。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM_CLASSES 20
#define NUM_STUDENTS 40
#define NUM_COURSES 5
struct student {
int id;
int scores[NUM_COURSES];
};
int main() {
srand(time(NULL)); // 使用当前时间作为随机数生成器的种子
struct student students[NUM_CLASSES][NUM_STUDENTS]; // 存储所有学生的成绩
int total_scores[NUM_CLASSES][NUM_COURSES]; // 存储每个班级、每门课程的总分数
int avg_scores[NUM_CLASSES][NUM_COURSES]; // 存储每个班级、每门课程的平均分数
// 初始化总分数和平均分数数组
for (int i = 0; i < NUM_CLASSES; i++) {
for (int j = 0; j < NUM_COURSES; j++) {
total_scores[i][j] = 0;
avg_scores[i][j] = 0;
}
}
// 生成随机成绩并计算总分数和平均分数
for (int i = 0; i < NUM_CLASSES; i++) {
for (int j = 0; j < NUM_STUDENTS; j++) {
for (int k = 0; k < NUM_COURSES; k++) {
students[i][j].scores[k] = rand() % 100; // 生成0-99的随机成绩
total_scores[i][k] += students[i][j].scores[k]; // 计算总分数
}
}
for (int k = 0; k < NUM_COURSES; k++) {
avg_scores[i][k] = total_scores[i][k] / NUM_STUDENTS; // 计算平均分数
}
}
// 按从高到低的顺序显示每个班、每门课程的平均分
printf("班级\t"); // 表头,表示班级信息
for (int j = 0; j < NUM_COURSES; j++) {
printf("课程%d\t", j + 1); // 表头,表示课程信息
}
printf("\n"); // 换行符,分隔表头和表格内容
for (int i = NUM_CLASSES - 1; i >= 0; i--) { // 从最后一个班级开始显示,方便阅读表格内容从上到下的顺序是降序的平均分
printf("%d\t", i + 1); // 显示班级信息
for (int j = 0; j < NUM_COURSES; j++) { // 显示每门课程的平均分
printf("%.2f\t", avg_scores[i][j]); // 使用 %.2f 控制小数点后两位的精度显示平均分,增加可读性
}
printf("\n"); // 换行符,分隔表格内容行和行之间的空行(这里不需要显示其他信息)
}
return 0;
}
```

  • 姹傚姪c璇█浠g爜
    绛旓細棣栧厛锛屾垜浠渶瑕佸畾涔変竴涓粨鏋勪綋鏉ュ瓨鍌ㄥ鐢熺殑鎴愮哗淇℃伅锛岀劧鍚庡垱寤轰竴涓簩缁存暟缁勬潵瀛樺偍20涓彮鐨40鍚嶅鐢熺殑5闂ㄨ绋嬬殑鎴愮哗銆傛帴鐫锛屾垜浠渶瑕佺紪鍐欎竴涓嚱鏁版潵鐢熸垚闅忔満鎴愮哗锛屽苟璁$畻姣忎釜鐝佹瘡闂ㄨ绋嬬殑骞冲潎鍒嗐傛渶鍚庯紝鎴戜滑闇瑕佸骞冲潎鍒嗚繘琛屾帓搴忓苟杈撳嚭缁撴灉銆俰nclude <stdio.h> include <stdlib.h> include // 瀹氫箟缁...
  • c璇█浠g爜姹傚姪
    绛旓細include <iostream> include <string> include <algorithm> include <cmath> using namespace std;// 瀹氫箟鑱屽伐淇℃伅绫 class Employee { public:string name;char gender;string hometown;int empId;double salary;};// 姣旇緝鍑芥暟锛岀敤浜庢帓搴 bool compareEmp(const Employee &a, const Employee &b) { ...
  • c璇█浠g爜姹傚姪
    绛旓細浠g爜鏂囨湰锛歩nclude "stdio.h"int main(int argc,char *argv[]){ char a[80];int i,j,k;while(1){ printf("Please enter a string(Length<80)...\n");if((a[0]=getchar())==EOF)break;for(i=1;i<80;i++)if((a[i]=getchar())=='\n')a[i]='\0',i=79;for(i=j=...
  • 姹傚姪C璇█浠g爜
    绛旓細include <stdio.h>float plus(int n);int main(){ int n,i; printf("璇疯緭鍏\n"); scanf("%d",&n); printf("%f\n",plus(n)); system("pause"); return 0;}float plus(int n){ int i; float p = 0; /*p涓嶉渶瑕佸畾涔夋垚鎸囬拡锛屽畾涔夋垚鎸囬拡鍙堜笉鍒嗛厤绌...
  • c璇█姹傚姪浠g爜璇ユ庝箞鍐,鑳介檮甯﹁瑙h鏄庢渶濂姐
    绛旓細include <stdio.h>void fun() { printf("Smile! ");}int main() { // 闇瑕佹墦鍗 3 琛岋紝 鎵浠ヤ粠 0 閬嶅巻鍒 3 for (int i = 0; i < 3; i++) { // 姣忚闇瑕佹墦鍗 "Smile! " 鐨勪釜鏁颁负 3 - i for (int j = 0; j < 3 - i; j++) { fun(); }...
  • c璇█姹傚姪 姹傚畬鏁浠g爜
    绛旓細include <stdio.h>void main(){int i,j,t,n,max=0,a[100],b[10]={0};scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);t=a[i];while(t){b[t%10]++;t=t/10;}}for(i=0;i<10;i++)if(max<b[i]) max=b[i];printf("%d:",max);for(i=0;i<10;i+...
  • 姹傚姪:C璇█浠g爜
    绛旓細鍏堣嚜宸辫緭鍏ュ嚑涓暟锛岀劧鍚庡瓨璧锋潵锛岀敱浜庤繖鏄竴涓叉暟瀛楋紝鎵浠ユ垜浠氨鐢ㄦ暟缁勬潵瀛樸傛墍浠ヨ繖灏辫瀹氫箟涓涓暟缁勩傜劧鍚庡畾涔変竴涓猻um鏉ョ疮鍔犲拰銆傛湁浜嗚繖涓濊矾锛岄棶棰樺氨鍙樼畝鍗曞暒锛乵ain(){int a[10]锛宯,i,sum=0;printf("璇疯緭鍏ヤ竴涓皬浜10鐨勬暣鏁帮細")锛泂canf("%d",&n);for(i=0;i<=n;i++){scanf("%d",a[...
  • 姹傚姪C璇█!!!
    绛旓細int main(){ POSITION_TypeDef position;base_position.x = 50;base_position.y = 40;position.x = 2;position.y = 3;printf("%lf", calc_distance(position));return 0;} include <math.h> include "utils.h"POSITION_TypeDef base_position;double calc_distance(const POSITION_TypeDef p){...
  • c璇█鑿滈笩姹傚姪涓娈浠g爜
    绛旓細鍔犱竴鏉¤鍙ュ氨OK鍟 include <stdio.h> include <conio.h> main(){ char x;scanf("%c",&x);while (x!='a'){ getchar();printf("11\n");scanf("%c",&x);} printf("nice");getch();}
  • C璇█缂栫▼姹傚姪!!!
    绛旓細int main (){ int grade,i,n,max=0,min=1000,num[500];printf("璇疯緭鍏ヤ竴涓暟:");scanf("%d" , &n) ;if(n<2 || n>499) {printf(鈥滄暟瀛椾釜鏁颁笉绗﹀悎瑕佹眰\n鈥);return 44;} printf("璇疯繛缁緭鍏%d涓暟,鐢ㄧ┖鏍奸殧绂诲紑鏉:",n);for(i=0;i<n;i++){ scanf("%d" , &grade) ;...
  • 扩展阅读:免费网站入口代码大全 ... c++入门程序代码 ... c++编程代码大全 ... 吓人的编程代码 ... 最浪漫的编程代码 ... 免费web代码网站 ... c++编程爱心代码 ... c语言代码生成器 ... c++新手代码大全 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网