прямо сейчас мой код выписывает 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;
}
Следующий код работает.
Чтобы обрабатывать 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;
}
Вы всегда можете написать рекурсивную функцию для печати, как показано ниже.
#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;
}
Перед отправкой номера на коммутатор измените номер.
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;
}
Я не программист на компьютере, но если вы не можете пересечь число справа налево,
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))
Это приведет вас слева направо, а не справа налево (добавив некоторые переменные, которые могут увеличить эффективность вычислений.
У вас есть ограничение памяти? Если нет, рассмотрите временный массив для хранения каждой цифры в номере. Затем вы можете распечатать его в любом направлении.
Псевдокод,
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
}
Вот код для отмены вашего номера. Он не статичен, вы можете ввести любое число, которое вы хотите.
#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;
}