你题目有没有写全,如果按照你这个题目,没有规定输入整数的位数,考虑要输入任意位数的数字,那么数字就不能使用已有的整数类型来保存(比如int只有4个字节大小,超出就溢出了)。
我写的是任意长度的数字输入,比较取最小值。(你内存够就行)
#include
#include
#include
#define ssAdd 10//内存每次扩充大小 默认10个字符
//存储任意位数的整数,只接收数字输入,如夹杂非数字字符,将被过滤
char *saveNum(char *str,char c);//参数1:存储位置的首地址;参数2:要存储的数字字符;
//查找数字字符串数组中,最小的整数,返回最小整数所在的序列值
int findMin(char *num[],int n);//参数1:数字字符串数组 参数2:数字字符串个数
int maxSize;//当前最大存储空间大小(字符数 不算结束符号)
int main()
{
int n,i,minIndex;
printf("请输入n的值:");
scanf("%d",&n);
getchar();
char *num[n],c;
for(i=0;i{
printf("请输入第%d个整数(回车确认):",i+1);
maxSize=ssAdd;
num[i]=(char *)malloc(sizeof(char)*(ssAdd+1));//初始化存储大小
memset(num[i],0,ssAdd+1);
while(1)
{
c=getchar();
if(c=='\n')
break;
if(c>='0' && c<='9')//输入的是数字才存储,不是数字直接跳过
num[i]=saveNum(num[i],c);
}
}
for(i=0;i{
printf("%s\n",num[i]);
}
minIndex=findMin(num,n);
printf("最小值:%s",num[minIndex]);
return 0;
}
int findMin(char *num[],int n)
{
int minlen,len,i,j,index;
minlen=len=strlen(num[0]);
index=0;
for(i=1;i{
len=strlen(num[i]);
if(len{
minlen=len;
index=i;
}
else if(len==minlen)//长度相等 从最高位开始比较数值
{
for(j=0;j{
if((num[i][j]-'0')<(num[index][j]-'0'))
{
minlen=len;
index=i;
break;
}
}
}
}
return index;
}
char *saveNum(char *str,char c)
{
int len;
char *strSave=NULL;
len=strlen(str);
if(maxSize-len<=0)//存储空间不够,先扩充存储空间后再存储
{
strSave=str;
maxSize=maxSize+ssAdd;
str=(char *)malloc(sizeof(char)*(maxSize+1));//扩展新空间
memset(str,0,maxSize+1);
strcpy(str,strSave);
free(strSave);//释放原空间
strSave=NULL;
}
str[len]=c;//存储输入值
return str;
}
1、首先,定义三个整型变量,保存正整数、临时变量和各位数总和。
2、给变量总和sum赋值,初值为0。
3、接着,输入正整数,保存在变量n中。
4、给临时变量赋值,让它的值等于正整数的值。
5、用while语句判断,判断的条件为n不等于0。
6、条件成立时,求正整数各位上数字的和。
7、将正整数中,已求和的这一位数去除。
8、最后,输出正整数各位上数字的总和。
9、运行程序,输入任意的一个正整数,计算机就会输出它的各位上数字的总和。
#include
int main()
{int i,n,min,x;
scanf("%d%d",&n,&min);
for(i=2;i<=n;i++)
{scanf("%d",&x);
if(x } printf("\nMin=%d\n",min); return 0; }
#include
int main()
{
int i,n,t,min;
scanf("%d",&n);//输入个数
scanf("%d",&t); //输入第一个数
min=t; //令最小值等于第一个数
for(i=1;i{
scanf("%d",&t);
if(t}
printf("%d",min); //输出
return 0;
}
#include
void main(){
int n,i,j,temp,num[100000];
printf("请输入整数n:");
scanf("%d",&n);
for(i=0;i
scanf("%d",&num[i]);
}
for(i=0;i
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
printf("这%d个数的最小值是:%d\n",n,num[n-1]);
}