Xem giúp và sửa chương trình in số đảo ngược
Thực ra có thể nhân 10 rồi cộng thêm vào mà log làm gì.
1 Like
nhưng chương trinh này vấn đề là ở chỗ nào ạ
Mình nghĩ chỗ int dem = log(…) có sai số, với lại điều kiện sửa lại temp > 0 thử xem
Clip ngày xửa ngày xưa có liên quan:
while(temp!=0) đổi thành hàm do while đi bạn
Bạn có thể dùng cách này:
int reverseNum(int num) {
int result = 0;
while(num > 0) {
result = result * 10 + (num % 10);
num = num / 10;
}
return result;
}
Bạn dùng code phía dưới thử xem minh viết trong Visual studio đó
void main()
{
int n;
do
{
printf("Nhap vao so n ( n>=1) :");
scanf_s("%d", &n);
if (n < 0)
{
printf("\nNguoi dung da nhap sai.\n\nVui long nhap lai n>=1.!!!\n\n");
}
} while (n<0);
int a = n;
int sochuso;
sochuso = log10((double)a);
//printf("\nSo da nhap %d co %d chu so.\n", n, sochuso);
int sodaonguoc = 0;
while (a!=0)
{
int chuso;
chuso = a % 10;
a = a / 10;
sodaonguoc = sodaonguoc +chuso* pow(10, sochuso--);
//sochuso=sochuso-1;
}
printf("\nSo dao nguoc cua %d la so %d .\n", n, sodaonguoc);
_getch();
}
Phải là --dem
chứ. Phải thực hiện trước r mới đến câu lệnh
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main()
{
int n;
// Nhập n ( n > 0 )
do
{
printf("\nNhap vao n ( n > 0 ): ");
scanf_s("%d", &n);
if (n <= 0)
{
printf("\nGia tri ban nhap vao khong hop le. Xin vui long nhap lai! ");
}
} while (n <= 0);
int SoChuSo = (int)log10((float)n) + 1;
int SoNghichDao = 0;
int themang = n;
printf("\nSo %d co phai la so doi xung hay khong ?\n", n);
while (themang != 0)
{
int ChuSo = themang % 10; // Lấy chữ số ra
themang /= 10; // Bỏ chữ số vừa lấy ra
SoNghichDao += ChuSo * pow(10.0, --SoChuSo);
}
getch();
return 0;
}
Ví dụ với số 123 thì dem
sẽ bằng 3, nhưng khi làm câu lệnh in ra số ngược lại thì ta thực hiện sodaonguoc += 3*10^2+2*10^1+1*10^0;
nên cái pow(10,0,--dem)
mới đúng.