美文网首页
C语言-修改学生成绩

C语言-修改学生成绩

作者: 广陵周惊蛰 | 来源:发表于2020-01-10 19:40 被阅读0次

    问题描述:修改学生成绩。输入n(n<50)个学生的成绩排名,在输入一个学生的学号、课程以及成绩,在自定义函数中修改该学生指定课程的成绩。

    源代码:

    /*修改学生成绩*/
    /*输入n(n<50)个学生的成绩排名,在输入一个学生的学号、课程以及成绩,在自定义函数中修改该学生指定课程的成绩*/
    #include<stdio.h>
    struct student{
        int num;
        char name[10];
        int computer,english,math;
        double average;
    }; 
    int update_score(struct student *p,int n,int num,int course,int score); 
    int main(void)
    {
        int course,i,n,num,pos,score;
        struct student students[50];/*定义结构数组*/
        
        /*输入*/
        printf("Input n:");
        scanf("%d",&n);
        for(i=0;i<n;i++){
            printf("Input the info of No.%d:\n",i+1);
            printf("number:");
            scanf("%d",&students[i].num);
            printf("name:");
            scanf("%s",students[i].name);
            printf("computer score:");
            scanf("%d",&students[i].computer);
            printf("english score:");
            scanf("%d",&students[i].english);
            printf("math score:");
            scanf("%d",&students[i].math);
            students[i].average=(students[i].computer+students[i].english+students[i].math)/3.0;
            printf("\n");   
        }
    
        /*输入待修改学生信息*/
        printf("Input the number of the students to be update:");
        scanf("%d",&num);
        printf("Choice the course:1-->computer;2-->english;3-->math:");
        scanf("%d",&course);
        printf("Input the new score:");
        scanf("%d",&score);
        
        /*调用函数,修改学生成绩*/
        pos=update_score(students,n,num,course,score);
        
        /*输出修改后的学生成绩*/
        if(pos==-1)
            printf("Not found!\n");
        else
        {
            printf("after update:\n");
            printf("num\tcomputer\tenglish\tmath\n ");
            printf("%d \t %d \t %d \t %d\n",students[pos].num,students[pos].computer,students[pos].english,students[pos].math);
         } 
         return 0;
    }
    
    /*自定义函数,修改学生成绩*/
    int update_score(struct student *p,int n,int num,int course,int score)
    {
        int i,pos;
        for(i=0;i<n;i++,p++)
            if(p->num==num) /*按学号查找*/
            break;
        if(i<n)     /*找到,修改成绩*/
        {
            switch(course){
                case 1: p-> computer=score;break;
                case 2: p-> english=score;break;
                case 3: p-> math=score;break;
            }
            pos=i;/*被修改学生在数组中的下标*/
        }
        else 
            pos=-1;
            return pos; 
    }
    

    运行结果:

    修改学生成绩

    注意事项:

    当p指向结构变量s1时,下面三条语句的效果是一样的:
    1、s1.num=101;
    2、(*p).num=101;
    3、p->num=101;

    在使用结构指针访问结构成员时,通常使用指向运算符->

    程序参数:

    • 输出大小: 151.6787109375 KiB
    • 编译时间: 0.31s

    相关文章

      网友评论

          本文标题:C语言-修改学生成绩

          本文链接:https://www.haomeiwen.com/subject/nmjmactx.html