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 }
  • 相关阅读:
    《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)
    YII 小模块功能
    Netbeans代码配色主题大搜集
    opensuse 启动巨慢 解决方法 90s多
    opensuse 安装 网易云音乐 rpm netease music
    linux qq rpm deb opensuse
    openSUSE 安装 alien
    第一行代码 Android 第2版
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4764349.html
Copyright © 2011-2022 走看看