/*
* 第一题:拼音转数字
* 输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
* 描述: 拼音 yi er san si wu liu qi ba jiu
* 阿拉伯数字 1 2 3 4 5 6 7 8 9
* 输入字符只包含小写字母,所有字符都可以正好匹配
*
* 运行时间限制:无限制
* 内存限制: 无限制
* 输入: 一行字符串,长度小于1000
* 输出: 一行字符(数字)串
* 样例输入: yiersansi
* 样例输出: 1234
********************************************************************************/
#include<stdio.h>
#define N 1000
int main()
{
char a[N]={0},i=0,j=0;
printf("please input the nmb:\n");
while(a[i-1]!='\n')
{
scanf("%c",&a[i]);
i++;
}
while(j<i)
{
switch(a[j])
{
case 'y':
printf("%d",1);
j=j+1;
break;
case 'e':
printf("%d",2);
j=j+1;
break;
case 's':
if(a[j+1]=='a')
{
printf("%d",3);
j=j+2;
}
else
{
printf("%d",4);
j=j+1;
}
break;
case 'w':
printf("%d",5);
j=j+1;
break;
case 'l':
printf("%d",6);
j=j+2;
break;
case 'q':
printf("%d",7);
j=j+1;
break;
case 'b':
printf("%d",8);
j=j+1;
break;
case 'j':
printf("%d",9);
j=j+2;
break;
deafult:
printf("input is error!\n");
}
j++;
}
printf("\n");
return 0;
}
如果让我用powershell解这道题,就是n个查找替换,shell通用做法。
你只注意到了switch,不J++ ,while 怎么办?
你的switch外面还有一个while循环啊,j是控制你循环的变量, 去掉j++肯定就死循环了啊