翡翠墨水 发表于 2013-3-20 18:35:30

C 语言跪,求解决方法

本帖最后由 翡翠墨水 于 2013-3-20 18:37 编辑

void translateNumber(int * optionStats, char * phoneNumber)
{
         
}
收到的其中的一个
是使用Char 和 getstring 来 检查输入的字符串,是字母的立刻转换为数字

指针和get string 不熟悉,求解决方式……

比如输入 1-800-COL-LECT就能得到
1-800-265-5328
2=ABC, 3=DEF, 4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV, 9=WXYZ

Mr_Alex 发表于 2013-3-20 20:58:13

啊 又是C 召唤W@Whisper1166   @42#

不过我觉得这个用字符遍历处理就可以做的啊 ,应该不用指针的吧
或者干脆就是替换,用正则表达式,简单快捷~ @ou#

foodszhu 发表于 2013-3-20 22:25:39

写个函数转换吧..
int change(char c)
{
    if(c < 65)
    {
      return c;
    }
    else
    {
      char f = (c - 65) / 3 + 2;
      if(f < 10)
      {
            return f + 48;
         }
      else
      {
            return 9 + 48;
         }
}
仅限字母均大写,没有干扰字符的情况

翡翠墨水 发表于 2013-3-22 21:49:41

本帖最后由 翡翠墨水 于 2013-3-24 22:36 编辑

foodszhu 发表于 2013-3-20 22:25 static/image/common/back.gif
写个函数转换吧..
int change(char c)
{

打破脑袋想了一个晚上解决了



已经碾压了


不过有位同学不负责任的直接照用了。。然后 被老师抓到。。。。。我只好3这段Code了

思路就是 使用了case, casea-c 是2 这样来的

Evanue 发表于 2013-3-24 12:52:18

这个太简单了。。

Evanue 发表于 2013-3-24 13:59:24

本帖最后由 Evanue 于 2013-3-24 14:09 编辑

void translateNumber1(int * optionStats, char * phoneNumber)
{
      char* str = phoneNumber;

      printf("%s\n", str);

      //2=ABC, 3=DEF, 4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV, 9=WXYZ

      int charToNum[] = {
                '2','2','2',
                '3','3','3',
                '4','4','4',
                '5','5','5',
                '6','6','6',
                '7','6','6',
                '8','8','8',
                '9','9','9','9'};


      while(*phoneNumber != '\0')
      {
                int c = *phoneNumber;

                if(c > 'A' && c < 'Z')
                {
                        *phoneNumber = charToNum;
                }
                else if(c > 'a' && c < 'z')
                {
                        *phoneNumber = charToNum;
                }

                ++phoneNumber;
      }

      printf("%s\n", str);
}

void translateNumber(int * optionStats, char * phoneNumber)
{
      char* str = phoneNumber;
      
      printf("%s\n", str);

      int charToNum[] = {'2','3','4','5','6','7','8','9','9'}; //2=ABC, 3=DEF, 4=GHI, 5=JKL, 6=MNO, 7=PQRS, 8=TUV, 9=WXYZ

      while( *phoneNumber != '\0' )
      {
                char c = *phoneNumber;

                if(c > 'A' && c < 'Z')
                {
                        *phoneNumber = charToNum[(c - 'A')/3];
                }
                else if(c > 'a' && c < 'z')
                {
                        *phoneNumber = charToNum[(c - 'a')/3];
                }

                ++phoneNumber;
      }

      printf("%s\n", str);
}
两个方法   稍微有一点点差距

翡翠墨水 发表于 2013-3-24 21:48:38

本帖最后由 翡翠墨水 于 2013-3-24 22:37 编辑

Evanue 发表于 2013-3-24 13:59 static/image/common/back.gif
void translateNumber1(int * optionStats, char * phoneNumber)
{
      char* str ...
你我的差不多。。我是刚刚不得不3掉code。。。学校里面也有人上这个站。。。code 要是一样的话就。。两个人都要审查。。那就悲剧了
才说的。。就妥妥的被抄了。。。

紫色的雨 发表于 2013-4-16 00:40:54

貌似不难,明天再试试吧
页: [1]
查看完整版本: C 语言跪,求解决方法