25.指针,数组,输入一个字符串,以回车键结束,将字符串中的整数合并并保存到整型数组中,并输出整数中的最大值和最小值。 /*输入一个字符串,以回车键结束,将字符串中的整数合并 *并保存到整型数组中,并输出整数中的最大值和最小值。 */ #include<stdio.h> /*声名两个常量elementN和arrayN用于限定书组数组大小*/ #define elementN 50 #define arrayN 50 /*声明函数fine(char[],int,int[],int, int*,int*)用于 *整合字符串中的整数,并保存到整型数组中,返回整数个数 */ int fine(char[],int,int[],int, int*,int*); main() { int elementSize=elementN,arraySize=arrayN,a,i; char string[elementN]; int array[arrayN],*maxPtr,*minPtr,max,min; /*给指针变量赋个地址*/ maxPtr=&max; minPtr=&min; printf("请输入字符串:\n"); gets(string); a=find(string,elementSize,array,arraySize,&maxPtr,&minPtr); printf("字符串中连续数字合并后得到的数字有:\n"); /*对字符串中尾数是否是数字的输出的控制*/ for(i=0;i<=a-1;i++) { if(array[i]>=0) printf("%d ",array[i]); } printf("\n整数中最大值是:%d\n",maxPtr); printf("整数中最小值是:%d\n",minPtr); return(0); } /*定义函数fine(char[],int,int[],int, int*,int*)用于 *整合字符串中的整数,并保存到整型数组中,返回整数个数 */ int find(char string[],int elementSize,int array[],int arraySize,int*maxPtr,int*minPtr) { int count=0,i=0,sum=0,num=1,min=0,max=0; /*对整数数组的整合与读取*/ while(string[i]!='\0') { /*挑选数字*/ if(string[i]>='0'&&string[i]<='9') { sum=sum*10+((int)string[i]-48); array[count]=sum; num=0; } /*计算数组元素个数*/ else { num=num+1; if(num==1) { count+=1; sum=0; } } i++; } /*寻找最值并赋值给指针*/ for(i=1;i<=count-1;i++) { if(array[i]>array[max]) max=i; if(array[i]<array[min]) min=i; } *maxPtr=array[max]; *minPtr=array[min]; return count+1; } 运行结果如图:
|
|