C语言练习

            一.现有10名学生,每名学生的信息包括:学号、姓名、数学、外语和程序设计基础3门课程的成绩。本次综合训练任务要求如下:

  1. 用结构体存放学生信息;
  2. 从键盘输人10个学生数据;
  3. 输出3门课程总平均成绩;
  4. 最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。                                              分析:由于是使用结构体来存放数据而且是十个人的数据(人数较多),所以考虑到用结构体数组
  5. //基本骨架
    
    #include<stdio.h>
    struct str{int xuehao:char name[20];int match;int english ;int p;}
    struct str s[10];//结构体数组
    void first(int*s)//输入十个人的数据
    {scanf("%d",&(s->xuehao));
    scanf("%s",s->name);
    scanf("%d",&(s->match));
    scanf("%d",&(s->english));
    scanf("%d",&(s->p));
    }
    int main()
    {
    int a=0;
    while(a<10)//循环输入十组数据
    {
    first(&s[a]);
    }
    return 0;
    }
    接下来就是获取三门课程的总的成绩,这需要每次进入first函数的时候都计算一下各自的总分,考虑到变量的作用域,此次应该使用全局变量,所以要参加mid(个人总成绩),和sum(十个人的总成绩)第二次添加的内容结尾都有!!
    #include<stdio.h>
    struct str{int xuehao:char name[20];int match;int english ;int p;}
    struct str s[10];//结构体数组
    int mid=0,sum=0;//第二次参加的用于计算总成绩的变量!!
    void first(int*s)//输入十个人的数据
    {scanf("%d",&(s->xuehao));
    scanf("%s",s->name);
    scanf("%d",&(s->match));
    scanf("%d",&(s->english));
    scanf("%d",&(s->p));
    mid=s->match+s->english+s->p;//计算个人总成绩!!
    num=mid+num;//计算总成绩!!
    }
    int main()
    {
    int a=0;
    while(a<10)//循环输入十组数据
    {
    first(&s[a]);
    }
    printf("计算总成绩的平均值为%d",num/30);!!
    return 0;
    }
    寻找最高个人成绩并输出->这说明我们需要先找出最高分,再找出最高分所对应的人。为了更好的找到个人最高分是谁,在结构体中加入总分项目,此次添加的代码最后以??结尾
    #include<stdio.h>
    struct str{int xuehao:char name[20];int match;int english ;int p;int zongfen;}
    struct str s[10];//结构体数组
    int mid=0,sum=0;//第二次参加的用于计算总成绩的变量!!
    int c=0;//用于寻找最大值??
    void first(int*s)//输入十个人的数据
    {scanf("%d",&(s->xuehao));
    scanf("%s",s->name);
    scanf("%d",&(s->match));
    scanf("%d",&(s->english));
    scanf("%d",&(s->p));
    mid=s->match+s->english+s->p;//计算个人总成绩!!
    s->zongfen=mid;//存储最大值??
    num=mid+num;//计算总成绩!!
    if(c<mid)//以下是用于寻找最大的个人成绩并确定最高成绩。??
    c=mid;
    else
    ;
    }
    int main()
    {
    int a=0;
    while(a<10)//循环输入十组数据
    {
    first(&s[a]);
    }
    printf("计算总成绩的平均值为%d",num/30);!!
    for(a=0;a<10;a++)//寻找最高的个人成绩者??
    if(mid==s[a].zongfen)
    printf("学号%d 姓名%s 数学%d 英语%d 程序设计%d", s[a].xuehao,s[a].name,s[a].match,s[a].english,s[a].p);//打印分数最高者的数据
    else
    ;
    return 0;
    }
    总结:完整代码(代码变量名与以上有所改变)
    //源代码
    struct stu { int xuehao; char name[20]; int match; int el; int pe;int sm };//创建结构体
    struct stu s[10];//创建结构体数组
    int a = 0,n=0;//全局变量
    void tm(struct stu* p, int* a, int* x)//用于记录结10个人的数据
    {
    	scanf("%d", &(p->xuehao));//记录学号
    	scanf("%s", p->name); //记录名字
    	scanf("%d", &(p->match)); //记录数学
    	scanf("%d", &(p->el)); //记录英语
    	scanf("%d", &(p->pe)); //记录程序设计
    	x=p->match + p->el + p->pe;//记录每个人的总成绩
    	p->sm = x;//总成绩放到每一个结构体变量内
    	*a = *a+x;//用于求解全部同学总分
    }
    int main()
    {
    	int x = 0,m=0,h=0,e=0;//创建变量
    	int i = 0,c=0,l=0; //创建变量
    	for (i = 0; i < 10; i++)//循环用于记录结10个人的数据
    	{tm(&s[i], &a,&x);
    	if (x > l)//判断用于获得10个人中总分最高的分数
    	{
    		l = x;
    	}
    	else
    		;
    	}
    	for (m = 0; m < 10; m++)//查找出最高分数是第几名
    	{
    		if (s[i].sm != l)
    			e++;
    		else
    			;
    		
    	}
    	c = a / 30;// 计算3门课程总平均成绩
    	printf("3门课程总平均成绩%d", c);//打印3门课程总平均成绩
    	printf("学号%d 姓名%s 数学%d 英语%d 程序设计%d", s[e].xuehao,s[e].name,s[e].match,s[e].el,s[e].pe);//打印分数最高者的数据
    	return 0;
    }
    

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值