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;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • weixin_57649440 2021-05-30 22:22
    关注

     

    评论
  • qfl_sdu 2021-05-30 22:26
    关注
    #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[index].name,ary[index].score);
    	return index;
    }
    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;
    }
    
    评论
  • weixin_57649440 2021-05-30 23:14
    关注
    #include <stdio.h>
    #define N 30
    typedef struct student
    {
        char name[10];
        long studentID;
        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,成绩:%d\n",ary[index].name,ary[index].studentID,ary[index].score);
        return index;
    }
    int main(int argc, const char * argv[])
    {
        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].studentID);
            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\t %d\n",s[i].name,s[i].studentID,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;
    }
    评论
  • weixin_57649440 2021-05-30 23:48
    关注

     

    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 Erasure Code纠删码表
  • ¥15 用vite创建的vue3项目,404重定向不起作用??
  • ¥15 关于#c语言#的问题:一个球从80米高度自由落下,每次落地后反弹的高度为原高度的一半计算6次小球反弹的高度.(反弹结果取整,使用走走for循环结构)
  • ¥15 SurfaceControl的screenshot问题
  • ¥15 基于51单片机的oled菜单代码,要C语言,模块化编程!
  • ¥15 JAVAswing,设计一个扑克牌什么的
  • ¥50 python ctypes调用dll实现分析
  • ¥40 用python解决数据统计问题
  • ¥100 是否有方案能通过抓包分析得到移动应用的名称和包名信息?
  • ¥15 opencv检测不到轮廓