出锅代码:
#include<stdio.h>
int nPassScore=60;
int count(int a[],int n)
{
int k=0;
for(int i=0;i<n;i++)
{
if(a[i]<nPassScore)
{
k++;
}
}
printf("the number of the students who failed the exam is:%d\n",k);
return 0;
}
int judge(int a[],int n)
{
for(int i=0;i<n;i++)
{
if(a[i]<nPassScore)
{
printf("the student who failed the exam is:%d\n",i+1);
}
}
}
int input(int a[],int n)
{
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
}
void output(int a[],int n)
{
for(int i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
int main(void)
{
int a[1100];
int n;
int nPassScore = 50;
scanf("%d",&n);
input(a,n);
output(a,n);
judge(a,n);
count(a,n);
}
按照C语言现代设计一书上关于函数作用域的说法
如果在函数体里面出现与外部变量同名的局部变量,同时在函数体里面会调用一个用到该变量的函数,这时候采用的变量的值是取自局部还是外部?(我看那本书讲的是,在函数体里面的的声明会暂时覆盖原先的声明,直到函数体的结束,那值就应该取自局部变量,但是我自己编写了程序,却是外部变量被采用取值,不知道是我理解有问题,还是书有讲了点奇怪的东西?)
之后问了下老师找到了出锅的原因:main函数里面的局部变量是不能带入被调用函数里面的,又因为被调用函数里面没有设置对应的局部变量,则使用的就是在main函数外面定义的全局变量