zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    打开模拟器genymotion 的设置 查询设置的包名
    python 地板除 向下取整 取比目标结果小的的最大整数
    python 复数
    python 0.1+0.2 不等于0.3 的处理办法
    python 利用随机数的种子,复现随机数
    小程序 单独页面的js文件里设置 数据绑定
    问题集
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业05
    2020软件工程作业04
  • 原文地址:https://www.cnblogs.com/renteng/p/2808978.html
Copyright © 2011-2022 走看看