| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 667 人关注过本帖
标题:[求助]用C语言实现一个排序插入删除的程序
只看楼主 加入收藏
メ『心死了』
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-5-26
收藏
 问题点数:0 回复次数:4 
[求助]用C语言实现一个排序插入删除的程序

我作业是一个要输入学员 的学号,姓名,C语言成绩,JAVA成绩,并按成绩排序,并且可以插入一个学员的资料,而且是有序的,还能删除,删除后顺序不变。

麻烦高手帮下忙。下面是我一个没有编辑完的程序。少个删除和插入。
#include <stdio.h>
#include <string.h>
struct student
{
int no;
char name[20];
float cscore;
float jscore;
double avescore;
}stu[30];
double ave(struct student *);
double cscore(struct student *,int);
double jscore(struct student *,int);
int find(struct student *,int);
void main()
{
int i,count=0,num=0,xiabiao;
char a;
double cchengji,jchengji;
printf("请输入总人数:");
scanf("%d",&num);
if(num>0&&num<=30)
{
for(i=0;i<num;i++)
{
printf("\n学号:");
scanf("%d",&stu[i].no);
printf("\n姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\nC成绩:");
scanf("%f",&stu[i].cscore);
printf("\nJ成绩:");
scanf("%f",&stu[i].jscore);
stu[i].avescore=ave(&stu[i]);
printf("您是否需要继续(y/n)");
scanf("%c",&a);
if (a=='n'||a=='N')
break;


}
}
for(i=0;i<num;i++)
{
printf("\n学号:%d\t姓名:%s\tC成绩:%f\tj成绩:%f\t平均成绩:%f\t",stu[i].no,stu[i].name,stu[i].cscore,stu[i].jscore,stu[i].avescore);
}
cchengji=cscore(stu,num);
jchengji=jscore(stu,num);
printf("c平均成绩为:%f",cchengji);
printf("java平均成绩:%f",jchengji);
xiabiao=find(stu,num);
printf("要查找的学生的详细信息为:\n");
printf("\n学号:%d\t姓名:%s\tC成绩:%f\tj成绩:%f\t平均成绩:%f\t",stu[xiabiao].no,stu[xiabiao].name,stu[xiabiao].cscore,stu[xiabiao].jscore,stu[xiabiao].avescore);

}
double ave(struct student *p)
{
return ((p->cscore)+(p->jscore))/2;


}

double cscore(struct student *p,int count)
{
int i;
double sum=0;
for(i=0;i<count;i++,p++)
{
sum+=p->cscore;
}
return sum/count;
}
double jscore(struct student *p,int count)
{
int i;
double sum=0;
for(i=0;i<count;i++,p++)
{
sum+=p->jscore;
}
return sum/count;
}
int find(struct student *p,int count)
{
char fname[20];
int i;
printf("\n请输入要查找的学生姓名:");
fflush(stdin);
gets(fname);
for(i=0;i<count;i++,p++)
{
if(strcmp(p->name,fname)==0)
break;
}
return i;
}

搜索更多相关主题的帖子: C语言 删除 
2007-05-26 14:31
大年初四
Rank: 1
等 级:新手上路
帖 子:641
专家分:2
注 册:2007-2-21
收藏
得分:0 
好长哦,不会,帮顶

大年初三可怜怜,初四晚上饭一碗
2007-05-26 14:52
无玩过界
Rank: 1
等 级:新手上路
威 望:2
帖 子:246
专家分:0
注 册:2007-2-20
收藏
得分:0 

定义stu[31]为好,其它的不变。


2007-05-26 15:24
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
我对删除发表一下我的看法。
假设我们根据学号删除某个学生的信息。
如果学号=stu[i].no就记下i的位置k=i。
然后输出的时候for(i=0;i<num&&i!=k;i++)
我想就可以了吧。
如果是指针建的系统就好办一些了。


~~我的明天我知道~~
2007-05-26 17:17
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 
以下是引用pinglideyu在2007-5-26 17:17:55的发言:
我对删除发表一下我的看法。
假设我们根据学号删除某个学生的信息。
如果学号=stu[i].no就记下i的位置k=i。
然后输出的时候for(i=0;i<num&&i!=k;i++)
我想就可以了吧。
如果是指针建的系统就好办一些了。

for(i=0;i<num&&i!=k;i++)
如果这样,那么i>k 的那些都输不出来了

你的意思应该是
for(i=0;i<num;i++)
{ if(i == k)
continue;
}


2007-05-26 21:37
快速回复:[求助]用C语言实现一个排序插入删除的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018584 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved