社区
新手乐园
帖子详情
高手救命
gam021
2006-05-10 04:43:16
编写一个程序,完成根据学员姓名查询成绩的功能。查询功能通过函数实现。定义一个学员结构,该结构包括三个成员:姓名,成绩,学号。学员定义一个结构数组,保存所有学员的信息(一共有5个学员);首先录入所有学员的信息,然后调用查询函数获得要查询的学员所处的位置,输出该学员的成绩,并按成绩大小排序。
struct student
{
char name[15];
int score;
int xuhao;
}
...全文
161
4
打赏
收藏
高手救命
编写一个程序,完成根据学员姓名查询成绩的功能。查询功能通过函数实现。定义一个学员结构,该结构包括三个成员:姓名,成绩,学号。学员定义一个结构数组,保存所有学员的信息(一共有5个学员);首先录入所有学员的信息,然后调用查询函数获得要查询的学员所处的位置,输出该学员的成绩,并按成绩大小排序。 struct student { char name[15]; int score; int xuhao; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
逸学堂
2006-05-10
打赏
举报
回复
新手乐园以后再有作业帖,直接转非技术版。
都说学校教育不行了,这到好学生都懒成这个样子,怪不得学校。
jixingzhong
2006-05-10
打赏
举报
回复
参考一下,差不多的东西 ....
总不能完全的实现你的要求的吧 ...
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
typedef struct StuTag{
char id[20];
char name[20];
int age;
float score;
}Stu;
typedef struct NodeTag{
Stu val;
struct NodeTag *next;
}Node,*Link;
typedef void (*FUNP)(Link*,Link);
static FUNP funp;
const int LEN=sizeof(Node);
Link CreateNode()
{
Link node=(Link)malloc(LEN);
if(!node)return NULL;
printf("\n请输入学生信息:");
printf("\n请输入学生ID,姓名,年龄,成绩(以空格分开):\n");
scanf("%s%s%d%f",&node->val.id,node->val.name,\
&node->val.age,&node->val.score);
node->next=NULL;
printf("\n");
return node;
}
void OrderInsertNode(Link *head,Link node)
{
if(!(*head))*head=node;
else if((*head)->val.score>node->val.score)
{
node->next=*head;
*head=node;
}
else
{
Link p=*head,q;
while(p&&p->val.score<=node->val.score)q=p,p=p->next;
if(!p)q->next=node;
else
{
node->next=p;
q->next=node;
}
}
}
void InsertNode(Link *head,Link node)
{
Link p,q;
if(!*head)*head=node;
else
{
p=*head;
while(p)
{
q=p;
p=p->next;
}
q->next=node;
}
}
void CreateLink(Link *head)
{
int n;
Link temp;
printf("请输入总人数\n");
scanf("%d",&n);
while(n--)
{
if(!(temp=CreateNode()))return;
funp(head,temp);
}
}
void DisplayNode(Link node)
{
if(!node)return;
printf("%d %s %d %.2f\n",node->val.id,node->val.name,\
node->val.age,node->val.score);
}
void DisplayLink(Link head)
{
while(head)
{
DisplayNode(head);
head=head->next;
}
printf("\n");
}
void DestroyLink(Link *head)
{
Link p=*head;
while(*head)
{
p=*head;
*head=(*head)->next;
free(p);
}
}
void visit(Link head,float require)
{
if(!head)return;
if(funp==InsertNode)
{
while(head)
{
if(head->val.score>=require)DisplayNode(head);
head=head->next;
}
}
else if(funp==OrderInsertNode)
{
while(head&&head->val.score<require)head=head->next;
DisplayLink(head);
}
}
void FindNode(Link *head,char *name)
{
int mask=0;
Link p=*head;
while(p)
{
if(!strcmp(p->val.name,name))
{
DisplayNode(p);
mask=1;
}
p=p->next;
}
if(!mask)
{
printf("没有找到,请输入这个学生的全部信息:\n");
funp(head,CreateNode());
}
}
void Welcome(int *iChoice)
{
system("CLS");
printf("*********欢迎光临学生管理系统*********\n");
printf("*1.构建学生信息库. *\n");
printf("*2.构建学生信息库(同时排序). *\n");
printf("*3.查看全部学生信息. *\n");
printf("*4.查找学生. *\n");
printf("*5.打印及格者. *\n");
printf("*6.退出. *\n");
printf("**************************************\n");
do scanf("%d",iChoice);
while(*iChoice<1||*iChoice>6);
}
int main()
{
int val,iChoice;
float require;
Link head=0;
char name[20];
funp=InsertNode;
do
{
Welcome(&iChoice);
switch(iChoice)
{
case 1:
funp=InsertNode;
CreateLink(&head);
printf("无序表已经创建好了!\n");
system("PAUSE");
break;
case 2:
funp=OrderInsertNode;
CreateLink(&head);
printf("有序表已经创建好了!\n");
system("PAUSE");
break;
case 3:
DisplayLink(head);
system("PAUSE");
break;
case 4:
printf("请输入学生姓名\n");
scanf("%s",name);
FindNode(&head,name);
system("PAUSE");
break;
case 5:
printf("请输入及格成绩:\n");
scanf("%f",&require);
visit(head,require);
system("PAUSE");
break;
case 6:
DestroyLink(&head);
}
}while(iChoice!=6);
return 0;
}
jixingzhong
2006-05-10
打赏
举报
回复
要期末了,作业自然多了 ...
nasi00
2006-05-10
打赏
举报
回复
最近的作业贴很多阿...
VisualBasic
高手
救命
十招-善用designPatterns
VisualBasic
高手
救命
十招-善用designPatterns
DesignPatterns
DesignPatterns学习文档,适合初中高级程序员使用,收藏
4.1病毒编程
高手
马化腾1
第4章 马化腾:创业初期,每天…4.1 病毒编程
高手
马化腾4.2 马站长创立腾讯4.3 寻呼机情结与
救命
投资4.4 奄奄一息的胖企鹅4.5 网大为的远见4.6
电脑
高手
的140个
电脑
高手
的140个电脑技巧 1. 重装Windows XP不需再激活 2. 如何知道自己的Windows XP是否已激活 3. 关闭zip文件夹功能 4.让Windows XP也能刻ISO文件 5. 登陆界面背景变变色 6.完全卸载XP 7. 系统
救命
有稻草
Linux 26个
救命
指令[代码]
本文详细介绍了Linux系统中26个高频使用的命令行指令,涵盖了文件管理、系统监控、日志分析等多个方面。从基础的clear、ls、pwd到高级的grep、zip/unzip、tar等,每个指令都配有语法、功能、常用选项和实际举例,帮助读者快速掌握Linux命令行的使用技巧。文章还提供了Linux基本常识,如命令的本质、通配符、重定向操作等,适合从小白到运维
高手
的各个层次用户学习。通过本文,读者可以告别对命令行的恐惧,提升工作效率,成为Linux命令行
高手
。
新手乐园
33,319
社区成员
41,771
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章