我想编写一个程序,它会提示人们输入一个由空格分隔的整数集。用户应该能够输入任意数量的整数。它将找到集合中的两个最小整数并将其打印出来。打印最小的数字,然后打印第二个最小的数字。我的问题是如何将min1的值作为它们输入的第一个整数,而不是静态的?当我进行测试时,所有打印的都是空格,为什么?以下是我到目前为止的情况:
更新: 我现在正在尝试这种方法,但是在我输入76 5 74 2等输入后它就会冻结。
#include <stdio.h>
int min1, min2;
int input;
int main(){
printf("Please enter some integer: ");
scanf("%d", &min1);
while(scanf("%d", &input) != 0){
min1=input;
}
printf("%d", min1);
return 0;
}
答案 0 :(得分:1)
您应该在第一个printf的末尾添加\n
,因此它不会被缓冲。
另外,请注意使用数字 - 而不是整数。
并提出您的问题 - 只需撰写min1=getchar();
。
编辑:一些可能做你想做的代码:
printf("Enter numbers. (other chars to end)\n");
int min,input;
scanf("%d",&min);
while (scanf("%d",&input))
if (input<min)
min=input;
printf("min: %d\n",min);
答案 1 :(得分:0)
也许您需要scanf("%d", &number);
来读取整数。
对于您的问题,只需致电scanf
以读取第一个数字,或设置一个标志以指示它是否是第一个输入。
答案 2 :(得分:0)
你为什么要打印一个空格?因为%c打印的字符不是数字,请尝试%d。
但即便如此,你也无法得到你想要的答案。 getchar()
从用户输入中获取一个字符(去图......),然后将该字符存储到数字值中,对于单个数字的数字,它会神奇地起作用,因为即使是字符“9”&gt; '8'&gt; '7'&gt; ...&gt; '0',但你会得到最后打印的最小数字的ascii值。
答案 3 :(得分:0)
你需要两件事:
在sudocode中,可能是这样的:
while (user still wants to give numbers):
number = get user input
if number does not equal exit_case:
if number < current minimum number:
current minimum number = number
else:
break out of the while loop
print current minimum number
答案 4 :(得分:0)
{
int a,b=1,min;
printf("Enter Number\n");
scanf("%d",&min);
while(b<10)
{
scanf("%d",&a);
if(min>a)
{
min=a;
}
b++;
}
printf("Smallest Num ::%d",min);
}