zoukankan      html  css  js  c++  java
  • C语言中的字符串截取函数

    /*========================================================  
        子数整数  
        源程序名 num.??? (pas,c,cpp)  
        可执行文件名 num.exe  
        输入文件名 num.in  
        输出文件名 num.out  
        对于一个五位数a1a2a3a4a5,可将其拆分为三个子数:  
        sub1=a1a2a3  
        sub2=a2a3a4  
        sub3=a3a4a5  
        例如,五位数20207可以拆分成  
        sub1=202  
        sub2=020(=20)  
        sub3=207  
        现在给定一个正整数K,要求你编程求出10000到30000之间所有满足下述条件的五位数,  
        条件是这些五位数的三个子数sub1,sub2,sub3都可被K整除。  
        输入  
        输入由键盘输入,输入仅一行,为正整数K(0<K<1000)。  
        输出  
        输出到文件,输出文件的每一行为一个满足条件的五位数,要求从小到大输出。  
        不得重复输出或遗漏。如果无解,则输出“No”。  
        样例  
        num.in  
        15  
        num.out  
        22555  
        25555  
        28555  
        30000  
        ==========================================================*  
        #include <stdio.h>  
        #include <string.h>  
        char * left(char *dst,char *src, int n)  
        {  
            char *p = src;  
            char *q = dst;  
            int len = strlen(src);  
            if(n>len) n = len;  
               
            while(n--) *(q++) = *(p++);  
            *(q++)='';  
            return dst;  
        }  
        char * mid(char *dst,char *src, int n,int m)  
        {  
            char *p = src;  
            char *q = dst;  
            int len = strlen(src);  
            if(n>len) n = len-m;    
            if(m<0) m=0;    
            if(m>len) return NULL;  
            p += m;  
            while(n--) *(q++) = *(p++);  
            *(q++)='';  
            return dst;  
        }  
        char * right(char *dst,char *src, int n)  
        {  
            char *p = src;  
            char *q = dst;  
            int len = strlen(src);  
            if(n>len) n = len;  
            p += (len-n);   
            while(*(q++) = *(p++));  
            return dst;  
        }  
        void main()  
        {  
            FILE * p;  
            int i,k,outi,count=0;  
            int sub1,sub2,sub3;  
            char *strsub1,*strsub2,*strsub3,*strtempnum,*a,*b,*c;  
            if((p = fopen("num.out", "ab+")) == NULL)  
            {  
                printf("open file fail!");  
                getch();  
                exit();  
            }  
            printf("Please input int number(0<K<1000):");  
            scanf("%d",&k);  
            for(outi=10000;outi<=30000;outi++)  
            {  
                itoa(outi,strtempnum,10);  
                left(strsub1,strtempnum,3);  
                mid(strsub2,strtempnum,3,1);  
                right(strsub3,strtempnum,3);  
                sub1=atoi(strsub1);  
                sub2=atoi(strsub2);  
                sub3=atoi(strsub3);     
                if((sub1%k)==0 && (sub2%k)==0 && (sub3%k)==0)  
                {  
                    fprintf(p,"%d
    ",outi);  
                    count++;  
                    printf("outi=%d
    ",outi);  
                }  
                else  
                {  
                    fprintf(p,"%s
    ","NO");  
                }  
            }  
            printf("Count=%d    OK",count);  
            fclose(p);  
            getch();  
        }  

    更多信息:嵌入式开发

  • 相关阅读:
    923c C. Perfect Security
    hdu ACM Steps Section 1 花式A+B 输入输出格式
    我回来了
    POJ–2104 K-th Number
    bzoj1009: [HNOI2008]GT考试
    bzoj1875: [SDOI2009]HH去散步
    1898: [Zjoi2005]Swamp 沼泽鳄鱼
    Hadoop
    程序员的自我修养
    Effective C++笔记
  • 原文地址:https://www.cnblogs.com/dianzichanpin/p/3613580.html
Copyright © 2011-2022 走看看