现在我的代码将37写成七七。怎么能把它换成三七呢?除了那个开关之外,还有我需要的所有其他东西才能使这个工作。请帮忙!
#include <stdio.h>
int main (void)
{
int x;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
do{
switch (x%10)
{
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;
};
x=x/10;
}while(x>0);
printf("\n\n");
return 0;
}
答案 0 :(得分:3)
您可以随时编写递归功能来进行打印,如下所示。
#include <stdio.h>
void printnumber(int num)
{
if (num == 0) return;
printnumber(num / 10);
switch (num % 10)
{
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;
}
// uncommment the below line and comment the
// printnumber() call above to print the number
// backwards
// printnumber(num / 10);
}
int main (void)
{
int x;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
printnumber(x);
printf("\n\n");
return 0;
}
答案 1 :(得分:1)
以下代码有效。
要处理37,首先得到它的位数为2.然后你可以从左到右解析这个整数。
希望它对你有所帮助!
#include<stdio.h>
int main (void) {
int x;
printf("Please enter an integer: ");
scanf("%d", &x);
printf("\nYou have entered:\n\n");
int len = 1;
for(len = 1; ; len = len * 10){
if(x / len == 0){
break;
}
}
len = len / 10;
do{
switch (x/len)
{
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;
};
x = x % len;
len = len / 10;
}while(x>0);
printf("\n\n");
return 0;
}
答案 2 :(得分:0)
我不是c程序员,但是如果你不能从右到左遍历数字,那么
switch (x - x%10 * 10)
和
x = floor(x/10);
编辑:以上是错误的方向
switch (floor(x/10^floor(log10(x))))
和
x -= floor(x/10^floor(log10(x))) * 10^floor(log10(x))
这将使你从左到右而不是从右到左(虽然添加一些变量可能会提高计算效率。
答案 3 :(得分:0)
以下是撤消号码的代码。 您可以输入任何您想要的号码,这不是静态的。
#include<iostream>
#include<math.h>
using namespace std;
int getd(int n)
{
return (int)log10(n);
}
int get(int n,int i,int digit)
{
int p;
p=(int)pow(10,i-1);
n=n/p;
return n%10;
}
int reverse(int n)
{
int digit;
digit=getd(n)+1;
int a,i,j;
int sum=0;
for(i=1,j=digit-1,sum=0 ; i<=digit ; i++,j-- )
{
a=get(n,i,digit);
sum=sum+(a*(int)pow(10,j));
}
return sum;
}
int main()
{
int n;
cin>>n;
cout<<reverse(n);
return 0;
}
答案 4 :(得分:0)
你有任何记忆限制吗?如果不是,请考虑使用临时数组来存储数字中的每个数字。然后,您可以在任何方向打印它。
伪代码,
int arr[50];
int count = 0;
while (number != 0)
{
arr[count++] = number % 10;
number = number / 10;
}
for (int i=count-1; i>=0; i--)
{
// print arr[i] in word
}
答案 5 :(得分:0)
Dunno如果整数数学是过程的必要部分,但如果不是,你可以通过基于字符的循环更容易地得到你想要的东西:
#include <stdio.h>
int main (void)
{
char buf[64] = "";
printf("Please enter an integer: ");
(void) fgets(buf, sizeof(buf), stdin);
printf("\nYou have entered:\n\n");
const char * b = buf;
while(*b)
{
switch(*b)
{
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;
default: /* empty */ break;
}
b++;
}
printf("\n\n");
return 0;
}
答案 6 :(得分:0)
在将号码发送到交换机之前,请将号码反转。