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à :smiley: 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: :smile:

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.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?