| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:为什么输出中文,还有for向递归的转换!
只看楼主 加入收藏
woshiaokeman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:123
注 册:2011-4-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
为什么输出中文,还有for向递归的转换!
题目:用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。

下面是我写的,但是就是输出中文(乱码)……
#include <stdio.h>
#include <math.h>
main()
{
    int number1,number2;
    int i,j;
    char a[100];
    scanf("%d",&number1);
    number2=number1;
    for(i=1;;i++) /* 这里是判断输入数是几位数 */
    {
        if(number2/10!=0) number2/=10;
        else break;
    }
    for(j=0;;j++) /* 这里是把输入的数字改变成字符 */
    {
        if(i>=0)
        {
        a[j]=(char)(number1*pow(10,--i)+48);
        }
        else
        {
            a[j]='\0';break;
        }
    }
    puts(a);
}

还有就是如何向递归法的转换!?题目所说的用递归法是哪个部分!?

谢谢各位大哥大姐的指点!
搜索更多相关主题的帖子: include 字符串 中文 
2011-07-28 16:41
Magic_Q
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:23
专家分:102
注 册:2011-7-27
收藏
得分:0 
#include <stdio.h>

main()
{
    int number;
    printf("Input a number...");
    scanf("%d",&number);
    printf("Input number is:%d\r\n", number);
    printf("Press any key to exit...");
    getch();
}
2011-07-28 17:14
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:15 
程序代码:
#include <stdio.h>
#include <string.h>

void fun(int n,char *a)
{
    if(0 == n)
        return;
    a[0] = n%10+48;
    fun(n/10,a+1);
}
int main()
{
    int n = 0;
    scanf("%d",&n);
    char num[100] = {0};
    fun(n,num);
    int len = strlen(num);
    for(int i = len-1;i>=0;i--)
        putchar(num[i]);
    printf("\n");
    return 0;
}
其实就是求余和除10  然后递归的时候传递字符数组 递归出口为整数等于0

                                         
===========深入<----------------->浅出============
2011-07-28 18:20
张敏樱木花道
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:137
注 册:2011-3-26
收藏
得分:5 
#include <stdio.h>
#include <math.h>
main()
{
    int number1,number2;
    int i,j;
    char a[100];
    scanf("%d",&number1);
    number2=number1;
    for(i=1;;i++) /* 这里是判断输入数是几位数 */
    {
        if(number2/10!=0) number2/=10;
        else break;
    }
    for(j=0;;j++) /* 这里是把输入的数字改变成字符 */
    {
        if(i>=0)
        {
        a[j]=(char)(number1*pow(10,--i)+48);//这个地方有问题。思路出错了,你用强转,那么转的是什么呢?number1*pow(10,--i)+48,是一个整数。这个数超出了char的范围,所以显示中文乱码。你想通过将assic码加48来实现字符转换,这个方向是对的,可是你还没有真正理解字符的含义,所以才出现这个错误。
        }
        else
        {
            a[j]='\0';break;
        }
    }
    puts(a);
}

2011-07-28 19:21
快速回复:为什么输出中文,还有for向递归的转换!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040755 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved