【问题标题】:How to display the maximum and minimum digits of an integer如何显示整数的最大和最小位数
【发布时间】:2018-09-06 01:14:57
【问题描述】:

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

我试过了,但它什么也没做:

#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;
}

【问题讨论】:

  • 什么情况下i不等于1?
  • n&gt;=0 应该是n&gt;0
  • while(n&gt;=0) 是无限循环。

标签: c


【解决方案1】:

这里有两个问题:

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

其次,你有一个无限循环。如果n 为正或零,则测试(n&gt;=0) 将为真。一旦n 变为0,您想退出循环,因此将测试更改为n&gt;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++;
  }

【讨论】:

  • 谢谢!!我在写问题时忘记输入“i++”。但我不知道为什么它不起作用。
  • @David 这就是为什么您应该始终将遇到问题的代码复制并粘贴到您的问题中。如果您尝试重新输入,内容可能会丢失。
  • @David 很高兴我能帮上忙。如果您觉得有用,请随时 accept this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 2012-09-14
  • 2012-04-09
相关资源
最近更新 更多