zoukankan      html  css  js  c++  java
  • struct的使用

    编写一个学生struct,成员有学号(id)、姓名(name)、成绩(5门课程),随机生成多个学生的学号、姓名和成绩存储到结构体数组。再根据总分进行排名并输出学生的信息和总分。

    stu.h

     1 #ifndef STU_H
     2 #define STU_H
     3 
     4 #include<stdio.h>
     5 #include<stdlib.h>
     6 #include<time.h>
     7 
     8 #define LEN 3
     9 #define NUM 5
    10 
    11 typedef struct Student
    12 {
    13     int id;
    14     char name[LEN];
    15     int score[NUM];
    16 }STU;
    17 
    18 //初始化
    19 void id_init(int *val);
    20 void name_init(char *name, int len);
    21 void score_init(int *array, int num);
    22 void stuArray_init(STU *stuArray, int num);
    23 
    24 //打印学生数组信息
    25 void printArray(STU *stuArray, int num);
    26 //求一个学生的成绩总分
    27 int sum(STU stu, int num);
    28 //比较操作
    29 int cmp(const void* left, const void* right);
    30 
    31 #endif

    stu.c

     1 #include "stu.h"
     2 
     3 //初始化
     4 void id_init(int *val)
     5 {
     6     *val = 2000 + rand() % 1000;
     7 }
     8 
     9 void name_init(char *name, int len)
    10 {
    11     int i;
    12     for(i = 0; i < len; i++)
    13     {
    14         if(i == 0)
    15             name[i] = 'A' + rand() % 26;
    16         else
    17             name[i] = 'a' + rand() % 26;
    18     }
    19     name[i] = '';
    20 }
    21 
    22 void score_init(int *array, int num)
    23 {
    24     int i;
    25     for(i = 0; i < num; i++)
    26         array[i] = rand() % 100 + 1;
    27 }
    28 
    29 void stuArray_init(STU *stuArray, int num)
    30 {
    31     int i;
    32     for(i = 0; i < num; i++)
    33     {
    34         id_init(&stuArray[i].id);
    35         name_init(stuArray[i].name,LEN);
    36         score_init(stuArray[i].score,NUM);
    37     }
    38 }
    39 
    40 //求一个学生的成绩总分
    41 int sum(STU stu, int num)
    42 {
    43     int total = 0;
    44     int i;
    45     for(i = 0; i < num; i++)
    46         total += stu.score[i];
    47     return total;
    48 }
    49 
    50 //打印学生数组信息
    51 void printArray(STU *stuArray, int num)
    52 {
    53     int i;
    54     for(i = 0; i < num; i++)
    55         printf("%5d	 %s	 %3d %3d %3d %3d %3d %4d
    ",stuArray[i].id,stuArray[i].name,stuArray[i].score[0],stuArray[i].score[1],stuArray[i].score[2],stuArray[i].score[3],stuArray[i].score[4],sum(stuArray[i],NUM));
    56 }
    57 
    58 //比较操作
    59 int cmp(const void* left, const void* right)
    60 {
    61     int sum_left, sum_right;
    62     STU *stu_left = (STU*)left;
    63     STU *stu_right = (STU*)right;
    64 
    65     sum_left = sum(*stu_left,NUM);
    66     sum_right = sum(*stu_right,NUM);
    67 
    68     if(sum_left < sum_right)
    69         return 1;
    70     else if(sum_left == sum_right)
    71         return 0;
    72     else
    73         return -1;
    74 }

    main.c

     1 #include "stu.h"
     2 
     3 int main()
     4 {
     5     STU array[5];
     6     srand(time(NULL));
     7     stuArray_init(array,5);
     8     printArray(array,5);
     9     printf("
    --------------------排序后------------------
    
    ");
    10     qsort(array,5,sizeof(STU),&cmp);
    11     printArray(array,5);
    12     system("pause");
    13     return 0;
    14 }
  • 相关阅读:
    vscode编辑器markdow文档导出为pdf
    js 原型
    部分前端知识总结
    js获取本地ip
    angular项目线上地址跳转或刷新报错的解决
    一种js异步处理方式
    初始化git repo到远程
    点击任意位置隐藏键盘
    UIButton设置按钮点击范围大于可视范围
    Unknown class xxx in Interface Builder file. / NSUnknownKeyException
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4764349.html
Copyright © 2011-2022 走看看