所以我需要让我的switch语句通过并写出五个如果用户说52但我无法通过我的0-9。如果他们输入0-9它的工作完美但如果我尝试做任何数字,那么它就会变成空白。帮助!
#include <stdio.h>
int main (void)
{
int x;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
for(x;x<0;x++);
switch (x)
{
case 0:
printf("zero");
break;
case 1:
printf("one");
break;
case 2:
printf("two");
break;
case 3:
printf("three");
break;
case 4:
printf("four");
break;
case 5:
printf("five");
break;
case 6:
printf("six");
break;
case 7:
printf("seven");
break;
case 8:
printf("eight");
break;
case 9:
printf("nine");
break;
}
printf("\n\n");
return 0;
}
答案 0 :(得分:3)
do {
switch (x%10) {
...
}
x = x / 10;
} while (x>0) ;
或以正确的顺序获取它使用递归
void f(int x) {
if (x==0) return;
f(x/10);
switch(x%10) { ... }
}
答案 1 :(得分:0)
此问题之前已为asked-and-answered。
你写的for循环是空的,因为循环体以分号结尾:
for(x;x<0;x++) /* Empty Body!!*/ ;
典型for循环的工作方式是:
for( /*Initialize*/; /*Test*/; /*Change*/)
{
/* Body */
}
在你的情况下,我认为你想要:
for(int i=0; i < x; ++i)
{
switch(x)
{
[...]
}
}
这将:
答案 2 :(得分:0)
这是你需要做的。与@simonc所说的类似,将用户输入转换为字符串,然后遍历字符是个好主意。对于每个字符,将其转换为int
,然后将其转换为switch语句。
EDIT ---------------------------
这是一种严格使用整数的方法。
首先查找整数有多少位数。您可以通过提及here的方法执行此操作。
然后从除以10的最大幂开始进行整数除法,将除数除以10,直到达到1.例如:
如果用户输入为213
,则它有3位数字。我们首先将其除以100
。
213/100 = 2
我们取2
并将其放入switch语句,输出2
。现在我们完成了数百位,现在我们从13
取213
并将其除以10
。
13/10 = 1
现在我们输出one
。
继续这个过程,直到你到达那个数字。
这有意义吗?
答案 3 :(得分:0)
你可以通过递归来解决这个问题。
void printDigit(int x) {
int digit = x%10;
if(digit!=x)
printDigit(x/10);
switch(digit) {
...
}
}
这将首先打印最重要的数字,不像大多数人提到的while循环。
答案 4 :(得分:0)
我不打算为你做功课,但考虑以下伪代码:
print_text_digits(x)
{
if (x >= 10) print_text_digits(x / 10);
switch (x) {
print "zero" through "nine" as appropriate
}
}
main()
{
scan number into x;
print_text_digits(x);
}
这依赖于递归例程,因此您可以一次处理一个数字,首先打印可能有效的数字。
答案 5 :(得分:0)
我相信你需要这个:
#include <stdio.h>
int main (void)
{
int count = 0;
int x, count2;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
int aux = x;
while(aux>0) {
aux=aux/10;
count++;
}
count2 = count;
while(count) {
aux = x;
for(int i=count-1;i>0;i--)
aux=aux/10;
for(int i=count2-count;i>0;i--)
aux%=10;
switch (aux) {
case 0:
printf("zero");
break;
case 1:
printf("one");
break;
case 2:
printf("two");
break;
case 3:
printf("three");
break;
case 4:
printf("four");
break;
case 5:
printf("five");
break;
case 6:
printf("six");
break;
case 7:
printf("seven");
break;
case 8:
printf("eight");
break;
case 9:
printf("nine");
break;
}
count--;
if(count) printf(" ");
}
printf("\n\n");
return 0;
}
现在,输入52
会立即返回five two
。
答案 6 :(得分:0)
#include <stdio.h>
static const char * const num[] = {
"zero ", "one ", "two " , "three ", "four ",
"five ", "six ", "seven ", "eight ", "nine "
};
void printNum(int x)
{
if (x < 10) {
printf(num[x]);
return;
}
printNum(x / 10);
printNum(x % 10);
}
int main (void)
{
int x;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
printNum(x);
return 0;
}