| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1674 人关注过本帖
标题:C语言数字和字符转化的问题~!
只看楼主 加入收藏
zl861216
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
C语言数字和字符转化的问题~!
谁帮忙写个函数,需求是这样的:
写个函数,作用就是把数字转化为字符串,其中0代表A6,1代表D5,2代表K3,3代表ML,4代表FP,5代表G5,6代表KA,7代表A3,8代表ZJ,9代表IF,我输入一串数字,那么通过你写的函数后,就可以变成这些数字对应的字符串了
比如说,我输入25879,那么输出结果应该为:K3G5ZJA3IF
搜索更多相关主题的帖子: C语言 数字 字符 
2010-06-22 13:05
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:0 
程序代码:
/*该程序只接受在int值范围内的有效值*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define N 100

int main(void)
{
    /*定义接收输入的int数*/
    int data = 0;

    /*最终输出的字符序列(注意是反序,print时使用strrev函数倒序输出)*/
    char * str = (char*)malloc(N);
    *str = NULL;

    /*接收要转换的数字*/
    printf("Pls input the data you want to transfer:");
    scanf("%d", &data);

    /*循环判断每次data最后一位数字并将对应的字符串加到str后面*/
    while(0 != data)
    {
        switch(data%10)
        {
        case 0:
            strcat(str, "6A");break;
        case 1:
            strcat(str, "5D");break;
        case 2:
            strcat(str, "3K");break;
        case 3:
            strcat(str, "LM");break;
        case 4:
            strcat(str, "PF");break;
        case 5:
            strcat(str, "5G");break;
        case 6:
            strcat(str, "AK");break;
        case 7:
            strcat(str, "3A");break;
        case 8:
            strcat(str, "JZ");break;
        case 9:
            strcat(str, "FI");break;
        default:
            break;
        }

        data = data / 10;
    }

    /*反序输出str*/
    printf("\n%s\n", strrev(str));

    /*释放申请的str空间*/
    free(str);
    getchar();
    return 0;
}
2010-06-22 15:20
zl861216
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-22
收藏
得分:0 
回复 2楼 dstone
嗯,非常感谢回复
现在我的输入值是个变量,我是用变量名来代替的,请问一下,如何修改???

感谢了,我的QQ275169806
2010-06-22 15:24
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:0 
去掉data的定义和接收data输入值的代码,将后面的data用你的变量名代替就可以了
2010-06-22 16:07
yunfeishizhe
Rank: 2
等 级:论坛游民
帖 子:40
专家分:54
注 册:2010-4-3
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 16
char* change(char* string ,unsigned long num);
main()
{
    unsigned long data;
    printf(" Enter the number: ");
    scanf("%uld",&data);
    char string[MAX_SIZE*2]={'\0'};
    change(string,data);
    printf("%s\n",string);

   
}
char *change(char* string ,unsigned long  num)
{
    char *temp;
    int i=0;
    temp=(char*) malloc(MAX_SIZE*sizeof(char));
    itoa(num,temp,10);
    while(*(temp+i)!='\0')
    {
        switch(*(temp+i))
        {
        case '0':
            strcat(string,"A6");
            break;
        case'1':
            strcat(string,"D5");
            break;
        case'2':
            strcat(string,"K3");
            break;
        case'3':
            strcat(string,"ML");
            break;
        case'4':
            strcat(string,"FP");
            break;
        case'5':
            strcat(string,"G5");
            break;
        case'6':
            strcat(string,"KA");
            break;
        case'7':
            strcat(string,"A3");
            break;
        case'8':
            strcat(string,"ZJ");
            break;
        case'9':
            strcat(string,"IF");
            break;
        default: return NULL;
        }
        i++;
    }
    free(temp);
    return string;
}
2010-06-22 16:52
zl861216
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-22
收藏
得分:0 
回复 4楼 dstone
嗯,明白了,感谢~!
我现在还想把我的运行结果给保留下来,以供我别的连接中调用他,请问一下,如何修改呢???
2010-06-22 17:41
zl861216
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-22
收藏
得分:0 
这里是原话,请高手们帮忙指点一下。。
情况是这样的:录制到的脚本中,我是用关联函数,将关联到的值(是一串阿拉伯数字)取了出来,但是这个值需要做转码,转完了,我在继续调用它。

转码规则为:其中0代表A6ZZ,1代表D5ZZ,2代表K3ZZ,3代表MLZZ,4代表FPZZ,5代表G5ZZ,6代表KAZZ,7代表A3ZZ,8代表ZJZZ,9代表IFZZ,如果我关联到的值取出来的数字为123456789,那么经过转码后,输出结果应该为A6ZZD5ZZK3ZZMLZZFPZZG5ZZKAZZA3ZZZJZZIFZZ这么一串字符。


下面为一部分脚本:

        web_reg_save_param("FILEID001",
        "LB=name=\"fileId\" value=\"",
        "RB=\"",
        LAST);

    web_submit_data("marmot.rpc.d",
        "Action=http://10.190.51.22:1999/CPIC09Auto/marmot.rpc.d?__rpc=true&__rpcAgent=true",
        "Method=POST",
        "RecContentType=text/html",
        "Referer=http://10.190.51.22:1999/CPIC09Auto/dorado/smartweb2.showRPCSubmitter.d",
        "Snapshot=t63.inf",
        "Mode=HTTP",
        ITEMDATA,
        "Name=__type", "Value=base", ENDITEM,
        "Name=__xml", "Value=<rpc method=\"printTestPage\"><ps><p name=\"_resolver\">printResolver</p></ps></rpc>", ENDITEM,
        "Name=__viewInstanceId", "Value=org.view.authorization.mainMenu~org.view.authorization.mainMenuViewModel", ENDITEM,
        LAST);

    web_url("DownloaderServlet",
        "URL=http://10.190.58.110:8080//ITDS/servlet/DownloaderServlet?fileid=A6H8A6Q8KAC3IFP2MLQ8K30AA6B0ZJJ4D5G6D52R&type=1&version=3.4.6",
        "Resource=1",
        "RecContentType=application/octet-stream",
        "Referer=",
        "Snapshot=t64.inf",
        LAST);

    web_custom_request("ReportServlet",
        "URL=http://10.190.58.110:8080//ITDS/servlet/ReportServlet?itdsencoding=1&fileid=A6H8A6Q8KAC3IFP2MLQ8K30AA6B0ZJJ4D5G6D52R&type=1&printednum=0",
        "Method=POST",
        "Resource=0",
        "Referer=",
        "Mode=HTTP",
        "EncType=",
        LAST);
    其中FILEID001是个变量,已经赋过值
    现在我需要将{FILEID001}这里面的值进行转码,转码后变成类似这样的值A6H8A6Q8KAC3IFP2MLQ8K30AA6B0ZJJ4D5G6D52R,以供下面的连接进行调用
2010-06-22 17:44
dstone
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:20
专家分:125
注 册:2010-6-17
收藏
得分:20 
调用下面的函数,将你的{FILEID001}作为int值传递给transfer()函数,接收返回值,只要确定接收的对象的空间足够接收返回值就可以
了。
程序代码:
char * transfer(int data)
{
    /*最终输出的字符序列(注意是反序,print时使用strrev函数倒序输出)*/
//   char * str = (char*)malloc(N);
// *str = NULL;

    /*循环判断每次data最后一位数字并将对应的字符串加到str后面*/
    while(0 != data)
    {
        switch(data%10)
        {
        case 0:
            strcat(str, "ZZ6A");break;
        case 1:
            strcat(str, "ZZ5D");break;
        case 2:
            strcat(str, "ZZ3K");break;
        case 3:
            strcat(str, "ZZLM");break;
        case 4:
            strcat(str, "ZZPF");break;
        case 5:
            strcat(str, "ZZ5G");break;
        case 6:
            strcat(str, "ZZAK");break;
        case 7:
            strcat(str, "ZZ3A");break;
        case 8:
            strcat(str, "ZZJZ");break;
        case 9:
            strcat(str, "ZZFI");break;
        default:
            break;
        }

        data = data / 10;
    }

    /*反序存储str*/
    str = strrev(str);
    return str;
}

2010-06-22 20:24
陛下
Rank: 2
来 自:南宁
等 级:论坛游民
帖 子:62
专家分:90
注 册:2010-5-15
收藏
得分:0 
一样的啊
你如果已经理解前面那道题
后面的应该也会该一下了吧
编程不是什么都要人家教的
很多时候是靠自己摸索出来的
那样你才会进步更快
毕竟经过自己想过的东西会有不一样的想法
2010-06-22 23:21
zl861216
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-6-22
收藏
得分:0 
好的,感谢~!
2010-06-23 15:25
快速回复:C语言数字和字符转化的问题~!
数据加载中...
 
   



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

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