C语言数字和字符转化的问题~!
谁帮忙写个函数,需求是这样的:写个函数,作用就是把数字转化为字符串,其中0代表A6,1代表D5,2代表K3,3代表ML,4代表FP,5代表G5,6代表KA,7代表A3,8代表ZJ,9代表IF,我输入一串数字,那么通过你写的函数后,就可以变成这些数字对应的字符串了
比如说,我输入25879,那么输出结果应该为:K3G5ZJA3IF
程序代码:/*该程序只接受在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;
}
程序代码:
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;
}