如何显示整数的最大和最小位数

时间:2018-03-27 14:50:09

标签: c

我需要找到整数的最大和最小位数。

我尝试了这个,但它没有做任何事情:

#include<stdio.h>

int main(){
  int n,max,min,i;
  printf("Give me a positive integer: ");
  scanf("%d", &n);
  i=1;
  while(n>=0){
    if(i==1) {min=n%10; max=n%10;}
    else {if(min>(n%10)) min=(n%10); if(max<(n%10)) max=(n%10);}
    n=(int)n/10;
  }
  printf("max. figure:%d  min. figure:%d ", max, min);
  return 0;
}

1 个答案:

答案 0 :(得分:5)

这里有两个问题:

首先,您永远不会在循环内部更改i。因此,if(i==1)始终为true,因此您在每次迭代时重置minmax。您需要在循环结束时增加i

其次,你有一个无限循环。如果(n>=0)为正或零,则测试n将为真。您希望在n变为0后退出循环,因此请将测试更改为n>0

  while(n>0){
    if(i==1) {
      min=n%10; 
      max=n%10;
    } else {
        if (min>(n%10)) 
          min=(n%10); 
        if(max<(n%10)) 
          max=(n%10);
    }
    n=(int)n/10;
    i++;
  }