| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 504 人关注过本帖
标题:[求助]删除的人还是不对啊~~~
只看楼主 加入收藏
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
 问题点数:0 回复次数:4 
[求助]删除的人还是不对啊~~~

#include"Student.h"
void main()
{

int count=0,count1=0;
int i=0;
char c;
c='y';
display1();
printf("是否要进入本系统?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')goto label ;
else {system("cls");};
label1:
{system("cls");};
printf("请输入学员信息:\n");
do{
c=' ';
stu[i++]=Add();
printf("还要继续输入吗?<y or n>");
fflush(stdin);
c=getchar();
count++;
}while(c=='y');
printf("排序前的学员成绩如下:\n");
display(stu);
printf("排序后的学员成绩如下:\n");
paixu(stu,&count);
display(stu);
do
{
printf("是否要插入新学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
printf("插入新学员后学员的信息如下:\n");
display(stu);
}while(c=='y');
count+=count1;
paixu(stu,&count);



do
{
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else
{
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(&stu[n-1]);\*这里好像删除的人还是不对啊·~多加几个人删的就不是那个人了 */

}
printf("删除后学员的信息如下:\n");
display(stu);
}while(c=='y');

printf("您还需要继续输入吗?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')goto label;
else goto label1 ;
label:exit(0);
}


//『#include"Student.h"』
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define N 50

//声明学员结构
struct Student
{
int flag;
char xuehao[10];
char name[10];
float score[3];
float average[N];
}stu[N],*p;
void display1()
{
for(int i=0;i<8;i++)
{
for(int j=0;j<55555555;j++);
printf("☆★☆★☆☆★☆★☆☆★☆★☆☆★☆★☆");
}
printf("\n\n\n\n\n");
printf("\n\n\n\t☆★☆★☆『欢迎使用学员信息系统』☆★☆★☆\n\n");
printf("\n\n\n\n\n");
for(i=0;i<8;i++)
{
for(int j=0;j<55555555;j++);
printf("☆★☆★☆☆★☆★☆☆★☆☆★☆★☆☆★");
}
printf("\n");
}
void paixu(Student stu[]);
//添加学员信息
Student Add()
{
Student stu;
stu.flag=1;
printf("学号:");
scanf("%s",stu.xuehao);
printf("姓名:");
scanf("%s",stu.name);
printf("三门成绩:\n");
printf("成绩1: ");
scanf("%f",&stu.score[0]);
printf("成绩2: ");
scanf("%f",&stu.score[1]);
printf("成绩3: ");
scanf("%f",&stu.score[2]);
return stu;
}
//计算平均成绩
float pingjun(Student stu)
{
stu.average[N]=(stu.score[0]+stu.score[1]+stu.score[2])/3;
return stu.average[N];
}
//显示学员信息
void display(Student stu[N])
{
printf("flag\t学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for(int i=0;i<N;i++)
{
if(stu[i].flag==0)continue;
printf("%d\t",stu[i].flag);
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%-6.2f\t%-6.2f\t%-6.2f\t",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
printf("%-6.2f\t\n",pingjun(stu[i]));
}
}

//删除某学员
void Delete(Student *stu)
{
stu->flag=0;
}
//排序学员组
void paixu(Student stu[],int *count)
{
Student temp[N]={0};
for(int i=0;i<*count;i++)
{
for(int j=0;j<*count-i-1;j++)
{
if(pingjun(stu[j])<pingjun(stu[j+1]))
{
temp[j]=stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp[j];
}
}
}
}

[此贴子已经被作者于2006-9-17 23:56:24编辑过]

搜索更多相关主题的帖子: 删除 
2006-09-17 23:54
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
太长.还没注释.估计没几个人会看!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-09-18 09:00
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 

哦。呵呵,已经解决·~原因是不能按下标传值~~


" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-18 10:38
cnrainboy
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2006-8-27
收藏
得分:0 
LZ在什么地方看到这题目的??貌似和我的一样!!??郁闷
2006-09-18 15:02
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 

呵呵,现在把题全部帖出来:(加过注释了)
#include"Student.h"
void main()
{

int count=0,count1=0;
int i=0;
char c;
c='y';
display1();
printf("是否要进入本系统?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')goto label ; //如果不是,结束~
else {system("cls");};
label1:
{system("cls");};
//录入学员信息
printf("请输入学员信息:\n");
do{
c=' ';
stu[i++]=Add();
printf("还要继续输入吗?<y or n>");
fflush(stdin);
c=getchar();
count++;
}while(c=='y');
printf("排序前的学员成绩如下:\n");
display(stu);
printf("排序后的学员成绩如下:\n");
paixu(stu,&count);
display(stu);
//插入学员信息
do
{
printf("是否要插入新学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
}while(c=='y');
count+=count1; //需要累加插入学员时的次数
paixu(stu,&count);

printf("插入新学员后学员的信息如下:\n");
display(stu);

//删除学员信息
do
{
char n[10];
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else
{
printf("请输入要删除学员的学号:");
fflush(stdin);
gets(n);
Delete(stu, n,&count);
}
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
printf("您还需要继续输入吗?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')goto label; //如果不是,goto结束~
else goto label1 ; //如果是,继续开始的标签
label:exit(0);
}

#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#define N 50

//声明学员结构
struct Student
{
int flag;
char xuehao[10];
char name[10];
float score[3];
float average[N];
}stu[N];
void display1()
{
for(int i=0;i<8;i++)
{
for(int j=0;j<55555555;j++);
printf("☆★☆★☆☆★☆★☆☆★☆★☆☆★☆★☆");
}
printf("\n\n\n\n\n");
printf("\n\n\n\t☆★☆★☆『欢迎使用学员信息系统』☆★☆★☆\n\n");
printf("\n\n\n\n\n");
for(i=0;i<8;i++)
{
for(int j=0;j<55555555;j++);
printf("☆★☆★☆☆★☆★☆☆★☆☆★☆★☆☆★");
}
printf("\n");
}
void paixu(Student stu[]);
//添加学员信息
Student Add()
{
Student stu;
stu.flag=1;
printf("学号:");
scanf("%s",stu.xuehao);
printf("姓名:");
scanf("%s",stu.name);
printf("三门成绩:\n");
printf("成绩1: ");
scanf("%f",&stu.score[0]);
printf("成绩2: ");
scanf("%f",&stu.score[1]);
printf("成绩3: ");
scanf("%f",&stu.score[2]);
return stu;
}
//计算平均成绩
float pingjun(Student stu)
{
stu.average[N]=(stu.score[0]+stu.score[1]+stu.score[2])/3;
return stu.average[N];
}
//显示学员信息
void display(Student stu[N])
{
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for(int i=0;i<N;i++)
{
if(stu[i].flag==0)continue;//屏蔽没有输入信息的学员
printf("%s\t",stu[i].xuehao);
printf("%s\t",stu[i].name);
printf("%-6.2f\t%-6.2f\t%-6.2f\t",stu[i].score[0],stu[i].score[1],stu[i].score[2]);
printf("%-6.2f\t\n",pingjun(stu[i]));
}
}

//排序学员组
void paixu(Student stu[],int *count) //排序好像没什么要解释的~
{
Student temp[N]={0};
for(int i=0;i<*count;i++)
{
for(int j=0;j<*count-i-1;j++)
{
if(pingjun(stu[j])<pingjun(stu[j+1]))
{
temp[j]=stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp[j];
}
}
}
}

//查找要删除的某学员的位置
Student * Search(Student *j, char *s,int *count)//定义函数为指针类型
{
/* 把要删除的学员的学号与数组中每一位学员 的学号进行比较,
要找到就退出并返回其所在位置,否则返回为空! */

Student *p;
p=stu;
while( strcmp(p->xuehao, s)!=0 && p<=(j+(*count))) //比较两个学员的学号,j+(*count)指向最后的一个学员
{
p++; //通过指针p的移动检索学员学号
}
if( p <= (j+(*count)) ) //如果检索到返回p
{
return p;
}
else
return 0; //如果没有,返回0
}
//删除某学员
void Delete(Student *j, char *s,int *count)
{
Student *p, *q;
q=j+(*count);
p=Search(j, s, count); //p指向函数返回值
if(p)
{
for(;p<=q;p++)
{
*p=*(p+1); //数组内部位移~
}
}
else
printf("\n学员信息表中不存在该学员!\n");
}
不对的对方请指出!谢谢






" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-18 16:51
快速回复:[求助]删除的人还是不对啊~~~
数据加载中...
 
   



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

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