| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 619 人关注过本帖
标题:怎样使它自动跳出来?
只看楼主 加入收藏
canon787
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-6-28
收藏
 问题点数:0 回复次数:3 
怎样使它自动跳出来?

#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LENG sizeof(struct student)
#define LEN sizeof(struct subject)
struct student /*先定义一个学生信息的结构体数组*/
{char num[11];
char name[18];
char sex[2];
float score[12];
struct student *next;
};

struct subject
{char subj[20];
int xf[20];
struct subject *next;};int t,m,n;char filename[15],name[15];

float all; /*这是为了解决输入中不可以输入浮点型数据面设立的一个浮点型全局变量*/

struct student *creat(void) /*输入学生信息函数*/
{struct student *head;int i,j;
struct student *p1,*p2; /*学生的信息有指针来存放比较好*/
t=0;

p1=p2=(struct student *)malloc(LENG);
printf("******************************************************\n");
printf("请输入学号:\n");
printf(" ");
scanf("%s",p1->num);getchar();
printf("******************************************************\n");
printf("请输入姓名:\n");
printf(" ");
scanf("%s",p1->name);
printf("******************************************************\n");
printf("请输入性别:\n");
printf(" ");
scanf("%s",p1->sex);
printf("******************************************************\n");
printf("\t各科成绩为:\n\n");
for(i=0;i<m;i++)
{ printf("第%d门成绩:",i+1);
scanf("%f",&all);
(p1->score[i])=all;
printf("******************************************************\n");}

head=NULL;
while(p1->num!="0")
{t=t+1;
if(t==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LENG);
printf("\n\n");
printf("******************************************************\n");
printf("请输入学号:\n");
printf(" ");
scanf("%s",&p1->num); getchar();
if(strcmp(p1->num,"0")==0)break;
printf("******************************************************\n");
printf("请输入姓名:\n");
printf(" ");
scanf("%s",&p1->name);
printf("******************************************************\n");
printf("请输入性别:\n");
printf(" ");
scanf("%s",p1->sex);
printf("******************************************************\n");
printf("\t各科成绩为:\n\n");
for(i=0;i<m;i++)
{ printf("第%d门成绩:",i+1);
scanf("%f",&all);
(p1->score[i])=all;
printf("******************************************************\n");}
}

printf("\n\n");
p2->next=NULL;

return(head);

}

void print1(struct student *head) /*这是打印学生的信息的一个函数*/
{struct student *p; int i;
p=head;
if(head!=NULL)
do
{ printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("学号:");
printf("\t%s\n",p->num);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("姓名:");
printf("\t%s\n",p->name);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("性别:");
printf("\t%s\n",p->sex);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");

for(i=0;i<m;i++)
{ printf("该学生第%d门课原始分为:",i+1);
printf("%f\n",p->score[i]);
}
printf("\n\n");
p=p->next;
}while(p!=NULL);

}

struct student *dele(struct student *head,char num[11]) /*这个是删除学生信息的一个函数*/
{struct student *p1,*p2;
if(head==NULL)
{printf("\n 找不到资料:\n");return(head);}
p1=head;
while ((strcmp(num,p1->num)!=0)&&p1->next!=NULL)

{p2=p1;p1=p1->next;
if(strcmp(p1->num,num)==0)
{if(p1==head)head=p1->next;
else p2->next=p1->next;
printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
printf("你想删除的学号是:%s",num);
t=t-1; }

else printf("错误!\n"); }

return(head);
}

struct student *add(struct student *head,struct student *stu)/*这个是添加学生信息的一个函数*/
{struct student *p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while ((strcmp(p0->num,p1->num)!=0)&&(p1->next!=NULL))
{p2=p1;
p1=p1->next;}
if(strcmp(p0->num,p1->num)>0)
{if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
t=t+1;
return(head);
}

struct student *change(struct student *head,char num[]) /*这个是修改学生信息的函数*/
{struct student *p1,*p2;int i;char ch;float sc[25];
if(head==NULL){printf("\n list null!\n");return(head);}
p1=head;

if(strcmp(num,p1->num)==0) /*一面是定义修改的是学生哪方面的信息*/
{printf("输入1--修改学号,输入2--修改姓名,输入3--修改性别,输入4--修改成绩,请输入:");
scanf("%d",&ch);
printf("请输入修改内容:");

if(ch==1){scanf("%s",p1->num);}
else if(ch==2){scanf("%s",p1->name);}
else if(ch==3)scanf("%s",p1->sex);
else if(ch==4){for(i=0;i<m;i++)
{scanf("%d",&p1->score[i]);printf("\n");}

} }

else{

while((strcmp(num,p1->num)!=0)&&p1->next!=NULL)
{p2=p1;p1=p1->next;p1=p2->next;
if(strcmp(num,p1->num)==0)
{printf("输入1--修改学号,输入2--修改姓名,输入3--修改性别,输入4--修改成绩,请输入:");
scanf("%d",&ch);
printf("请输入修改内容:");

if(ch==1){scanf("%s",p1->num);}
else if(ch==2){scanf("%s",p1->name);}
else if(ch==3)scanf("%s",p1->sex);
else if(ch==4){for(i=0;i<m;i++)
{scanf("%d",&p1->score[i]);printf("\n");}

} }
else
printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
printf("输入错误!!!该学号不存在!:\n");
} }


return(head);
}

void print2(struct student *head,struct subject *head1,char number[12])
{struct student *p;int i,j=1;float h=0,JD[15],XCP,ZXJH=0,ZX=0; struct subject *q2;
q2=head1;
for(i=0;i<m;i++)
{ZX=ZX+q2->xf[i];}
for(i=0;i<m;i++)
{ZXJH=ZXJH+(q2->xf[i]*5);}
p=head;
if(head!=NULL)
{for(i=0;i<n;i++)
{ if (strcmp(number,p->num)==0)
{
for(j=0;j<m;j++)
{
printf(" 第%d门课原始分、绩点:",j+1);
printf("%d ",p->score[j] );
if(p->score[j]>=60)
{ JD[j]=p->score[j]/10-5;
printf("(%f)",JD[j]); }
else { JD[j]=0;printf("%f",JD[j]); }

h=((q2->xf[j])*JD[j])+h; }
printf("平均学分绩点为:");
printf("%f",h/ZX);
printf(" 学业成绩平均分为: ");
printf("%f",((h/ZX)/ZXJH)*100); h=0; }

else p=p->next; } } }

struct subject *creat1(void)
{struct subject *head;int r,i,j=1;
struct subject *p1;
p1=(struct subject *)malloc(LEN);
for(i=0;i<m;i++)
{
printf("输入第%d门课学号分:",j);
scanf("%d",p1->xf[i]);
j=j+1;
}

head=NULL;
head=p1;
free(p1);
return(head);
}

void print3(struct subject *head)
{struct subject *p;
printf("\n 各科目名字和学分分别是:\n");
p=head;
if(head!=NULL)
do
{printf("%s%d",p->subj,p->xf);
p=p->next;
}while(p!=NULL);

}

void menu()
{
char a; struct student *head,*head1; char dele_num[15],chan_num[15],finenum[12];
struct subject *head2; int i; /*以下是目录*/

printf(" 功能选择提示 \n");
printf(" ********************************************************\n");
printf(" ********* 按 1 输入学生基本信息 *********\n");
printf(" ********* 按 0 结束信息输入 *********\n");
printf(" ********* 按 2 输出学生信息 *********\n");
printf(" ********* 按 3 删除学生信息 *********\n");
printf(" ********* 按 4 增加学生信息 *********\n");
printf(" ********* 按 5 修改学生信息 *********\n");
printf(" ********* 按 6 输出计算信息 *********\n");
printf(" ********* 按其他键返回 *********\n");
printf(" ********************************************************\n");

printf("请选择:");
scanf("%d",&a);

{ if(a==1){head=creat(); print1(head); menu();}
else if(a==2){print1(head); menu();}
else if(a==3){printf("请输入删除学号:\n");
printf(" ");
scanf("%s",dele_num);getchar();
dele(head,dele_num);
menu();}

else if(a==4){head1=(struct student *)malloc(LENG);
printf("输入学号:\n");
printf(" ");
scanf("%s",head1->num);
printf("输入姓名:\n");
printf(" ");
scanf("%s",head1->name);
printf("输入性别:\n");
printf(" ");
scanf("%s",head1->sex);
printf("输入各科成绩:\n");
printf(" ");
for(i=0;i<m;i++)
{scanf("%f",&all);
(head1->score[i])=all;}
head=add(head,head1);
print1(head);
menu();}


else if(a==5){printf("请输入要修改的学号:");
scanf("%s",chan_num); getchar();
change(head,chan_num);

menu(); }

else if(a==6) {head2=creat1();
printf("请输入查询学业情况的学生学号:");
scanf("%s",finenum);

print2(head,head2,finenum);menu();}

} }

void main()
{ void menu();

printf("全班同学的人数为:");
printf(" ");
scanf("%d",&n);
printf("\n");
printf("功课的门数为:");
printf(" ");
scanf("%d",&m);
printf("\n\n");

menu();}


请运行它,这个程序在输入信息时,如果把学生信息输入完了, 要按 0 才能退出并进行其他
功能, 我不知道怎么样才能加些语句上去使得当你输入完信息后, 它能自动跳出来使你可以
直接操作下一步, 请各位指点一下~~~~
就是说, 比如你输入学生人数为3 时, 当你输入完3个学生的信息后, 它还继续显示让你输入下一位学生的信息, 你要进行其他操作只能按0键, 怎么才能使它不这样子呢?

搜索更多相关主题的帖子: struct student define subject 自动 
2006-07-06 23:53
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
以下是引用canon787在2006-7-6 23:53:51的发言:

#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LENG sizeof(struct student)
#define LEN sizeof(struct subject)
struct student /*先定义一个学生信息的结构体数组*/
{char num[11];
char name[18];
char sex[2];
float score[12];
struct student *next;
};

struct subject
{char subj[20];
int xf[20];
struct subject *next;};int t,m,n;char filename[15],name[15];

float all; /*这是为了解决输入中不可以输入浮点型数据面设立的一个浮点型全局变量*/

struct student *creat(void) /*输入学生信息函数*/
{struct student *head;int i,j;
struct student *p1,*p2; /*学生的信息有指针来存放比较好*/
t=0;

p1=p2=(struct student *)malloc(LENG);
printf("******************************************************\n");
printf("请输入学号:\n");
printf(" ");
scanf("%s",p1->num);getchar();
printf("******************************************************\n");
printf("请输入姓名:\n");
printf(" ");
scanf("%s",p1->name);
printf("******************************************************\n");
printf("请输入性别:\n");
printf(" ");
scanf("%s",p1->sex);
printf("******************************************************\n");
printf("\t各科成绩为:\n\n");
for(i=0;i<m;i++)
{ printf("第%d门成绩:",i+1);
scanf("%f",&all);
(p1->score[i])=all;
printf("******************************************************\n");}

head=NULL;
while(p1->num!="0")
{t=t+1;
if(t==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct student *)malloc(LENG);
printf("\n\n");
printf("******************************************************\n");
printf("请输入学号:\n");
printf(" ");
scanf("%s",&p1->num); getchar();
if(strcmp(p1->num,"0")==0)break;
printf("******************************************************\n");
printf("请输入姓名:\n");
printf(" ");
scanf("%s",&p1->name);
printf("******************************************************\n");
printf("请输入性别:\n");
printf(" ");
scanf("%s",p1->sex);
printf("******************************************************\n");
printf("\t各科成绩为:\n\n");
for(i=0;i<m;i++)
{ printf("第%d门成绩:",i+1);
scanf("%f",&all);
(p1->score[i])=all;
printf("******************************************************\n");}
}

printf("\n\n");
p2->next=NULL;

return(head);

}

void print1(struct student *head) /*这是打印学生的信息的一个函数*/
{struct student *p; int i;
p=head;
if(head!=NULL)
do
{ printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("学号:");
printf("\t%s\n",p->num);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("姓名:");
printf("\t%s\n",p->name);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("性别:");
printf("\t%s\n",p->sex);
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");

for(i=0;i<m;i++)
{ printf("该学生第%d门课原始分为:",i+1);
printf("%f\n",p->score[i]);
}
printf("\n\n");
p=p->next;
}while(p!=NULL);

}

struct student *dele(struct student *head,char num[11]) /*这个是删除学生信息的一个函数*/
{struct student *p1,*p2;
if(head==NULL)
{printf("\n 找不到资料:\n");return(head);}
p1=head;
while ((strcmp(num,p1->num)!=0)&&p1->next!=NULL)

{p2=p1;p1=p1->next;
if(strcmp(p1->num,num)==0)
{if(p1==head)head=p1->next;
else p2->next=p1->next;
printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
printf("你想删除的学号是:%s",num);
t=t-1; }

else printf("错误!\n"); }

return(head);
}

struct student *add(struct student *head,struct student *stu)/*这个是添加学生信息的一个函数*/
{struct student *p0,*p1,*p2;
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{while ((strcmp(p0->num,p1->num)!=0)&&(p1->next!=NULL))
{p2=p1;
p1=p1->next;}
if(strcmp(p0->num,p1->num)>0)
{if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}
}
t=t+1;
return(head);
}

struct student *change(struct student *head,char num[]) /*这个是修改学生信息的函数*/
{struct student *p1,*p2;int i;char ch;float sc[25];
if(head==NULL){printf("\n list null!\n");return(head);}
p1=head;

if(strcmp(num,p1->num)==0) /*一面是定义修改的是学生哪方面的信息*/
{printf("输入1--修改学号,输入2--修改姓名,输入3--修改性别,输入4--修改成绩,请输入:");
scanf("%d",&ch);
printf("请输入修改内容:");

if(ch==1){scanf("%s",p1->num);}
else if(ch==2){scanf("%s",p1->name);}
else if(ch==3)scanf("%s",p1->sex);
else if(ch==4){for(i=0;i<m;i++)
{scanf("%d",&p1->score[i]);printf("\n");}

} }

else{

while((strcmp(num,p1->num)!=0)&&p1->next!=NULL)
{p2=p1;p1=p1->next;p1=p2->next;
if(strcmp(num,p1->num)==0)
{printf("输入1--修改学号,输入2--修改姓名,输入3--修改性别,输入4--修改成绩,请输入:");
scanf("%d",&ch);
printf("请输入修改内容:");

if(ch==1){scanf("%s",p1->num);}
else if(ch==2){scanf("%s",p1->name);}
else if(ch==3)scanf("%s",p1->sex);
else if(ch==4){for(i=0;i<m;i++)
{scanf("%d",&p1->score[i]);printf("\n");}

} }
else
printf("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
printf("输入错误!!!该学号不存在!:\n");
} }


return(head);
}

void print2(struct student *head,struct subject *head1,char number[12])
{struct student *p;int i,j=1;float h=0,JD[15],XCP,ZXJH=0,ZX=0; struct subject *q2;
q2=head1;
for(i=0;i<m;i++)
{ZX=ZX+q2->xf[i];}
for(i=0;i<m;i++)
{ZXJH=ZXJH+(q2->xf[i]*5);}
p=head;
if(head!=NULL)
{for(i=0;i<n;i++)
{ if (strcmp(number,p->num)==0)
{
for(j=0;j<m;j++)
{
printf(" 第%d门课原始分、绩点:",j+1);
printf("%d ",p->score[j] );
if(p->score[j]>=60)
{ JD[j]=p->score[j]/10-5;
printf("(%f)",JD[j]); }
else { JD[j]=0;printf("%f",JD[j]); }

h=((q2->xf[j])*JD[j])+h; }
printf("平均学分绩点为:");
printf("%f",h/ZX);
printf(" 学业成绩平均分为: ");
printf("%f",((h/ZX)/ZXJH)*100); h=0; }

else p=p->next; } } }

struct subject *creat1(void)
{struct subject *head;int r,i,j=1;
struct subject *p1;
p1=(struct subject *)malloc(LEN);
for(i=0;i<m;i++)
{
printf("输入第%d门课学号分:",j);
scanf("%d",p1->xf[i]);
j=j+1;
}

head=NULL;
head=p1;
free(p1);
return(head);
}

void print3(struct subject *head)
{struct subject *p;
printf("\n 各科目名字和学分分别是:\n");
p=head;
if(head!=NULL)
do
{printf("%s%d",p->subj,p->xf);
p=p->next;
}while(p!=NULL);

}

void menu()
{
char a; struct student *head,*head1; char dele_num[15],chan_num[15],finenum[12];
struct subject *head2; int i; /*以下是目录*/

printf(" 功能选择提示 \n");
printf(" ********************************************************\n");
printf(" ********* 按 1 输入学生基本信息 *********\n");
printf(" ********* 按 0 结束信息输入 *********\n");
printf(" ********* 按 2 输出学生信息 *********\n");
printf(" ********* 按 3 删除学生信息 *********\n");
printf(" ********* 按 4 增加学生信息 *********\n");
printf(" ********* 按 5 修改学生信息 *********\n");
printf(" ********* 按 6 输出计算信息 *********\n");
printf(" ********* 按其他键返回 *********\n");
printf(" ********************************************************\n");

printf("请选择:");
scanf("%d",&a);

{ if(a==1){head=creat(); print1(head); menu();}
else if(a==2){print1(head); menu();}
else if(a==3){printf("请输入删除学号:\n");
printf(" ");
scanf("%s",dele_num);getchar();
dele(head,dele_num);
menu();}

else if(a==4){head1=(struct student *)malloc(LENG);
printf("输入学号:\n");
printf(" ");
scanf("%s",head1->num);
printf("输入姓名:\n");
printf(" ");
scanf("%s",head1->name);
printf("输入性别:\n");
printf(" ");
scanf("%s",head1->sex);
printf("输入各科成绩:\n");
printf(" ");
for(i=0;i<m;i++)
{scanf("%f",&all);
(head1->score[i])=all;}
head=add(head,head1);
print1(head);
menu();}


else if(a==5){printf("请输入要修改的学号:");
scanf("%s",chan_num); getchar();
change(head,chan_num);

menu(); }

else if(a==6) {head2=creat1();
printf("请输入查询学业情况的学生学号:");
scanf("%s",finenum);

print2(head,head2,finenum);menu();}

} }

void main()
{ void menu();

printf("全班同学的人数为:");
printf(" ");
scanf("%d",&n);
printf("\n");
printf("功课的门数为:");
printf(" ");
scanf("%d",&m);
printf("\n\n");

menu();}


请运行它,这个程序在输入信息时,如果把学生信息输入完了, 要按 0 才能退出并进行其他
功能, 我不知道怎么样才能加些语句上去使得当你输入完信息后, 它能自动跳出来使你可以
直接操作下一步, 请各位指点一下~~~~
就是说, 比如你输入学生人数为3 时, 当你输入完3个学生的信息后, 它还继续显示让你输入下一位学生的信息, 你要进行其他操作只能按0键, 怎么才能使它不这样子呢?

用TC编译了一下,那个地方有问题先改一下吧


很高兴能和大家一起学习程序! QQ:114109098
2006-07-07 08:22
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
用了2个编译器都不能通过啊~
不过LZ的这个程序挺不错的,顺便问一句,
当输入完3个学生的基本信息后又返回菜单去输入另外3个学生的信息会把刚才3个学生的信息覆盖掉吗?

很高兴能和大家一起学习程序! QQ:114109098
2006-07-07 08:31
canon787
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-6-28
收藏
得分:0 


我用VC编译的, 完全可以啊~~

回答上面的问题: 应该不会. 但由于我还在考虑怎么把它变成输入完信息后能自动跳出来进行下一步操作的问题上了,所以也没完全把程序运行下去``~~~


Learning by heart
2006-07-07 11:20
快速回复:怎样使它自动跳出来?
数据加载中...
 
   



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

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