|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int max, min;
void r(int a[], int n);
void main()
{
int i, a[10];
printf("input 10 numbers:\n");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("\n");
r(a, 10);
printf("max=%d min=%d\n", max, min);
}
void r(int a[], int n)
{
int i;
max = a[0];
min = a[n - 1];
for (i = 1; i < n; i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
}
这个是正确的程序,我写的程序是
#include<stdio.h>
void main()
{
void r(int a[], int n);
int i, a[10],min,max;
printf("input 10 numbers:\n");
for (i = 0; i < 10; i++)
scanf("%d", &a[i]);
printf("\n");
r(a, 10);
printf("max=%d min=%d\n", max, min);
}
void r(int a[], int n)
{
int i,max,min;
max = a[0];
min = a[n - 1];
for (i = 1; i < n; i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
}
这个程序的意思是输出最大值最小值,两个程序的区别是第一个程序里面max,min是全局变量,而第二个程序里是再定义max,min的,结果VS显示第二个程序的错误是main函数的max,min未初始化,还请大佬们指导为啥这要初始化?该怎么初始化?给max,min赋值吗?可是这里的max,min是在r函数里计算出来的呀
在main中的定义的max和min的作用域只在定义行到main函数结尾,另外在r函数中定义的max和min的作用域是r函数内。在main中打印max,min是其初始值。
由于max和min并未初始化,所以其值是多少不确定,是内存中的垃圾值。
在使用的时候需要初始化下: #include<stdio.h>
void main()
{
void r(int a[], int n);
int i, a[10],min=0,max=0;
printf("input 10 numbers:\n");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
printf("\n");
r(a, 10);
printf("max=%d min=%d\n", max, min);
}
void r(int a[], int n)
{
int i,max=0,min=0;
max = a[0];
min = a[n - 1];
printf("r:max=%d min=%d\n", max, min);
for (i=1;i<n;i++)
{
if (a[i] > max)
max = a[i];
if (a[i] < min)
min = a[i];
}
printf("r:max=%d min=%d\n", max, min);
}
|
|