• 习题13(结构体)


    1、程序改错题:以下程序功能是对任意输入的5个学生成绩中找出最高分成绩及其对应的姓名。

    #include <stdio.h>

    struct student

    {

    char name[10];int score;

    };

    void main()

    {

    int i,max=0;

    struct student st[5],*p=st,*q=st;

    for(i=0;i<5;i++)

    {

    printf("请输入第%d个学生信息(姓名 成绩):",i+1);

    scanf("%s%d",st[i].name,&st[i].score);

    }

    for (;p<st+5;p++)

    {

    if(max<p->score)

    {

    max=p->score;

    q=p;

    }

    }

    printf("成绩最高的学生信息是:%s:%d\n",q->name,q->score);

    }

    2、编写结构体stuscore(学号,英语,C语言,数据库,编译原理)kemuaver(科目,平均分)

      编程实现:根据输入的5个学生的成绩计算出每科的平均分并存入相应的结构体变量中并输出科目及其对应的平均分。

    #include <stdio.h>

    struct stuscore{

    char sid[5];

    int  en;

    int  clan;

    int  data;

    int  bianyi;

    }stc[5]={};

    struct kemuaver

    { char sub[10];

    float  avg;

    }av[4]={"英语:",0,"C语言:",0,"C语言:",0,"编译原理:",0};

    void main()

    {

    int i,sum[4]={0};

    for(i=0;i<5;i++){

    printf("请输入第%d个学生信息(学号 英语 C语言 C语言 编译原理):",i+1);

    scanf("%s%d%d%d%d",stc[i].sid,&stc[i].en,&stc[i].clan,&stc[i].data,&stc[i].bianyi);

    }

    for(i=0;i<5;i++){

    sum[0]+=stc[i].en;

    sum[1]+=stc[i].clan;

    sum[2]+=stc[i].data;

    sum[3]+=stc[i].bianyi;

    }

    for(i=0;i<4;i++){

    av[i].avg=sum[i]/5;

    }

    printf("科的平均成绩是:");

    for(i=0;i<4;i++)

    {

    printf("%s%.2f  ",av[i].sub,av[i].avg);

    }

    printf("\n");

    }

    3、编写结构体stu(学号,姓名,成绩)

       编写函数:对stu结构体类型的n个学生按成绩由高到低排序

       编程实现:任意输入5个学生的信息,按成绩由高到低排序并输出成绩排序后的信息(可任选排序方法实现)。

    #include <stdio.h>

    struct st

    {

        char sid[10];

        char name[10];

        int score;

    } st[5] = {},t[5]={};

    void sort(struct st st[],struct st t[],int len);

    void main()

    {

        int i,j;

        int len=sizeof(st)/sizeof(st[0]);

        for (i = 0; i < 5; i++)

        {

            printf("请输入第%d个学生信息(学号 姓名 成绩):", i+1);

            scanf("%s%s%d", st[i].sid, st[i].name, &st[i].score);

        }

        sort(st,t,len);

        printf("按成绩从高到底排列为:\n");

        for(i=len-1;i>=0;i--){

            printf("%s %s %d\n",t[i].sid,t[i].name,t[i].score);

        }

    }

    void sort(struct st st[],struct st t[],int len)

    {

        int i,j;

        for(i=0;i<len;i++){

            for(j=0;j<len-i;j++){

                if(st[j].score>st[j+1].score){

                    t[j]=st[j];

                    st[j]=st[j+1];

                    st[j+1]=t[j];

                }

            }

        }

    }

    小胖专属学习分享
  • 相关阅读:
    Learning Spark中文版--第三章--RDD编程(1)
    关于learning Spark中文版翻译
    dom4j 常用操作
    Invalid bound statement (not found)
    touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
    docker 运行tomcat 并部署 java web项目
    docker build no such file or directory
    Docker 笔记
    java 自动拆箱 自动装箱
    Ubuntu18 中文乱码 问题 解决
  • 原文地址:https://www.cnblogs.com/xpl520/p/15689813.html
Copyright © 2020-2023  润新知