设计一种结构体,用来保存学生信息。假定学生的总人数不超过100人。学生的信息包括学号(<10000的整数)、姓名(长度不超过19的字符串)、三科成绩(整数)以及综合成绩(实数)。除综合成绩外,各项数据

本文介绍了一个使用C语言编写的程序,实现对学生信息(学号、姓名、成绩)的输入、运算(加权平均)及排序操作。功能包括添加学生、计算综合成绩、调整排名和查询特定学生信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#include<string.h>
struct student{
    int num;
    char name[19];
    int ach1;
    int ach2;
    int ach3;
    float z;
};
int main(){
   int i,n=0,N,k,l,o=0,f=0,v=0;
    float r1,r2,r3;
    char na[19];
    struct student b[10000];
    int a;
    for(int y=1;y!=0;y){
    scanf("%d",&a);
    switch(a)
    {
        case 1:
        {
        scanf("%d",&n);
        for(i=0;i<n;i++){
            scanf("%d%s%d%d%d",&b[i].num,&b[i].name,&b[i].ach1,&b[i].ach2,&b[i].ach3);v++;
        }
        }; 
        break;
    case 2:
    scanf("%f%f%f",&r1,&r2,&r3);
    for(i=0;i<n;i++){
        b[i].z=b[i].ach1*1.0*r1+b[i].ach2*1.0*r2+b[i].ach3*1.0*r3;
    }
    break;
    case 3:
    scanf("%d",&N);
    if(N<n){
    for(i=n-1;i>=N-1;i--){
        b[i+1].num=b[i].num;
        strcpy(b[i+1].name,b[i].name);
        b[i+1].ach1=b[i].ach1;
        b[i+1].ach2=b[i].ach2;
        b[i+1].ach3=b[i].ach3;
        b[i+1].z=b[i].z;
    }
        b[N-1].z=0;
        scanf("%d%s%d%d%d",&b[N-1].num,&b[N-1].name,&b[N-1].ach1,&b[N-1].ach2,&b[N-1].ach3);
    }else{
        b[n].z=0;
        scanf("%d%s%d%d%d",&b[n].num,&b[n].name,&b[n].ach1,&b[n].ach2,&b[n].ach3);
    }
    n=n+1;
        break;
    case 4:
    scanf("%d",&k);
    if(k<=n && k>=1){
        for(i=k-1;i<n+1;i++){
        b[i].num=b[i+1].num;
        strcpy(b[i].name,b[i+1].name);
        b[i].ach1=b[i+1].ach1;
        b[i].ach2=b[i+1].ach2;
        b[i].ach3=b[i+1].ach3;
        b[i].z=b[i+1].z;
        }
    
    n=n-1;
        break;}
            else{break;}
    case 5:
    scanf("%d",&l);
    for(i=0;i<n;i++){
        if(l==b[i].num){
            printf("学号:%d 姓名:%s 成绩1:%d 成绩2:%d 成绩3:%d 综合成绩:%.2f\n",b[i].num,b[i].name,b[i].ach1,b[i].ach2,b[i].ach3,b[i].z);
            o=1;
        }
    }
        if(o==0 || v==0){
            printf("Not Found.\n");
        }
            printf("\n");
    o=0;
    break;
    case 6:
    scanf("%s",na);
    for(i=0;i<n;i++){
        if((strcmp(na,b[i].name))==0){
            printf("学号:%d 姓名:%s 成绩1:%d 成绩2:%d 成绩3:%d 综合成绩:%.2f\n",b[i].num,b[i].name,b[i].ach1,b[i].ach2,b[i].ach3,b[i].z);
            f=1;
       
        }
    }
    if(f==0 || v==0)
        printf("Not Found.\n");
        printf("\n");
    f=0;
    break;
    case 7:
    for(i=0;i<n;i++){
            printf("学号:%d 姓名:%s 成绩1:%d 成绩2:%d 成绩3:%d 综合成绩:%.2f\n",b[i].num,b[i].name,b[i].ach1,b[i].ach2,b[i].ach3,b[i].z);
    }
        printf("\n");
        break;
    case 0:
    y=0;
    break;}}
    return 0;
}
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值