weixin_57649440 2021-05-29 23:44 采纳率: 66.7%
浏览 55
已采纳

c语言编程的小问题,按要求补充代码

#include <stdio.h>

#define N 30

typedef struct student

{

char name[10];

int score;

}STU;

int main(int argc, const char * argv[]) {

    // insert code here...

    STU s[N];

    int n=0;

    int i;

    int n1=0;

    int n2=0;

    int n3=0;

    int n4=0;

    int n5=0;

    int n6=0;

    int total=0;

    float aver;

    printf("请输入学生姓名与成绩:");

    do

    {

    scanf("%s",&s[n].name);

    scanf("%d",&s[n].score);

    n++;

    }while(s[n-1].score>=0);

    n--;

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

    {

    total+=s[i].score;

    if(s[i].score<60)

    n1++;

    else if(s[i].score<70)

    n2++;

    else if(s[i].score<80)

    n3++;

    else if(s[i].score<90)

    n4++;

    else

    n5++;

    }

    printf("不及格人数为:%d,名单如下:\n",n1);

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

    {

    if(s[i].score<60)

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

    }

    aver=(float)total/n;

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

    {

    if(s[i].score>aver)

    n6++;

    }

    printf("平均分为:%.1f,分数在平均分以上的人数为:%d,名单如下:\n",aver,n6);

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

    {

    if(s[i].score>aver)

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

    }

    printf("分数段\t学生人数\n");

    printf("<60\t%d(%.1f%%)",n1,(float)n1*100/n);

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

    printf("*");

    printf("\n");

    printf("60~69\t%d(%.1f%%)",n2,(float)n2*100/n);

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

    printf("*");

    printf("\n");

    printf("70~79\t%d(%.1f%%)",n3,(float)n3*100/n);

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

    printf("*");

    printf("\n");

    printf("80~89\t%d(%.1f%%)",n4,(float)n4*100/n);

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

    printf("*");

    printf("\n");

    printf(">=90\t%d(%.1f%%)",n5,(float)n5*100/n);

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

    printf("*");

    printf("\n");

    return 0;

补充一下这个条件

这个代码怎么加进去:用一维数组作为函数参数,编程打印某班一门课成绩的最高分及其学号。

  • 写回答

5条回答 默认 最新

  • qfl_sdu 2021-05-30 00:04
    关注

    代码如下:如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #define N 30
    typedef struct student
    {
    	char name[10];
    	int score;
    }STU;
    //返回分数最高的学生的索引
    int MaxScore(struct student ary[],int size)
    {
    	int index = 0;
    	int i = 0;
    	int max = ary[0].score;
    	for (; i <size; i++)
    	{
    		if (ary[i].score > max)
    		{
    			max = ary[i].score;
    			index = i;
    		}
    	}
    	printf("最高成绩学生:%s,成绩:%d\n",ary[i].name,ary[i].score);
    	return i;
    }
    
    int main(int argc, const char * argv[]) 
    {
    	// insert code here...
    	STU s[N];
    	int n=0;
    	int i;
    	int n1=0;
    	int n2=0;
    	int n3=0;
    	int n4=0;
    	int n5=0;
    	int n6=0;
    	int total=0;
    	float aver;
    	printf("请输入学生姓名与成绩:");
    	do
    	{
    		scanf("%s",&s[n].name);
    		scanf("%d",&s[n].score);
    		n++;
    	}while(s[n-1].score>=0);
    	n--;
    	for(i=0;i<n;i++)
    	{
    		total+=s[i].score;
    		if(s[i].score<60)
    			n1++;
    		else if(s[i].score<70)
    			n2++;
    		else if(s[i].score<80)
    			n3++;
    		else if(s[i].score<90)
    			n4++;
    		else
    			n5++;
    	}
    
    	printf("不及格人数为:%d,名单如下:\n",n1);
    	for(i=0;i<n;i++)
    	{
    		if(s[i].score<60)
    			printf("%s\t %d\n",s[i].name,s[i].score);
    	}
    
    	aver=(float)total/n;
    	for(i=0;i<n;i++)
    	{
    		if(s[i].score>aver)
    			n6++;
    	}
    
    	printf("平均分为:%.1f,分数在平均分以上的人数为:%d,名单如下:\n",aver,n6);
    
    	for(i=0;i<n;i++)
    	{
    		if(s[i].score>aver)
    			printf("%s\t %d\n",s[i].name,s[i].score);
    	}
    
    	printf("分数段\t学生人数\n");
    	printf("<60\t%d(%.1f%%)",n1,(float)n1*100/n);
    
    	for(i=0;i<n1;i++)
    		printf("*");
    
    	printf("\n");
    	printf("60~69\t%d(%.1f%%)",n2,(float)n2*100/n);
    	for(i=0;i<n2;i++)
    		printf("*");
    	printf("\n");
    	printf("70~79\t%d(%.1f%%)",n3,(float)n3*100/n);
    	for(i=0;i<n3;i++)
    		printf("*");
    	printf("\n");
    	printf("80~89\t%d(%.1f%%)",n4,(float)n4*100/n);
    
    	for(i=0;i<n4;i++)
    		printf("*");
    	printf("\n");
    	printf(">=90\t%d(%.1f%%)",n5,(float)n5*100/n);
    	for(i=0;i<n5;i++)
    		printf("*");
    	printf("\n");
    
    	//修改:增加最高成绩输出
    	MaxScore(s,n);
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写