【问题标题】:How to print the smallest number from a set of inputted integer?如何从一组输入的整数中打印最小的数字?
【发布时间】:2012-02-03 01:05:51
【问题描述】:

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

【问题讨论】:

  • 是的,因为它不包含问题。

标签: c helper


【解决方案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);

【讨论】:

  • 不会 getchar() 只得到一个字符吗?什么 id 是 2 个字符的整数?
  • 到目前为止这很有帮助。我让它输出最小的。现在我正在努力使其输出第二小。谢谢
【解决方案2】:

也许你需要scanf("%d", &amp;number); 来读取整数。 对于您的问题,只需拨打scanf 来读取第一个数字,或者设置一个标志来指示它是否是第一个输入。

【讨论】:

    【解决方案3】:

    为什么要打印空格?因为 %c 打印的是字符而不是数字,所以试试 %d。

    但即使在那之后,您也不会得到您正在寻找的答案。 getchar() 从用户输入中获取一个字符(go figure...),并且您将该字符存储到一个数值中,对于单个数字,它会神奇地工作,因为即使是字符 '9' > '8' > ' 7' > ... > '0',但你会得到最后打印的最小数字的 ascii 值。

    【讨论】:

      【解决方案4】:

      你需要两件事:

      1. 用户可以通过某种方式告诉您的程序他们已完成输入数字,因此需要某种条件语句
      2. 以某种方式比较他们输入的数字,因此另一个条件语句比较数字

      在 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
      

      【讨论】:

        【解决方案5】:
        {
        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);
        }
        

        【讨论】:

        • 你应该解释为什么这回答了这个问题。
        猜你喜欢
        • 2018-03-08
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 2013-11-09
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        • 2011-06-18
        相关资源
        最近更新 更多