如何从一组输入的整数中打印最小的数字?

时间:2012-02-03 01:05:52

标签: c helper

我想编写一个程序,它会提示人们输入一个由空格分隔的整数集。用户应该能够输入任意数量的整数。它将找到集合中的两个最小整数并将其打印出来。打印最小的数字,然后打印第二个最小的数字。我的问题是如何将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;
}

5 个答案:

答案 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)

你需要两件事:

  1. 某种方式让用户告诉你的程序他们输入了数字,所以某种条件语句
  2. 比较他们输入的数字以及比较数字
  3. 的另一个条件语句的某种方式

    在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);
}