当前位置: 代码迷 >> C语言 >> 关于c语言传参的问题
  详细解决方案

关于c语言传参的问题

热度:164   发布时间:2007-04-06 11:02:15.0
关于c语言传参的问题

以下是我的一段程序,能运行,结果不对,错误出在传参上,请问我怎么才能把我第一次输入的number传到main()函数,以方便我后面利用number这个值进行计算,请高手指点,谢谢
#include<stdio.h>
#define N 50
struct student //定义学生结构数组
{
int num;
char name[20];
float score[3];
float avr;
}str[N];
int number=0;
struct student input(); //定义录入函数
void display(); //定义显示函数
void sort(); //定义排序函数
void insert(); //定义插入函数
void del(); //定义删除函数

void main()
{
int select;
printf("\n\t\t欢迎光临学员成绩管理系统");
do
{
printf("\n 0、退出\n 1、录入学员信息\n 2、插入学员信息\n 3、删除学员信息\n");
printf("请选择功能: ");
scanf("%d",&select);
if(select==0)
{
break;
}
switch(select)
{
case 1: //调用录入学员信息函
input();
printf("\n排序前的信息: ");
display();
sort();
printf("\n排序后的信息: ");
display();
break;
case 2: //调用插入学员信息函数
printf("\n插入前的学员信息: ");
display();
insert();
printf("\n插入后的学员信息: ");
display();
break;
case 3: //调用删除学员信息函数
printf("\n删除前的学员信息: ");
display();
del();
printf("\n删除后的学员信息: ");
display();
break;
default:
printf("\n输入有误,请在0-3之间选择。\n\n");
}
}while(1);
}

//录入学员信息函数
struct student input()
{
int i,j,number;
struct student stud;
float sum=0;
printf("请输入要录入的学员个数:");
scanf("%d",&number);
for(i=0;i<number;i++)
{
printf("第%d位学员信息:",i+1);
printf("请输入学号:");
scanf("%d",&stud.num);
printf("请输入姓名");
scanf("%s",&stud.name);
printf("请输入三门成绩:");
for(j=0;j<3;j++)
{
printf("第%d门成绩:",j+1);
scanf("%f",&stud.score[j]);
sum+=stud.score[j];
}
}
return stud;
}

//显示学员信息函数
void display()
{
int i;
struct student input(number);
printf("\n学号\t姓名\t平均成绩\n");
for(i=0;i<number;i++)
{
printf("%d",str[i].num);
printf("\t%s",str[i].name);
printf("\t%6.2f\n",str[i].avr);
printf("\n");
}
}

//成绩排序函数
void sort()
{
//struct student temp;//str[j].avr;
int i,j;
float temp;
for(i=0;i<number;i++) //通过冒泡排序法对学员成绩进行从大到小排列
{
for(j=number;j>i;j--)
{
if(str[j].avr>str[j-1].avr)
{
temp=str[j].avr;
str[j].avr=str[j-1].avr;
str[j-1].avr=temp;
}
}
}
}

//插入学员信息函数
void insert()
{
char ch;
printf("是否要插入新学员(y or n)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
input();
}
}

//删除学员信息函数
void del()
{
char ch;
int dnum;
int i,j;
printf("是否要删除学员信息(y or n)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
printf("\n请输入要删除的学员:");
scanf("%d",&dnum);
for(i=0;i<number;i++)
{
if(str[i].num==dnum)
break;
}
for(j=i;j<number-1;j++)
{
str[j]=str[j+1];
}
}
}

搜索更多相关的解决方案: c语言  定义  number  函数  void  

----------------解决方案--------------------------------------------------------
错误出在传参上!!

你函数都没有参数啊?

可以定义为全局变量~`
也可以用指针...
----------------解决方案--------------------------------------------------------
  相关解决方案