|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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);
-
- }
复制代码
|
|