请问这里读入多组号码应该用什么输入?
Description
吉祥物cjc最近在背单词,但是他的英语是在太差了。连用英语读电话号码都不会,于是他希望你能帮他。
Input
先输入一个T,有T组测试数据。
每组测试数据有一串号码,号码(长度0< len < 20)有两种形式①手机号码,eg:13500000000②区号 家庭电话号码(区号和号码之间用一个空格隔开),eg:0577 62222222
Output
比如说 :0->zero;1->one;2->two;3->three…..
Samples
input
2
12345678900
0577 67890987
output
one two three four five six seven eight nine zero zero
zero five seven seven six seven eight nine zero nine eight seven
#include<stdio.h>
#include<string.h>
char a[10][6] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
// 将一个号码 转换成对应的英文
char* convert(char* origin) {
char p[150] = {""};
int i = 0;
char temp;
while ((temp = *(origin + i)) != '\0')
{
if (temp >= '0' && temp <= '9')
{
strcat(p, a[temp - '0']);
strcat(p, " ");
}
i++;
}
char *ch = p;
return ch;
}
int main()
{
int n, i;
scanf("%d",&n);
char g[n][20];
char s[n][150];
getchar();
for(i=0;i<n;i++)
{
gets(g[i]);
strcpy(s[i], convert(g[i]));
}
for (i=0;i<n;i++)
{
printf("%s\n", s[i]);
}
return 0;
}
逐字符读入比较好。
示例代码:
#include<stdio.h>
const char *str[]={
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};
int main(){
int T;
char c;
scanf("%d\n",&T);
while(T>0){
c=getchar();
if(c>='0'&&c<='9'){
printf("%s ",str[c-'0']);
}else if(c=='\n'){
putchar(c);
T--;
}
}
return 0;
}
运行结果: