我需要找到整数的最大和最小位数。
我尝试了这个,但它没有做任何事情:
#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;
}
答案 0 :(得分:5)
这里有两个问题:
首先,您永远不会在循环内部更改i
。因此,if(i==1)
始终为true,因此您在每次迭代时重置min
和max
。您需要在循环结束时增加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++;
}