首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解释解决方案

2012-05-24 
求解释#includestdio.hchar b[99]int m0int main(){void atob(long n)long a,cscanf(%ld,&a)ca

求解释
#include<stdio.h>
char b[99];
int m=0;
int main()
{
void atob(long n);
long a,c;
scanf("%ld",&a);
c=a;
while(c/10!=0)
{
m++;  
c=c/10;
}
atob(a); 
puts(b);  
return 0;
}
void atob(long n)
{
int i;
if((i=n/10)!=0)
atob(i);
b[m--]=n%10+48;
} 这段实现长整型的倒序字符串输出 如123 则321 看不懂 求解释

[解决办法]

C/C++ code
#include<stdio.h>char b[99]; //用于存储转换后的数字的字符形式,以123为例,转换后就是b[0] = '3',b[1] = '2',b[2] = '1',int m=0; //用于标记数组b的最大下标,以123为例,因为它的长度为3,所以最大下标是就是2int main(){    void atob(long n);    long a,c;    scanf("%ld",&a);    c=a;    //计算b的最大下标,每次除以10,除到个位数的时候就跳出循环了,以123为例,得出m等于2    while(c/10!=0)    {        m++;           c=c/10;    }    //这是一个递归函数    atob(a);      puts(b);       return 0;}void atob(long n){    int i;    if((i=n/10)!=0)        atob(i); //每次递归就除以10,一直递归到最前面一个数,以1、2、3的顺序分别存储在b[2] ,b[1] ,b[0] 中,    b[m--]=n%10+48;//  %10就是得出个位数, 加48是将数字转换为字符,比如3的字符为'3','3'就等于 3 + 0x30或者3 + 48}
[解决办法]
C/C++ code
#include<stdio.h>#include<stdlib.h>    char b[99];    int m=0;int main(){    void atob(long n);    long a,c;    scanf("%ld",&a);                   //输入123 a = 123    c=a;                               //c = 123    while(c/10!=0){                            m++;                           //统计输入数字的位数m        c=c/10;                                  }    atob(a);                           //跟据定义,atob函数起到转换作用    puts(b);      system("pause");    return 0;}void atob(long n){    int i;    if((i=n/10)!=0)                            atob(i);                       //递归    b[m--]=n%10+48;                    //数字转换成字符输出} /* 递归展开atob(123){        i=12;    12!=0        atob(12){            i=1;            1!=0                atob(1){                    b[2]=49;                }            b[1]=50;        }    b[0]=51;}*/ 

热点排行