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; }