数字如何转换成ASCII码字符——谭浩强C课后题4.9

原题如下:

练习4.9  给一个不多于5位的正整数,求

1.它是几位数;

2.分别输出每一位数字;

3.倒序输出各位数字。

思考:1.要求输入为不多于5位的正整数

2.要取出5位中每位的数字

3.要能辨认出前几位的数字0来判断到底是几位数

在取得每位的数字然后转换成ASCII码字符时候,犯了错误。

错误代码为:

    A=(char)k/10000; k=k%10000;
    B=(char)k/1000; k=k%1000;
    C=(char)k/100; k=k%100;
    D=(char)k/10;
    E=(char)k%10;

结果总是得不到正确的字符。

经过调试,发现这样得到的零位,是空字符。才惊觉用(char)强制转换,得到的是第0个字符,而不是字符‘0’。故修改代码为:

    A=(char)(k/10000+48); k=k%10000;
    B=(char)(k/1000+48); k=k%1000;
    C=(char)(k/100+48); k=k%100;
    D=(char)(k/10+48);
    E=(char)(k%10+48);

     整体代码附后:

/******************************************************

练习4.9  给一个不多于5位的正整数,求
    1.它是几位数;
    2.分别输出每一位数字;
    3.倒序输出各位数字。

CREATE----------------------------
By:     Idooi Liu
Time:   2015/09/18-1046
----------------------------------

******************************************************/

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int integer;
    int k;              //用于取值
    int grade;          //表明是几位数
    char A, B, C, D, E; //A=万,B=千,C=百,D=十,E=个

    do{
        printf("Please intput your number:\n");
        scanf("%d", &integer);
    }while(integer>99999 || integer<=0);

    k=integer;
    A=(char)(k/10000+48); k=k%10000;
    B=(char)(k/1000+48); k=k%1000;
    C=(char)(k/100+48); k=k%100;
    D=(char)(k/10+48);
    E=(char)(k%10+48);

    if(A!=‘0‘)
    {
        printf("%d 是五位数\n", integer);
        grade=5;
    }
    else if(B!=‘0‘)
    {
        printf("%d 是四位数\n", integer);
        grade=4;
    }
    else if(C!=‘0‘)
    {
        printf("%d 是三位数\n", integer);
        grade=3;
    }
    else if(D!=‘0‘)
    {
        printf("%d 是两位数\n", integer);
        grade=2;
    }
    else{
        printf("%d 是个位数\n", integer);
        grade=1;
    }

    switch(grade)
    {
        case 1: printf("%c\n", E);printf("%c\n", E);break;
        case 2: printf("%c%c\n", D,E);printf("%c%c\n", E,D);break;
        case 3: printf("%c%c%c\n", C,D,E);printf("%c%c%c\n", E,D,C);break;
        case 4: printf("%c%c%c%c\n", B,C,D,E);printf("%c%c%c%c\n", E,D,C,B);break;
        case 5: printf("%c%c%c%c%c\n", A,B,C,D,E);printf("%c%c%c%c%c\n", E,D,C,B,A);
                break;
    }

    return 0;
}
时间: 2024-10-11 00:13:31

数字如何转换成ASCII码字符——谭浩强C课后题4.9的相关文章

ASCII码字符对照表

ASCII码字符对照表 ASCII码大致由三部分组成: 1.ASCII 打印字符:数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现.注:十进制32代表空格 ,十进制数字 127 代表 DELETE 命令.下面是ASCII码和相应数字的对照表 ASCII 码 字符   ASCII 码 字符   ASCII 码 字符   ASCII 码 字符 十进位 十六进位   十进位 十六进位   十进位 十六进位   十进位 十六进位 032 20     056 38 8  

【C语言】数字字符串转换成这个字符串对应的数字。

(1) int ascii_to_integer(char *str)函数实现. 要求:这个字符串参数必须包含一个或者多个数字,函数应该把这些数字转换为整数并且返回这个整数.如果字符串参数包含任何非数字字符,函数就返回零.不必担心算数溢出. 提示:你每发现一个数字,把当前值乘以10,并把这个值和新的数字所代表的值相加. 直接上代码: #include <stdio.h> #include <assert.h> int ascii_to_integer(char *str) { in

【C语言】将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)

#include <stdio.h> /* 编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数.负浮点数) 例如:"12.34" 返回12.34 "-123.34" 返回-123.34 函数原型:double my_atof(char *str) {} */ double my_atof(char *str) { double m=0,n=0,x=1; int flag=1; int flag2=0; if(*str=='-') //

【C语言】编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数、负整数)

/* 编写一个函数,将一个数字字符串转换成该字符串对应的数字(包括正整数.负整数) 例如:"12" 返回12 "-123" 返回-123 函数原型:int my_atof(char *str) */ #include <stdio.h> int my_atof(char *str) { int flag=0; int m=0; if(*str=='-') { flag=1; str++; } while(*str!='\0') { if(*str<

将整形数字(int)转换成字符串

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<string.h> void itoa(int n, char *buf) { int count = 0; char nu; char buf2[128] = { 0 }; //核心算法很简单 就是每次取出各位数字然后把数字转存进数组,中间有一个数组匿置的过程 do

PHP算法--将数字金额转换成大写金额

最近在看一些PHP算法题,遇到一个将数字金额转换成大写金额的小算法题,这里贴出自己的一个例子. 注:这个小算法适用于10万以内的金额. <?php //$num = 12345.67; function RMB_Upper($num) { $num = round($num,2); //取两位小数 $num = ''.$num; //转换成数字 $arr = explode('.',$num); $str_left = $arr[0]; // 12345 $str_right = $arr[1]

汇编相关(ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表)

汇编相关 一些关于汇编的常用东西,包括: ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表 ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表

C语言 将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数 函数原型:double my_atof(char *str)

编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数.负浮点数) 例如:"12.34"  返回12.34 "-123.34" 返回-123.34 函数原型:doublemy_atof(char *str) 提示: 需要在函数中判断负号,小数点,还要判断是不是数字字符.在判断小数点时需定义一个计数器来计算小数点后数字字符的个数. #include <stdio.h> #include <math.h> double my_at

EXCEL 数字统一转换成文本

将excel中的数字统一转换成文本形式.即添加‘. 1.点击数据-分列. 2.分隔符号-下一步. 3.选择文本识别符号,如“‘”分号. 4. 选中文本-完成.