用C语言输入三个学生的成绩(数学,外语,计算机)姓名学号。要求:输出有挂科的学生的姓名,学号,成绩。

如题所述

#include <stdio.h>

#define N 3  //定义学生个数

#define MATH 0

#define ENGLISH 1

#define COMPUTER 2  //定义成绩数组下标,增加程序可读性

typedef struct _Student    //定义学生类型

{

 long No;

 char name[8];

 float score[3];

}Student,*PStudent;

int check(PStudent stu) //判断是否有挂科

{

 float line = 60.0;

 for(int i = 0;i < 3;i ++)

  if(stu->score[i] < line) return 0; //低于及格线返回0表示不及格

 return 1;

}

void main()

{

 Student students[N];

 for(int i = 0;i < N;i ++)

 {

  printf("输入学生%d的信息:\r\n",i+1);

  printf("学号:");scanf("%ld",&students[i].No);

  printf("姓名:");scanf("%s",&students[i].name);

  printf("\r\n数学成绩:");scanf("%f",&students[i].score[MATH]);

  printf("英语成绩:");scanf("%f",&students[i].score[ENGLISH]);

  printf("计算机成绩:");scanf("%f",&students[i].score[COMPUTER]);

 }

 printf("-------  不及格的学生   -------\r\n\r\n");

 printf("%8s%8s%8s%8s%8s\r\n","学号","姓名","数学","英语","计算机");

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

 {

  if(!check(&students[i]))

  {

   printf("%8ld",students[i].No);

   printf("%8s",students[i].name);

   printf("%8.2f",students[i].score[MATH]);

   printf("%8.2f",students[i].score[ENGLISH]);

   printf("%8.2f",students[i].score[COMPUTER]);

  }

  printf("\r\n");

 }

}

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-21
使用结构体来实现
#include<stdio.h>
main()
{
int i,j;
struct student
{
char name[];
float ach[2];
int num;/*定义一个结构体数组*/
}stu[2]; for(i=0;i<3:i++)
{
scanf("%s "&stu[i].mame[]);
scanf("%d"&stu[i].num);
for(j=0;j<3;j++)
scanf("%f",&ach[j]);
for(j=0;j<3;j++)
{if(stu[i].num[j]<60.0)
{printf("%s "stu[i].mame);
printf("%d"stu[i].num);
printf("该学生的成绩为");}
break;}
for(j=0;j<3;j++)
printf("%d",stu[i].ach[j]);
}
}本回答被提问者和网友采纳
第2个回答  2010-12-22
45451
相似回答