#include<cs50.h>
#include<stdio.h>
int main (void)
{
int a,array[100],min,c,b=0;
printf("Enter a number that you wish: \n");
a=GetInt();
printf("Now Enter %i Independently \n",a);
for(int b=0; b<a; b++)
array[b]=GetInt();
min = array[0];
for ( c = 0 ; c < b ; c++ )
{
if ( array[c] < min )
min = array[c];
}
printf("Minimum value is %i.\n", min);
return 0;
}
输出
Enter a number that you wish:
4
Now Enter 4 Independently
2
3
1
4
Minimum value is 2.
但我确信最小数字是1 - 错误是什么?
答案 0 :(得分:2)
代码中的问题b
是此for
循环的局部变量
for(int b=0; b<a; b++)
//this b will get destroyed when this for loop terminates
以后你在另一种情况下在你的终止条件下使用它
for ( c = 0 ; c < b ; c++ )
//the b here is the other b which you defined in the 1st line of the program
// int a,array[100],min,c,b=0;
//the b is this for loop is this one ^^
//this b still has value 0
解决方案是在a
循环条件
for
for ( c = 0 ; c < a ; c++ )
答案 1 :(得分:0)
for(int b=0; b<a; b++)
您再次在循环中声明b
,它会覆盖之前声明的b
,因此b
循环之外for
的值不会更改并保持0
而你的循环不会迭代。
请勿再次在b
循环内声明for
。写下这个 -
for(b=0; b<a; b++)
答案 2 :(得分:0)
b
中使用的值for ( c = 0 ; c < b ; c++ )
是0
因为
它被初始化为零,for(int b=0; b<a; b++)
不会影响其值。
尝试将for循环更改为for ( c = 0 ; c < a ; c++ )
(使用a
代替b
)。