注册 登录
编程论坛 C语言论坛

班里一个人都不会,谁能救救孩子

kuuhaku 发布于 2021-11-30 21:36, 1694 次点击
1、编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。


2、在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。


3、计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。学生包含信息有:姓名、学号、年龄、所在小组、成绩。成绩和具体信息自行设置
4 回复
#2
kuuhaku2021-11-30 23:27
#include<stdio.h>
struct student
{
 char name;
 int num;
 float score[3];
}stu[5];
void print(struct student s[]);
int main()
{
 int i,j;
 for(i=0;i<5;i++){
  printf("请输入第%d名学生的学号,姓名,成绩:",i+1);
  scanf("%d %s",&stu[i].num,stu[i].name);
  for(j=0;j<3;scanf("%f",&stu[i].score[j++]));
 }
 print(stu);
 return 0;
}
void print(struct student s[])
{
 int i,j;
 for(i=0;i<5;printf("\n"),i++){
  printf("%d %-10s",s[i].num,s[i].name);
  for(j=0;j<3;printf("%.2f",s[i].score[j++]));
 }
}
#3
rjsp2021-12-01 09:05
程序代码:

#include<stdio.h>

struct student
{
    unsigned num; // 题目没交代num是什么类型,那我就假设它是一串正整数
    char name[20]; // 题目没交代名字最长是多少,那我就瞎写一个
    float score[3];
};

void input( struct student s[], size_t n );
void print( const struct student s[], size_t n );

int main( void )
{
    struct student s[5];

    const size_t n = sizeof(s)/sizeof(*s);
    printf( "请输入%zu位学生的学号,姓名,成绩:\n", n );
    input( s, n );

    printf( "这%zu位学生的学号,姓名,成绩分别是:\n", n );
    print( s, n );
}

void input( struct student s[], size_t n )
{
    for( size_t i=0; i!=n; ++i )
    {
        scanf( "%u%19s", &s[i].num, s[i].name );
        for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
            scanf( "%f", &s[i].score[j] );
    }
}

void print( const struct student s[], size_t n )
{
    for( size_t i=0; i!=n; ++i )
    {
        printf( "%u %s", s[i].num, s[i].name );
        for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
            printf( " %g", s[i].score[j] );
        putchar( '\n' );
    }
}
#4
kuuhaku2021-12-01 17:59
回复 3楼 rjsp
谢谢
#5
白白白小白2021-12-02 02:15
暂时我只能写出这样的代码.

程序代码:
/*1、编写一个函数print,打印一个学生的成绩数组,
该数组中有5个学生的数据记录,每个记录包括num,name,score[3],
用主函数输入这些记录,用print函数输出这些记录。

2、在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。

3、计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。
学生包含信息有:姓名、学号、年龄、所在小组、成绩。成绩和具体信息自行设置
*/

#include<stdio.h>
struct student   //定义结构体
{
    char name[5];//姓名
    int age;//年龄
    int group;//小组
    int num;//学号
    float grade1,grade2,grade3;//成绩
    double average;//平均分
    double sum;//总分
};

int main()
{
    struct student stu[5];
    int i,j,cnt=0,grade1=0,grade2=0,grade3=0,age=0,group=0,num=0;
    double average=0,sum=0;
   
    for(i=0;i<5;i++)
    {
        //请输入所有学生的信息,如zhang 1 1 18 60 60 60,输完一个信息后空格直接输入下一个直至输完回车
        scanf("%s %d %d %d %f %f %f",stu[i].name,&stu[i].num,&stu[i].group,&stu[i].age,&stu[i].grade1,&stu[i].grade2,&stu[i].grade3);
        for(j=0;j<5;j++)
        {
            
            stu[j].sum=stu[i].grade1+stu[i].grade2+stu[i].grade3;//总分
            stu[j].average=stu[j].sum/3.0;//平均分
            if(stu[j].sum<140)
                cnt++;   //低于140分的人数
            
//输出 姓名,学号,小组,年龄,成绩1,成绩2,成绩3,总分,平均分
            printf("%-6s %2d %2d %2d %6.2f %6.2f %6.2f %6.2f %6.2f \n",stu[i].name,stu[i].num,stu[i].group,stu[i].age,stu[i].grade1,stu[i].grade2,stu[i].grade3,stu[j].sum,stu[j].average);break;
        }
    }
    printf("低于140分的人数是%d",cnt);
    printf("\n");
   
    return 0;   
}
1