解决方法2:勾选“微库”MicroLIB--->Use MicroLIB
死循环了,在printf("dasdw")// 运行后输出不了!
后面加上这个,
getchar()
dasdw打印出来了,然后while循环就一直做
#include<stdio.h>#include<stdlib.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=0i<ni++)
{
printf("\n%d:\n",i+1)
for(j=0j<Nj++)
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=0i<ni++){
sum=0
for(j=0j<Nj++){
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=0j<Nj++)
{
s=0
for(i=0i<ni++)
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=0i<ni++){
printf("\n第%d学生平均分:%.2lf\n",i+1,as[i])
}
for(j=0j<Nj++){
printf("课程平均分:%.2lf ",ac[j])
printf("\n")
}
}
//现在你再试。保证一试OK。
//要分清 变量的作用域!!!
//把函数中的变量想象为函数的私有财产,全局变量想象为公有财产,
//一句话可以理解为:我的就是我的,阿爷的也是我的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)