• C程序设计语言学习笔记(一)


    最近在通过《C程序设计语言》 重新系统学习C语言,书中第三章中的部分习题记录下来。读国外出版的教材与国内的教材,感触比较大的就是,国外教材的讲解通俗易懂,而练习题相对复杂,需要学生自己思考钻研才能比较完善的做出来。而国内的教材很多都晦涩难懂,且习题很水,比较不能激发学生自己的思考能力。废话不说,大致代码如下,主要是一些数字和字符串的转换代码

    #include<stdio.h>
    #include<string.h>
    
    /*反转字符串*/
    void reverse(char s[])
    {
        int i,l;
        char c;
        for(i = 0,l = strlen(s) - 1;i < l;i++,l--)
        {
            c = s[i];
            s[i] = s[l];
            s[l] = c;
        }
    }
    /*将数字转换为字符串*/
    void rtitoa(int n, char s[])
    {
        int sign = 1;
        int i = 0;
        unsigned long nn;
        if(n < 0)
        {
            sign = -1;
            nn = (unsigned long)(-n);  /*此处的转换为了防止负数溢出,如最小的负数求相反数仍是负数,故需转换成unsigned long*/
        }
        else
        {
            nn = (unsigned long)n;
        }
    
        do
        {
            s[i++] = (nn % 10) + '0';
        }while((nn /= 10) > 0);
    
        if(sign == -1)
        {
            s[i++] = '-';
        }
        s[i] = '\0';
        reverse(s);
    }
    /*将数字转换为字符,并指定最小宽度*/
    void rtitoa2(int n, char s[], int l)
    {
        int sign = 1;
        int i = 0;
        unsigned long nn;
        if(n < 0)
        {
            sign = -1;
            nn = (unsigned long)(-n);
        }
        else
        {
            nn = (unsigned long)n;
        }
    
        do
        {
            s[i++] = (nn % 10) + '0';
        }while((nn /= 10) > 0);
    
        if(sign == -1)
        {
            s[i++] = '-';
        }
        while(i < l)
          s[i++] = ' ';
        s[i] = '\0';
        reverse(s);
    }
    
    /*将数字转换为字符串,并以base为进制*/
    void rtitob(int n, char s[], int base)
    {
        int i = 0;
        int digit = 0;
        unsigned long nn = (unsigned long)n;
    
        do
        {
            digit = nn %base;
            if( digit <= 9 )
            {
                s[i++] = digit + '0';
            }
            else
            {
                s[i++] = digit - 10 + 'a';
            }
        }while((nn /= base) > 0);
    
        s[i] = '\0';
        reverse(s);
    }
    int main()
    {
        int x = -1234;
        char s[33] = "";
        rtitoa2(x,s,6);
        printf("%s\n", s);
        return 0;
    }
  • 相关阅读:
    EasyUI
    intellij idea打包maven项目
    struts2框架详解
    java电子书
    查看mysql安装路径
    springboot 集成 vue
    C#中的属性
    C#中的时间戳
    int.TryParse非预期执行引发的思考
    IQueryable 和 IEnumerable 的区别
  • 原文地址:https://www.cnblogs.com/renteng/p/2808978.html
Copyright © 2020-2023  润新知