标题:关于switch函数的一个小问题。
只看楼主
苯宝宝有毒
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2016-5-7
结帖率:66.67%
已结贴  问题点数:5 回复次数:8 
关于switch函数的一个小问题。
本宝宝就是想简单地用switch语句写一个小程序,难道写不出来吗?
就是输入水果的中文名称然后输出相应的英文名。
老是搞不出来啊 啊啊啊!可有大神愿意帮忙。
程序代码:
#include <stdio.h>
main ()
   {char a;
    printf("请输入需要翻译的水果的名称\n");
    scanf("%c",&a);
    switch(a)
    {case 'b':  printf("banana\n");break;
     case 'c':  printf("apple\n");break;
     }
   return 0;
  }
搜索更多相关主题的帖子: 英文名 color 中文 水果 
2016-05-07 14:45
苯宝宝有毒
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2016-5-7
得分:0 
希望有人能帮助
2016-05-07 14:45
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:3 
程序代码:
#include <stdio.h>
int main ()
    {char a;
     printf("请输入需要翻译的水果的名称\n");
     scanf("%c",&a);
     switch(a)
     {case 'b':  printf("banana\n");break;
      case 'c':  printf("apple\n");break;

      }
    return 0;
   }

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-07 14:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>

int _fruit(char sz[])
{
    char fruit[2][5]= {"香蕉","苹果"};
    for (int i=0; i<2; i++)
    {
        if (strcmp(fruit[i], sz) == 0)
        {
            return i;
        }
    }
    return -1;
}

main ()
{
    char sz[20];
    printf("请输入需要翻译的水果中文名称:");
    scanf("%s", sz);
    switch(_fruit(sz))
    {
        case 0:
            printf("%s -> banana\n", sz);
            break;
        case 1:
            printf("%s -> apple\n", sz);
            break;
        default:
            printf("没找到\n");
    }
}
2016-05-07 17:23
苯宝宝有毒
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2016-5-7
得分:0 
回复 3楼 zhulei1978
你这是水帖啊!
2016-05-07 18:55
苯宝宝有毒
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2016-5-7
得分:0 
回复 4楼 吹水佬
天呐,这就是大神啊。可是我还没有学studio<string.h>,虽然之前在网上有看到过汉字是两个字符长度,不适合switch语句,据说要用到数组,多谢大神让我开眼界。
2016-05-07 19:05
苯宝宝有毒
Rank: 2
等 级:论坛游民
帖 子:15
专家分:20
注 册:2016-5-7
得分:0 
回复 4楼 吹水佬
思路我已经明白了,只是有些函数还没有学到而已,再次感谢层主。
2016-05-07 19:09
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
得分:0 
#include <stdio.h>
int main ()
     {char a;
      printf("请输入需要翻译的水果的名称\n");
      scanf("%c",&a);
      switch(a)
      {case 'b':  printf("banana\n");break;
       case 'c':  printf("apple\n");break;

       }
     return 0;
    }

其实我就是改变社会风气,提高少女素质,刺激电影市道,提高年轻人内涵,玉树临风,风度翩翩的整蛊专家,我名叫古晶,英文名叫JingKoo!
2016-05-07 19:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用苯宝宝有毒在2016-5-7 19:09:49的发言:

思路我已经明白了,只是有些函数还没有学到而已,再次感谢层主。

这类问题可以不用 switch,用查字典法。
程序代码:
#include <stdio.h>
#include <assert.h>
#include <string.h>

#define RECORD_COUNT 10
#define BUFFER_SIZE  20
const char dictionary[RECORD_COUNT][BUFFER_SIZE][BUFFER_SIZE]=
{
    {"香蕉", "banana"},
    {"苹果", "apple"},
    {"葡萄", "Grape"},
    {"柠檬", "Lemon "},
    {"橙子", "Orange"},
    {"",   "Pear"},
    {"西瓜", "Watermelon"}
};

char* _fruit(const char *inChinese, char *outEnglish)
{
    assert((inChinese != NULL) && (outEnglish != NULL));     
    for (int i=0; i<RECORD_COUNT; i++)
    {
        if (strcmp(dictionary[i][0], inChinese) == 0)
        {
            strcpy(outEnglish, dictionary[i][1]);
            return outEnglish;
        }
    }
    strcpy(outEnglish, "没找到");
    return outEnglish;
}

main ()
{
    char sz[BUFFER_SIZE], buff[BUFFER_SIZE];
    printf("请输入需要翻译的水果中文名称:");
    scanf("%s", sz);
    printf("%s -> %s\n", sz, _fruit(sz, buff));
}



[此贴子已经被作者于2016-5-8 08:33编辑过]

2016-05-08 08:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464489-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.070242 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved