读书人

题目: 建一个data.in的问件在里面输

发布时间: 2012-05-01 12:48:58 作者: rapoo

题目: 建一个data.in的问件,在里面输入N个同学的信息:学号、姓名、数学成绩、英语成绩、C语言成绩,格式是一个同学的信息占一排,每项之间空一格(例如:22
题目: 建一个data.in的问件,在里面输入N个同学的信息:学号、姓名、数学成绩、英语成绩、C语言成绩,格式是一个同学的信息占一排,每项之间空一格(例如:22201 mike 80 36 64)。要求我用结构体,然后要达到统计不及格门数超过两门的通同学信息(学号、姓名),并按学号升序排列。

各位帮帮忙吧!

[解决办法]
我有个类似的,你看看,改改就应该可以了!(排序还有点问题)#include <stdio.h>
#define M 5
#define N 3
int i,j,m,cj[M][N];
float pj[M],Pj[N];
void main()
{
float sum(int i);
float mpj(int i);
void sort();
void bjg();
printf(" 学号 k1 k2 k3\n");
for(i=0;i<M;i++)
{
printf(" input number %d cj:",i+1);
for(j=0;j<N;j++)
scanf("%d",&cj[i][j]);
}
printf("\n");
c: printf("\t\t\t1--每个学生的平均成绩\n\t\t\t2--每门课的平均分\n\t\t\t3--按平均分降序排列\n\t\t\t4--不及格学生及其科目\n\t\t\t0--退出\n\n");
printf("\t\t请选择<0--4>:");
scanf("%d",&m);
if(m==1)
{
for(i=1;i<=M;i++)
{
pj[i-1]=sum(i-1)/N;
printf("\t\t学号%d,平均成绩%.2f\n",i,pj[i-1]);
} goto c;
}
if(m==2)
{
for(i=0;i<N;i++)
{
Pj[i]=mpj(i);
printf("\t\t科目%d的平均分%.2f\n",i+1,Pj[i]);
} goto c;
}
if(m==3)
{ sort();goto c;}
if(m==4)
{ bjg();goto c;}
if(m==0);
}
float sum(int i)
{
float s=0.0;
for(j=0;j<N;j++)
s+=cj[i][j];
return(s);
}
float mpj(int i)
{ float s=0.0;
for(j=0;j<M;j++)
s+=cj[j][i];
return(s/M);
}
void sort()
{ int k=0,l;
float t;
for(j=0;j<M; k=j,j++)
{
for(i=j+1;i<M;i++)
if(pj[j]<pj[i])
t=pj[j],pj[j]=pj[i],pj[i]=t,k=i;
printf("\t\t学号%d,平均分%.2f,成绩",k+1,pj[j]);
for(l=0;l<N;l++)
printf("%-3d",cj[k][l]);
printf("\n");
}
}
void bjg()
{
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
if(cj[i][j]<60)
printf("\t\t不及格学号%d,科目%d得分%d\n",i+1,j+1,cj[i][j]);
}
}
[解决办法]
我菜鸟,试着写了下,你看行不。。

data.in中的内容是:

C/C++ code
0005 stuA 80 20 100008 stuB 10 9 90.50003 stuC 50.5 48 560009 stuD 12 4 80001 stuE 4 8 59 

读书人网 >C语言

热点推荐