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

#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 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];
}
}
}
}
void main()
{

int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
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=getchar())
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
else
{
break;
}
}while(c=='y');
count+=count1;
paixu(stu,&count);

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

do
{
Student stu[50];
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(stu+n);
}
else break;
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}
帮忙看看啊,~~昨天苦恼到今天~~~

搜索更多相关主题的帖子: 声明 信息 include 三门 
2006-09-15 14:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用honkerman在2006-9-15 14:08:34的发言:

#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 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];
}
}
}
}
void main()
{

int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
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 //不管你输入什么,都至少做一次插入运算,要改成while
{
printf("是否要插入新学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
else
{
break;
}
}while(c=='y');
count+=count1;
paixu(stu,&count);

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

do
{
Student stu[50]; //局部变量不能改变原来的stu[]数组.
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(stu+n);
}
else break;
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}
帮忙看看啊,~~昨天苦恼到今天~~~


倚天照海花无数,流水高山心自知。
2006-09-15 15:04
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 
以下是引用honkerman在2006-9-15 14:08:34的发言:

#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 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];
}
}
}
}
void main()
{

int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
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=getchar())
{
printf("请输入要插入的学员的信息:\n");
stu[i++]=Add();
count1++;
}
else
{
break;
}
}while(c=='y');
count+=count1;
paixu(stu,&count);

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

do
{ //写多了一个,不该写的~~~删了还是没用
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c=getchar())
{
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(stu+n);
}
else break;
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}
帮忙看看啊,~~昨天苦恼到今天~~~


" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-15 15:28
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 
我试了一下,输入3个人的时候是可以删除一个~~输入2个就不行~~

" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-15 15:48
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分: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],*p;
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];
}
}
}
}
void main()
{

int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
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
{
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else {
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(&(stu[n-1]));
}
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}


倚天照海花无数,流水高山心自知。
2006-09-15 15:55
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 
以下是引用nuciewth在2006-9-15 15:55:41的发言:

#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 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];
}
}
}
}
void main()
{

int count=0,count1=0;
int i=0;
printf("请输入学员信息:");
char c;
c='y';
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
{
int n;
printf("是否要删除某学员?<y or n>");
fflush(stdin);
c=getchar();
if(c!='y')break;
else {
printf("请输入要删除第几个学员:");
scanf("%d",&n);
Delete(&(stu[n-1]));//好了,这里可以注释一下吗?
}
}while(c=='y');
printf("删除后学员的信息如下:\n");
display(stu);
}

谢谢哈~~


" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-15 16:06
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
函数的参数类型要匹配的,行参是结构体指针当然实参要传地址了,至于n-1是因为数组从0开始存储,删掉第n 个其实是删地第n-1 个.

倚天照海花无数,流水高山心自知。
2006-09-15 16:47
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 

了解了,谢谢~~


" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-15 16:54
快速回复:[求助]看看偶写滴为什么删不掉人?
数据加载中...
 
   



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

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