Xin chào các bạn. Mình có viết xong 1 chương trình kiểm tra xem số đảo ngược của nó là bao nhiêu? (ví dụ số đảo ngược của 123 là 321; 146 là 641; …).
Rồi sau đó kiểm tra xem đó có phải là số đối xứng không.
Số đối xứng là số mà khi đọc từ trái sang phải hay phải sang trái đều như nhau.
VD: 12021 => Đọc từ phải sang trái là 12021, trái sang phải cũng là 12021 ; .....
Nhưng chương trình mình có bị lỗi gì hay sao ấy? Các bạn chạy thử là biết. Ví dụ mình nhập thử 1 số đối xứng là 12021. Nhưng khi enter xong, chương trình là cho kết quả mình không mong muốn như hình dưới đây:
Đó, tự nhiên chữ số cuối không phải là 1 mà là 0. Mình dùng IDE Code::Blocks. Mình đã kiểm tra rất kỹ từng dòng code. Debug lại mấy lần. Nhưng khi debug mình gặp 1 cái lỗi ngớ ngẩn mà không biết sai ở đâu. Do hơi bất tiện nên mình không up hình được.
Chỉ biết là khi debug xong dòng 29 thì đáp án là sodaonguoc = 99, trong khi đó mình tính thủ công thì là 100. Bạn nào giỏi giúp hộ mình nhé. Mình cảm ơn rất nhiều!
Code:
#include <stdio.h>// *Important: Variable " const "
#include <limits.h>
#include <float.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
#include <Windows.h>
#include <time.h>
int main()
{
int n;
do
{
printf("Type a number: ");
scanf("%d", &n);
if (n <= 0)
printf("So khong hop le, moi nhap lai\n");
}
while(n <= 0);
int temp = n;
int sodaonguoc = 0;
int digit = log10(temp);
while (temp != 0)
{
int dem = temp%10;
temp/=10;
sodaonguoc += dem * pow(10.0,digit--);
}
printf("So dao nguoc cua %d la %d\n",n,sodaonguoc);
if (sodaonguoc == n)
printf("Day la so doi xung\n");
else
printf("Day khong phai la so doi xung\n");
getch();
return 0;
}