2015-05-02 2 views
-1

Как отменить десятичное число. Я написал этот код, но меняет целое число.Обратные числа Десятичные

#include <stdio.h> 
#include <conio.h> 
#include <iostream> 
#include <math.h> 
long reverse(long); 

int main() 
{ 
    long n, r; 

    scanf("%ld", &n); 

    r = reverse(n); 

    printf("%ld\n", r); 
    getch(); 
    return 0; 
} 

long reverse(long n) 
{ 
    static long r = 0; 

    if (n == 0) 
     return 0; 

    r = r * 10; 
    r = r + n % 10; 
    reverse(n/10); 
    return r; 
} 

Я не могу отделить целое число десятичной дроби.
Как мне это сделать.

+2

один возможный путь, чтобы прочитать число как строку, а затем разделить его на два номера ... Кроме того, так как ур с использованием C++ рекомендую CIN вместо scanf – CIsForCookies

+0

Вы не искали, не так ли? –

+0

Какие результаты вы получаете? – Cristik

ответ

0

Используйте reverse_string function представленный @GManNickG:

#include <stdio.h> 
#include <string.h> 

void reverse_string(char *str); 

int main(){ 
    char number_to_reverse[256]; 

    scanf("%s",number_to_reverse); 

    reverse_string(number_to_reverse); 

    printf("%s",number_to_reverse); 

    return 0; 
} 

void reverse_string(char *str) { 
    /* skip null */ 
    if (str == 0) 
    { 
     return; 
    } 

    /* skip empty string */ 
    if (*str == 0) 
    { 
     return; 
    } 

    /* get range */ 
    char *start = str; 
    char *end = start + strlen(str) - 1; /* -1 for \0 */ 
    char temp; 

    /* reverse */ 
    while (end > start) 
    { 
     /* swap */ 
     temp = *start; 
     *start = *end; 
     *end = temp; 

     /* move */ 
     ++start; 
     --end; 
    } 
}