所以我在这里遇到了问题。我正在进行我的课程作业,即创建一个计算器,但每个结果都必须在一个单词中,例如:
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
提前致谢
*编辑
答案 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,则得到"数百"。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)
这将反向打印出数字。 如果您想以其他方式打印出来,那么您必须知道要计算的最大数量。 (或者,通过提前,您可以使用对数来确定数字的长度。)