zoukankan      html  css  js  c++  java
  • 重新实现库函数

    练习1:只用getchar函数读入一个整数。假设它占据单独的一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。

    代码:

    //改进方案  3.4.4-1 只用getchar函数读入一个整数。
    
    #include <stdio.h>
     
    int main()
    {
        int c;
        int n=0;
        while ((c=getchar())!='
    ')
        {
            n=n*10+c-'0';
        }
        printf("%d",n);
        return 0;
    }
    #include<stdio.h>
    int main()
    {
        int sum,a[100],i;
        i=0;
        sum=0;
        while((a[i]=getchar())&&a[i]!='
    ')
        {
            sum=sum*10+a[i]-'0';
            i++;
        }
        printf("%d
    ",sum);
        return 0;
    }

    练习2:只用fgets函数读入一个整数。假设它占据单独的一行,读到行末为止,包括换行符。输入保证读入的整数可以保存在int中。

    代码:

    //读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。
    //读入结束后,系统将自动在最后加'',并以str作为函数值返回。
    //函数原型是:char *fgets(char *s, int n, FILE *stream);
    //stdin(Standardinput)标准输入
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,num=0;
        char s[100];
        fgets(s,strlen(s),stdin);//stdin表示用的不是指定文件的内容 而是自己输入的内容 
        for(i=0;i<strlen(s)-1;i++)
        {
            num=num*10+s[i]-'0';
        }
        printf("%d
    ",num);
        return 0;
    }

    练习3:只用getchar实现fgets的功能,即用每次一个字符的方式读取整行。

    代码:

    #include<stdio.h>
    int main()
    {
        int i;
        char s[100];
        i=0;
        while((s[i]=getchar())&&s[i]!='
    ')
        {
            i++;
        } 
        s[i]='';
        printf("%s
    ",s);
        return 0;
    }
    //另一种方法,练习3只用getchar实现fgets的功能,即用每次一个字符的方式读取整行。
    #include<stdio.h>
    int main()
    {
        char c;
        while((c=getchar())!='
    ')
        {
            printf("%c",c);
        }
        return 0;
    }

    练习4:实现strchr的功能,即在一个字符串中查找一个字符。(注:不一定要用到strchr 只是需要得到相同的结果而已 )

    char *strchr(const char* _Str,int _Val)
    char *strchr(char* _Str,int _Ch)
    头文件:#include <string.h>
    功能:查找字符串s中首次出现字符c的位置
    说明:返回首次出现c的位置的指针,返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置,
    如果s中不存在c则返回NULL。
    返回值:成功则返回要查找字符第一次出现的位置,失败返回NULL

    代码:

    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char str[]="This is a sample string.";
        int i;
        for(i=0;i<strlen(str);i++)
        {
            if(str[i]=='s')
            {
                printf("found at %d
    ",i+1);
            }
        }
        return 0;
    }

    练习5 实现isalpha和isdigit的功能,即判断字符是否为字母/数字 

    代码:

    #include<stdio.h>
    
    int main()
    {
        char c;
        while((c=getchar())!=NULL)
        {
            if( (c>='a' && c<='z') || (c>='A' && c<='Z'))
            {
                printf("Character %c is alphabetic.
    ",c);
            }
            if(c>='0' && c<='9')
            {
                printf("Character %c is digit.
    ",c);
            }
        }
        return 0;
    }
  • 相关阅读:
    1860 最大数
    1164 统计数字
    1063 合并果子
    1098 均分纸牌
    2806 红与黑
    1168 火柴棒等式
    1910 递归函数
    2774 火烧赤壁
    2017.0705.《计算机组成原理》-存储器
    2017.0704.《计算机组成原理》-动态RAM
  • 原文地址:https://www.cnblogs.com/lipching/p/3855110.html
Copyright © 2011-2022 走看看