C语言:输入10个数找出最大值和最小值的位数(用while做)怎样做?

如题所述

按你的要求写好了,只是要比较的数值的格式要自己输入,如果你一定要10个的话,就自己修改下代码,也不麻烦的,我已经运行出来了,希望对你有用!代码附带在下面:
#include<stdio.h>
#include<stdlib.h>

void main()
{
int max,min;
int flog;
int N;
int i=1;
int digit(int num); /*寻找位数*/

printf("Please input the number you want to compare:");
scanf("%d",&N);
while(1)
{
printf("The %d number is:",i);
scanf("%d",&flog);
if(i==1)
max=min=flog;
else if(max<flog) max=flog;
else if(min>flog) min=flog;
i++;
if(i==N+1)
break;
}
printf("Max=%d\n",max);
printf("Min=%d\n",min);
printf("The maximum number digits is %d\n",digit(max)); //输出最大数的位数
printf("The minimum number digits is %d\n",digit(min)); //输出最小数的位数
system("pause");
}

/*寻找位数*/
int digit(int num)
{
if(abs(num)>0 && abs(num)<10)
return 1;
if(abs(num)>9 && abs(num)<100)
return 2;
if(abs(num)>99 && abs(num)<1000)
return 3;
if(abs(num)>999 && abs(num)<10000)
return 4;
if(abs(num)>9999 && abs(num)<100000)
return 5;

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-05
我只会java 你可以参照下
先定义一个数组 然后将每次输入的数放在数组里面去
然后比较出大小
int[] num=new int[10];
int max=0;
int min=0;
System.out.println("输入:");
for(int i=0;i<10;i++){
num[i]=input.nextInt();
max=num[0]; //将第一个数赋值给max;
}
for(int i=0;i<10;i++){
if(max<num[i]){
max=num[i];
}if(min>num[i]){
min=num[i];
}
system.out.println("输入最大值:"+max+"最小值"+min);
}

当然也可以用数组排列的方式从小到大排列数组 然后输出数组里面的第一个和最后一个 分别是最小值和最大值
第2个回答  2018-01-05
for循环都可以转化为while循环
#include <stdio.h>
#define N 10

void Find(int a[], int* maxlen, int* minlen);
void main(void)
{
int a[N];
int maxlen = 0;
int minlen = 0;
int i = 0;

printf("请输入是个整形数据:\n");
for(i = 0; i < N; ++i)
{
scanf("%d", a+i);
}
Find(a, &maxlen, &minlen);
printf("max 的位数为%d\n", maxlen);
printf("min 的位数为%d\n", minlen);
}
void Find(int a[], int* maxlen, int* minlen)
{
int i = 0;
int max = a[0];
int min = a[0];
while(1)
{
++i;
if(a[i] > max)
{
max = a[i];
}
else if(a[i] < min)
{
min = a[i];
}
if(i == N)
{
break;
}
}
while(max)
{
++(*maxlen);
max /= 10;
}
while(min)
{
++(*minlen);
min /= 10;
}
}
相似回答