将Integer的结果转换为C中的String或Word

时间:2017-11-13 07:32:34

标签: c

所以我在这里遇到了问题。我正在进行我的课程作业,即创建一个计算器,但每个结果都必须在一个单词中,例如:

int a,b,c;
printf("Input first number:");
scanf("%d", &a);
printf("Input second number:"):
scanf("%d", &b);
c=a+b;
printf("The result are: %d", c);                          
printf("If in words, it is  = ");
switch(c){
case 0:printf("abcdef");break;
case 1:printf("bc");break;
case 2:printf("abged");break;
case 3:printf("abgcd");break;
case 4:printf("fbgc");break;
case 5:printf("afgod");break;
case 6:printf("fgcde");break;
case 7:printf("abc");break;
case 8:printf("abcdefg");break;
case 9:printf("abcdfg");break;
default :printf("error");break;

因此,运行它时的结果是:

  

输入第一个数字:12

     

输入第二个数字:12

     

结果是:24

     

如果是单词,那就是=错误

所以我在这里感到困惑的是我如何将c结果打印成一个单词?所以我想从输出中得到的是

  

输入第一个数字:12

     

输入第二个数字:12

     

结果是:24

     

如果用语言来说,它是= abged fbcg

到目前为止,我正在寻找答案,但我找不到它。如果有人在这里可以帮助我,请做。

提前致谢

*编辑

4 个答案:

答案 0 :(得分:1)

  

我想从输出中得到的是

Input first number : 12

input second number : 12

The result are : 24

If in words, it is = abged fbcg

如果您已经写过"两个四"那么这个问题会更清楚。而不是" abged fbcg" ...

你显然想要打印"数十"和#34;那些"分别。 (可能是"数百"以及。)

由于这是一项家庭作业,我只会给你一些提示,而不是完整的解决方案

  • 如果您将c除以10,则会得到" tens"。如果再次将结果除以10,则得到"数百"。
  • 如果像"两个四"可以接受,你可以使用相同的查找"数十"和"那些"。如果你真的需要"二十四",你需要查找"数十"和#34;其中一个"。
  • 你需要打印最高位(最左边)数字第一个的单词,但是你从上面提到的10个分区得到 last 。所以你需要"存储" "的查找结果"当你查找" ten" (也许,"数百")。存储可能是......
    • ......一个数组。小心检查数组中空格输入的数字(如果有人输入太大的数字,你就不会溢出)。如果你做得对,你不需要存储你查找的字符串,因为你可以将指针存储到这些字符串中。
    • ...一个递归函数。 (一个用值除以10来调用自身,然后查找调用它的值的#34;那些 - 你通过模运算符c % 10得到它。)

答案 1 :(得分:0)

这里的第一个问题是,您错过了在每个break语句后使用case语句。

因此,你的是fall-through switch case,这不是你想要的。它将跳转到switch语句中的大小写匹配,然后通过所有其他可用的case语句。

一旦你解决了这个问题,针对下一个问题的可能方法之一是正确解释它,使用当前的描述,它不是很清楚。

答案 2 :(得分:0)

使用查找该单词的所有选项,然后根据索引打印相关内容而不会使所有开关案例混乱

char* lookup = {
                {"abcdef\n"},
                {"bc\n"},
                {"abged\n"},
                {"abgcd\n"},
                {"fbgc\n"},
                {"afgod\n"},
                {"fgcde\n"},
                {"abc\n"},
                {"abcdefg\n"},
                {"abcdfg\n"},
};

然后==>

c=a+b;
if (c>9)
{
printf("error\n");
}
else
{
printf(lookup[c]);
}

答案 3 :(得分:0)

好的,你的意思是你想要为数字的每个数字打印一个字符串,这是数学函数的结果吗?

尝试[未经测试]

int d = c;
do {
    switch (d % 10) { /* your replacement-text-switch goes here */ }
    d /= 10;
} while (d != 0)

这将反向打印出数字。 如果您想以其他方式打印出来,那么您必须知道要计算的最大数量。 (或者,通过提前,您可以使用对数来确定数字的长度。)