c初赛——字符串分析

#include"stdio.h"
#include"string.h"
#include"io.h"
#include"ctype.h"
#include"stdlib.h"
int  main()
{
	FILE *fp;
	char c[100];
	
    
	int sum[30],num[50],i=0,l,s=0,N=1,g=0,j;
    int temp;
	fp=fopen("d:\\out2.txt","a+");
	printf("请输入一含有数字的字符串:\n");
	
	gets(c);
	l=(int)strlen(c);
	

	//printf("字符串长度为:%d\n",l);
	for(i=0;i<l;i++)//转换为数字
	{   
		
        if((c[i]>='0')&&(c[i]<='9'))
        {
            sum[s++]=c[i]-48;//单个字符数字转换为数字
            N*=10;
            if(c[i+1]<='0'||c[i+1]>='9'||c[i+1]=='\0')//判断下一个字符是否为字符数字,不是则执行下一步,即是否是一个连续的数
            {
                num[g]=0;
                N/=10;
                for( j=0;j<s+1;j++)//连起来的数字转为一个整数
                {
                    sum[j]*=N;
                    N/=10;
                    num[g]+=sum[j];
                }
                g++;//记录字符串中数字串的个数
                s=0;//用于sum[30]重新存储下个字符数字
                N=1;//用于字符数字转为数字
            }
            
        }
	}
	printf("整数个数有%d个\n",g);
	printf("为:\n");
	for(i=0;i<g;i++)//输出结果
	{	printf("%d\t",num[i]);}
	printf("\n");	
	for(i=0;i<g;i++)
    {
        for(j=0;j<g-i;j++)
       {
           if(num[i]>num[j])
           {
             temp=num[i];
             num[i]=num[j];
             num[j]=temp;
           }
           
       }      
    }
    
    //for(i=0;i<g;i++)//输出结果    
     printf("最大数:%d\t",num[0]);
    
    fprintf(fp,"整数个数:%d",g);
     
   
	fputc('\n',fp);
	 fprintf(fp,"最大整数:%d",num[0]);
	fclose(fp);
	 getchar();

}

你可能感兴趣的:(c初赛——字符串分析)