重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
函数先使用后定义了。
专注于为中小企业提供成都网站设计、成都网站建设、外贸网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业垫江免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
C语言要求调用某一个函数之前,一定要知道该函数的定义。
两者修改方法:
//一、将函数的定义放在调用之前,这样调用的时候就知道该函数的定义了
#includestdio.h
void cheer() {
printf ("cheer");
}
int main() {
cheer();
}
//二、在调用函数之前,显示声明该函数的类型
#includestdio.h
int main() {
void cheer();
cheer();
}
void cheer() {
printf ("cheer");
}
在函数中(包括主函数)不能定义和函数名相同的变量,一般情况下函数名的定义需要有实际意义,让编程者能一看便知函数的功能(变量也是这样),如果是需要多个单词才能表达意思就使用下划线连接两个或多个单词,或者直接写在一起每个单词首字母大写,这样定义主要是为了让程序看起来更加简洁明了,让其他人能迅速了解程序功能,便于修改
函数调用了,是你写的有问题。
比如你第一次调用 swap(n1,n2),这个时候程序把n1,n2的值传给p1,p2,然后p1,p2的值交换了,但是你需要的n1,n2没有变化。
你改成void swap(int n1,int n2),引用就可以了
#includestdio.h
#includestdlib.h
#define M 100
#define N 2 //不要介意这两个数,是为了方便控制输入数据而定义的.
void input_stu(double score[M][N],int n);
void aver_stu(double as[],int n);
void aver_cour(double ac[],int n);
void output_stu(double as[],double ac[],int n);
double score[M][N];
int main(void)
{
int n;
// double score[M][N]; //这个成绩改为全局变量,明显,你在子函数中要用到这些数据,
//放到上面,这是问题1
double as[M],ac[N];
printf("请输入学生人数:");
scanf("%d",n);
input_stu(score,n);
aver_stu(as,n);
aver_cour(ac,n);
output_stu(as,ac,n);
return 0;
}
void input_stu(double score[M][N],int n) //这里输入的数据放了全局数组score中,下面才有数据去计算,此段没有问题
{
int i,j;
printf("输入学生N门成绩") ;
for(i=0;in;i++)
{
printf("\n%d:\n",i+1);
for(j=0;jN;j++)
scanf("%lf",score[i][j]);
}
}
void aver_stu(double as[],int n)
{
int i,j;
//double score[M][N] ,
//有问题2这里定义的score只会在这个函数过程中生效,。。。里面全是0
//所以下面计算值全是0 ,下面课目平均分函数也是这样。都要去掉,才能用到全局score中保存的输入数据
double sum;
for(i=0;in;i++){
sum=0;
for(j=0;jN;j++){
sum=sum+score[i][j];
as[i]=sum/N;
}
}
}
void aver_cour(double ac[],int n)
{
int i,j;
double s;
//double score[M][N] ; 有问题3,同问题2
for(j=0;jN;j++)
{
s=0;
for(i=0;in;i++)
s=s+score[i][j];
ac[j]=s/n;
}
}
void output_stu(double as[],double ac[],int n)
{
int i,j;
//double score[M][N];//有问题4
for(i=0;in;i++){
printf("\n第%d学生平均分:%.2lf\n",i+1,as[i]);
}
for(j=0;jN;j++){
printf("课程平均分:%.2lf ",ac[j]);
printf("\n");
}
}
//现在你再试。保证一试OK。
//要分清 变量的作用域!!!
//把函数中的变量想象为函数的私有财产,全局变量想象为公有财产,
//一句话可以理解为:我的就是我的,阿爷的也是我的。