2012-02-03 41 views
-1

我想编写一个程序,它提示用户输入由空格分隔的一组整数。用户应该能够输入任何数量的整数。它会在集合中找到两个最小的整数并将其打印出来。打印最小的数字,然后打印第二小的数字。我的问题是,如何将min1的值作为第一个输入的整数,而不是静态的?当我进行测试运行时,它所打印的只是一个空格,为什么?以下是我迄今为止:如何从一组输入的整数中打印最小数字?

更新: 我现在尝试这种方法,但它只是冻结后,我进入的输入,如76 10 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

是的,因为它不包含问题。 – 2012-02-03 01:09:16

回答

1

您应该添加\n在第一个printf结尾,所以它不会被缓存。

另外,要小心你使用数字 - 不是整数。

和你的问题 - 只写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); 
+0

不会getchar()只得到一个字符?什么是2个字符的整数? – 2012-02-03 01:13:34

+0

从你的代码看来,你想要的数字。不是'int's。 – asaelr 2012-02-03 01:15:42

+0

迄今为止,这有所帮助。我得到它输出最小。现在我正在努力将其输出为第二小。谢谢 – 2012-02-03 04:22:45

0

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

0

你为什么打印空间?由于%c打印字符而不是数字,请尝试%d。

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

0

你需要两样东西:

  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 
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); 
} 
+1

你应该解释为什么这回答了这个问题。 – FDinoff 2013-05-03 19:23:46

相关问题