首页 新闻 会员 周边

为什么去掉j++,分别在每个case里j赋值多加1就死循环?

1
悬赏园豆:10 [待解决问题]

/*
* 第一题:拼音转数字
* 输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
* 描述: 拼音 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;

}

长弓391的主页 长弓391 | 初学一级 | 园豆:192
提问于:2016-07-06 21:16
< >
分享
所有回答(3)
0

如果让我用powershell解这道题,就是n个查找替换,shell通用做法。

PowerShell免费软件 | 园豆:332 (菜鸟二级) | 2016-07-06 21:32
0

你只注意到了switch,不J++ ,while 怎么办?

sendosi | 园豆:206 (菜鸟二级) | 2016-07-07 08:17
0

你的switch外面还有一个while循环啊,j是控制你循环的变量, 去掉j++肯定就死循环了啊

宿舍老五啊 | 园豆:86 (初学一级) | 2016-07-21 11:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册