栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言整数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言整数

以下表格中,重点记住第一、二行十进制的输出格式,二十年来,八进制数我从来没有用过,十六进制数只在显示内存的地址时见过,所以大家不必关心八进制和十六进制的相关知识,了解即可。

%hd、%d、%ld

以十进制、有符号的形式输出short、int、long 类型的整数。

%hu、%u、%lu

以十进制、无符号的形式输出short、int、long 类型的整数。

%ho、%o、%lo

以八进制、不带前缀、无符号的形式输出 short、int、long 类型的整数

%#ho、%#o、%#lo

以八进制、带前缀、无符号的形式输出   short、int、long 类型的整数

%hx、%x、%lx
  %hX、%X、%lX

以十六进制、不带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字也小写;如果 X 大写,那么输出的十六进制数字也大写。

%#hx、%#x、%#lx
  %#hX、%#X、%#lX

以十六进制、带前缀、无符号的形式输出 short、int、long 类型的整数。如果 x 小写,那么输出的十六进制数字和前缀都小写;如果 X 大写,那么输出的十六进制数字和前缀都大写。

如果输出需要带前缀,那就在%后面加上#,输出时会显示前缀。

1000,1000,1000
1000,1000,1000
1750,1750,1750
01750,01750,01750
3e8,3e8,3e8
0x3e8,0x3e8,3e8

#include 

int main()
{
        int a=1000;

        printf("%hd,%d,%ldn",a,a,a); 
        printf("%hu,%u,%lun",a,a,a);
        printf("%ho,%o,%lon",a,a,a);
        printf("%#ho,%#o,%#lon",a,a,a);
        printf("%hx,%x,%lxn",a,a,a);
        printf("%#hx,%#x,%lxn",a,a,a);
        return 0;
}

h:short

d:十进制

o:   八进制

x:十六进制

#:  八进制和十六进制的前缀

经常用到的几个库函数

       #include

       int atoi(const char *nptr);                    //把字符串nptr转换成为int整数
       long atol(const char *nptr);                 //把字符串nptr转换为long整数
       long long atoll(const char *nptr);        //求int整数的绝对值        
       long long atoq(const char *nptr);        //求long整数的绝对值

随机数

在实际开发中,会用到随机数这个功能,例如编写游戏类的程序时就需要用到随机数。

1、生成随机数

在C语言中,我们使用 头文件中的 srand和rand 函数来生成随机数。

void srand(unsigned int seed);      // 随机数生成器的初始化函数
int  rand();                        // 获一个取随机数

srand函数初始化随机数发生器(俗称种子),在实际开发中,我们可以用时间作为参数,只要每次播种的时间不同,那么生成的种子就不同,最终的随机数也就不同,通常我们采用 头文件中的 time 函数即可得到一个精确到秒的时间作为种子。

编写示例程序,把字符串里的数字全部加起来,例如字符串是"90576483975423",全部加起来结果是72。

//用于把数字的字符转换为整数,str为用字符方式表示的数字,函数的返回值为数字的整数
//如果str不是数字的字符,函数返回-1.
int ctoi(const char str)
{
        switch(str)
        {
                case '0': return 0;
                case '1': return 1;
                case '2': return 2;
                case '3': return 3;
                case '4': return 4;
                case '5': return 5;
                case '6': return 6;
                case '7': return 7;
                case '8': return 8;
                case '9': return 9;
                default: return -1;
        }
}

int main()
{
    char str[21];
    memset(str,0,sizeof(str));
    strcpy(str,"34723743672");
    
    int i=0;

    int result=0;

    for(i=0;str[i]!=0;i++)
    {
        result=result+ctoi(str[i]);
    }

    printf("%s 加起来可以等于 %dn",str,result);
}

11)重写整数的atoi和atol库函数,实现其功能,函数的声明如下:

int   ATOI(const char *nptr);      // 把字符串nptr转换为int整数
long ATOL(const char *nptr);      // 把字符串nptr转换为long整数

提示:例如字符串的"12305",转为整数12305,拆开就是10000+2000+300+0+5,即1*104+2*103+3*102+0*101+5*100

int POW(const int n,const int m)
{
    int result;
    if(m=0)    result=1;
    for(int i=1;i<=n;i++)
    {
        result*=n;
    }
    return result;
}

//用于把数字的字符转换为整数,str为用字符方式表示的数字,函数的返回值为数字的整数
//如果str不是数字的字符,函数返回-1.
int ctoi(const char str)
{
        switch(str)
        {
                case '0': return 0;
                case '1': return 1;
                case '2': return 2;
                case '3': return 3;
                case '4': return 4;
                case '5': return 5;
                case '6': return 6;
                case '7': return 7;
                case '8': return 8;
                case '9': return 9;
                default: return -1;
        }
}

int main()
{
    char str[21];
    memset(str,0,sizeof(str));
    strcpy(str,"12345");

    int i=0;
    
    //计算字符串长度
    int len=strlen(str);

    int result=0;
    for(i=0;str[i]!=0;i++)
    {
        result=result+(ctoi(str[i])*POW(10,--len));
    }
    printf("%s=%dn",str,result);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656770.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号