不懂就问 关于for循环中scanf的问题
一个找出最小值的简单程序 但是执行出现了问题#include <stdio.h>
#define max 1024
int main(void)
{
int n,array,min;
scanf("%d",&n);//n代表期望数字个数
for(int i=0;i<n;i++)
{
scanf("%d ",&array);
}//问题出现在这里 只需要输入n个数,但是运行时需要输入n+1个数才能正常运行
min=0;
for(int i=1;i<n;i++)
{
if(array<array)
{
min=i;
}
}
printf("min = %d",array);
return 0;
}
可是i=0,i<n,不是表示在for中循环n次,也就是读取n个数吗
i=1后程序运行正常,但不支持n=1的情况
求各位大神解答,不胜感激!!! #include <stdio.h>
#define max 1024
int main(void)
{
int n, array, min;
scanf("%d",&n);
for(int i = 0; i < n; i++)
{
scanf("%d",&array); //%d 之后不要空格
}
min = 65536;
for(int i = 1; i < n; i++)
{
if(array < min)
{
min = array;
}
}
printf("min = %d", min);
return 0;
}你是单次输入,不需要空格,你空格,当作期望接受到空白,虽然输入多一次,但是最后一个是不被考虑的,只是完成空格的作用。 claws0n 发表于 2018-10-8 16:49
你是单次输入,不需要空格,你空格,当作期望接受到空白,虽然输入多一次,但是最后一个是不被考虑的,只是 ...
感谢老哥!! 可以这样玩#include <stdio.h>
#define max 1024
int main(void)
{
int n, array, min = 65536;
printf("请输入数组的长度:");
scanf("%d",&n);
if(n > 1024)
n = 1024;
for(int i = 0; i < n; i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&array);
if(array < min)
min = array;
}
printf("min = %d", min);
return 0;
} claws0n 发表于 2018-10-8 16:54
可以这样玩
感谢{:5_106:}, 还有麻烦问一下 65536在C语言中有什么特殊的意义吗 447908543 发表于 2018-10-8 17:08
感谢, 还有麻烦问一下 65536在C语言中有什么特殊的意义吗
没有,你要找最小值,一开始当然要用一个比较大的数。2^16 = 65536,16位的最大数 65535。反正目前来说都是 32 位了,能够支持 claws0n 发表于 2018-10-8 17:27
没有,你要找最小值,一开始当然要用一个比较大的数。2^16 = 65536,16位的最大数 65535。反正目前来说都 ...
感谢。{:5_106:}
页:
[1]