wdy151 发表于 2016-1-2 14:10:18

C语言求帮助

输入两个数码的英文,求其和值。

Sample Input

5
zero one
two three
four five
six seven
eight nine




Sample Output

1
5
9
13
17



只需要思路就好

人造人 发表于 2016-1-2 14:10:19

这样可以吗
#include<stdio.h>
#include <string.h>

typedef struct
{
        char string ;
        char value;
} TAB;

void dispose_string (TAB tab[], //需要tab的地址
        char *a, char *b, //a b 字符串的地址
        int *x, int *y); //x y 为返回的对应的数字

int main()
{
        TAB tab = {{ "zero", 0 }, { "one", 1 }, { "two", 2 },{ "three", 3 } ,{ "four", 4 } ,{ "five", 5 } ,{ "six", 6 } ,{ "seven", 7 } ,{ "eight", 8 } ,{ "nine", 9 } };
        char a, b; //加数和被加数
        int x = 0, y = 0; //转换后的加数和被加数


        printf ("请输入:");
        scanf ("%s %s", &a, &b);
        //这里应该检查a b的值


        dispose_string (tab, a, b, &x, &y);

        printf ("%s和%s的和为:%d\n", a, b, x + y);

        return(0);
}

void dispose_string(TAB tab[], //需要tab的地址
        char *a, char *b, //a b 字符串的地址
        int *x, int *y) //x y 为返回的对应的数字
{
        int i, k;

        for (i = 0; i < 10; i++)
        {
                if (strcmp (tab.string,a) == 0)
                {
                        *x = tab.value;
                }
        }//应该处理一下没有找到的情况

        for (k = 0; k < 10; k++)
        {
                if (strcmp(tab.string, b) == 0)
                {
                        *y = tab.value;
                }
        }
}

unique_asd 发表于 2016-1-2 16:43:11

只有10以内的吗?10以内的话就用map映射一下就好了

wdy151 发表于 2016-1-2 22:53:42

真6 ,谢谢你,不过以后思路就可以啦{:10_279:}

bloodbat007 发表于 2016-1-5 07:23:31

全部宏定义不就完了
页: [1]
查看完整版本: C语言求帮助