程序高手帮个忙,新手实在是做不来了。C语言程序设计,做任意一个就行了。谢谢了!!!各位大神!

2.建立一个学生信息链表,每个结点包括:学号、姓名、成绩。实现链表的建立、显示和查询。查询是指输入一个学号,如果链表中存在该学号的的结点,则显示此结点的数据。
⑴提示
采用动态分配内存,。由于结点结构中包含三个域,可以采用C语言中的结构体类型实现。
struct Node //定义一个节点结构体类型
{ long num;
char name[10];
float score;
struct Node *next;
};
⑵要求
 在程序中定义了三个函数:
void init(); //初始化链表
void create(); //创建学生成绩信息链表
void disp(); //输出链表信息
 定义一个查询函数void search(int number),其中,参数是学生的学号。如果链表中存在该学号的的结点,则显示此结点的数据,否则输出没有该学号的结点。
 定义一个删除函数void del(int number),用于删除指定学号的结点。如果链表中存在该学号的的结点,则删除该结点,否则显示链表中没有该学号的结点。
3.有10名学生的数据(包括学号、姓名、和三门课程的成绩即,数学、语言、英语)编写程序,把这些学生的数据存放在文件“score.txt”中,然后在读取文件,把有不及格的学生数据存放到文件“bjg.txt”中,成绩都合格的学生数据存放到文件“jg.txt”中。然后再把文件中的信息分别显示在屏幕上。
⑴提示:先定义一个结构体类型
struct Node //定义一个节点结构体类型
{ long num;
char name[10];
float math;
float chinese;
float english;
};

⑵要求:在屏幕上显示及格“jg.txt”和不及格“bjg.txt”学生信息时要求有表头,格式如下:
成绩都合格的学生信息:
学号 姓名 数学 语文 英语
20083159 张三 67 89 90
20083170 李四 71 88 91
…………………………………………………………

成绩有不及格的学生信息:
学号 姓名 数学 语文 英语
20083134 王三 61 55 90
20083123 二马 50 84 71
…………………………………………………………

要求①用流程图表示出算法②代码编写(程序代码必须要有一定的注释)③运行结果的截图。

我回答第三题

#include <stdio.h>

#include <stdlib.h>

#include <malloc.h>//如果用链表的话申请空间要用这个头文件,本方法可以不用

#include <string.h>

#pragma warning(disable:4996)//该语句是屏蔽第4996号警告,可不要,

typedef struct Node

{

long num;

char name[10];

float math;

float chinese;

float english;

int flag;//判定是否及格,最好用bool型

}SCORE,*PSCORE;//对于本题可以不用定义结构体的

void main()

{

FILE* fp;

FILE* fp_write_jg;

FILE* fp_write_bjg;

char buf[1000];

int i=0;

int j=0;

int k=0;

SCORE score[10];//因为只有十个学生的成绩所以就直接定义了一个数组,否则的话可以定义链表

memset(buf,0x00,sizeof(buf));//buf初始化

for (;i<10;i++)//name初始化

{

memset(score[i].name,0x00,sizeof(score[i].name));

}

if ((fp=fopen("e:\\score.txt","r"))==NULL)//打开文件score.txt

{

printf("不能找到score.txt\n");

return;

}

if ((fp_write_jg=fopen("e:\\jg.txt","w+"))==NULL)

{

printf("不能打开jg.txt");

return;

}

if ((fp_write_bjg=fopen("e:\\bjg.txt","w+"))==NULL)

{

printf("不能打开bjg.txt");

return;

}

if (fgets(buf,1000,fp)==NULL)//读取文件score.txt中的内容

{

printf("打开文件score.txt出错\n");

return;

}

do //前几个while循环为读取文件中的数据,然后将它存储在结构体中

{

i=0;

while (buf[i]!=' ')

{

i++;

}

score[j].num=atol(buf);

while (buf[++i]!=' ')

{

score[j].name[k++]=buf[i];

}

score[j].math=(float)atof(&(buf[i]));

while (buf[++i]!=' ')

{

;

}

score[j].chinese=(float)atof(&(buf[i]));

while (buf[++i]!=' ')

{

;

}

score[j].english=(float)atof(&(buf[i]));

if (score[j].math<60||score[j].chinese<60||score[j].english<60)

{

score[j].flag=-1;//不及格

fputs(buf,fp_write_bjg);//将不及格的信息存储起来

}

else

{

score[j].flag=1;//及格

fputs(buf,fp_write_jg);//将及格的信息存储起来

}

k=0;

j++;

} while (fgets(buf,1000,fp));

//将信息输出

printf("成绩都合格的学生的信息:\n");

printf("学号\t\t姓名\t\t数学\t\t语文\t\t英语\n");

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

{

if (score[i].flag==1)

{

printf("%ld\t\t%s\t\t%f\t%f\t%f\n",score[i].num,score[i].name,

score[i].math,score[i].chinese,score[i].english);

}

}

printf("成绩都不合格的学生的信息:\n");

printf("学号\t\t姓名\t\t数学\t\t语文\t\t英语\n");

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

{

if (score[i].flag==-1)

{

printf("%ld\t\t%s\t\t%f\t%f\t%f\n",score[i].num,score[i].name,

score[i].math,score[i].chinese,score[i].english);

}

}

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-02
又是抄作业的垃圾
相似回答