当前位置: 代码迷 >> C语言 >> [求助]关于《《函数结构》》的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  详细解决方案

[求助]关于《《函数结构》》的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

热度:130   发布时间:2007-10-27 16:09:53.0
[求助]关于《《函数结构》》的问题!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

先看源代码
#include<stdio.h>
struct student //结构
{
int hao; //学号
char ming[25]; //姓名
float cheng; //三门成绩
double ave; //平均成绩
}stu[55];
int count=0;
struct student luru(); // 输入
void xianshi(struct student stu[]); //显示函数信息
void paixu(struct student stu[]); //冒泡排序
void charu(struct student stu[]); //插入函数
void shanchu(struct student stu[]); //删除函数


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~主函数~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int main()
{
char ch,cj,ck,cl,cv;

// 输入学员信息
printf("\t\t++++++++++++++请输入学员信息+++++++++++++\n");
do{
stu[count]=luru();
printf("是否继续 (y/n)");
fflush(stdin);
ch=getchar();
count++;
}while(ch=='y'||ch=='Y');
printf("排序前的成绩为\n");
xianshi(stu);
printf("排序后的成绩为\n");
paixu(stu);
xianshi(stu);
// 插入学员信息
printf("\n是否要插入新学员?Y or N\n");
fflush(stdin);
cj=getchar();
while(cj=='Y'||cj=='y')
{

charu(stu);
printf("是否继续插入\n");
fflush(stdin);
cj=getchar();
}
// 删除学员信息
printf("是否要删除某个学员?(y/n)\n");
fflush(stdin);
ck=getchar();
while(ck=='y'||ck=='Y')
{
shanchu(stu);
printf("是否继续删除\n");
fflush(stdin);
ck=getchar();
}
// 继续操作!!!!
printf("是否需要继续操作\n");
fflush(stdin);
cl=getchar();
while(cl=='Y'||cl=='y')
{
printf("\t\t\t请选择\n~~~a~~~~插入学员信息\t\t~~~~b~~~删除学员信息\n");
fflush(stdin);
cv=getchar();
switch(cv)
{
case 'a':
charu(stu);
break;

case 'b':
shanchu(stu);
break;

default:
printf("输入错误\n");
}
printf("是否继续\n");
fflush(stdin);
cl=getchar();
}

}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~输入~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
struct student luru()
{
int i;
float sum=0;
printf("学号:");
fflush(stdin);
scanf("%d",&stu[count].hao);
printf("姓名:");
fflush(stdin);
gets(stu[count].ming);
printf("三门成绩:");
for(i=0;i<3;i++)
{
printf("\n成绩%d:",i+1);
scanf("%f",&stu[count].cheng);
sum+=stu[count].cheng; //总成绩
}
stu[count].ave=sum/3; //求平均成绩
return stu[count]; //把平均成绩返回 因为求的是平均成绩
}


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~显示信息~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void xianshi(struct student stu[])
{
int i;
printf("学号\t\t姓名\t\t平均成绩\n");
for(i=0;i<count;i++)
{
printf("%d",stu[i].hao);
printf("\t\t%s\t\t",stu[i].ming);
printf("%.0lf",stu[i].ave);
printf("\n");
}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~排序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void paixu(struct student stu[])
{
int i,j;
struct student temp;
for(i=0;i<count;i++)
{
for(j=0;j<count-1-i;j++)
{
if(stu[j].ave<stu[j+1].ave)
{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~插入~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void charu(struct student stu[])
{
int i,j;
struct student temp;
printf("请输入要插入的学员信息:\n");
temp=luru();
for(i=0;i<count;i++)
{
if(stu[i].ave>temp.ave)
break;
}
for(j=count;j>i;j--)
{
stu[j]=stu[j-1];
}
stu[i]=temp;
count++;
printf("\n插入新学员后的信息如下:\n");
paixu(stu);
xianshi(stu);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~删除学员信息~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void shanchu(struct student stu[])
{
int i,j;
int x;
printf("请输入要删除的学号:");
scanf("%d",&x);
for(i=0;i<count;i++)
{
if(stu[i].hao==x)
break;
}
for(j=i;j<count;j++)
{
stu[j]=stu[j+1];
}
count--;
printf("\n删除后学员的信息如下:\n");
paixu(stu);
xianshi(stu);
}


我是一个自学C的业余者 ,这是一个学生成绩管理系统 虽然勉强做玩了 但是有两个地方不懂 希望有心人能帮我说明下,别怪我问题多,只是真的有点不理解 那位有心人帮忙 解决下把 万分感激呀!

问题1 为什么 中间要写 (struct student stu[]) 返回参数 这段参数的意义是什么 干什么用的 以及为什么要这么写 写的好处什么,如果不写能否完成以上代码效果。。
还有第一段输入函数 为什么前面加 结构类型struct student?
struct student luru(); // 输入
void xianshi(struct student stu[]); //显示函数信息
void paixu(struct student stu[]); //冒泡排序
void charu(struct student stu[]); //插入函数
void shanchu(struct student stu[]); //删除函数


问题2
int count=0;
为什么要加这个 计数器?
能否解释下这段代码的意义 和作用 在其他地方 怎么用 最好举例一个代码
如果不加是否也能做出以上代码效果?
一开始我没写这个 写到后面就郁闷了写不出。。后来参考别的代码才勉强写完的!



如果可以能否个相关文章 让我理解下 函数和结构!!!!!!!!!!!!!!!!!!!!!!!

[此贴子已经被作者于2007-10-27 16:10:25编辑过]

搜索更多相关的解决方案: 函数  源代码  结构  student  

----------------解决方案--------------------------------------------------------
``````````````````````
----------------解决方案--------------------------------------------------------
回复:(dengerlong)[求助]关于《《函数结构》》的问...
(1)struct就是用户自己定义的数据类型和int、float没有什么区别。只不过每个对象分配的内存大小不一样。
所以,所有的struct student都 可是视为:int来理解。不知道这样能明白不?
(2)count是用来计数。你也可以将它写在main函数里。

----------------解决方案--------------------------------------------------------
看不太明白!
----------------解决方案--------------------------------------------------------
能明白但实际运用起来很吃力 不知道如何  运用。。。
----------------解决方案--------------------------------------------------------
眼睛花了~~
----------------解决方案--------------------------------------------------------
  相关解决方案