Nhập vào một số nguyên, xuất ra chữ số lớn nhất, nhỏ nhất của số đó

giúp mình với…tks ạ…
Nhập vào một số nguyên, xuất ra chữ số lớn nhất, nhỏ nhất của số đó. Ví dụ: nhập 1483, chữ số nhỏ nhất là 1, chữ số lớn nhất là 8

nhập 1 số
gán số đó vào 1 biến a
chạy vòng lặp
{
lấy số a đó % cho 10 và gán vào biến 1
lấy số a chia cho 10, gán cho a
lấy số a đó % cho 10 và gán vào biến 2
lấy số a chia cho 10, gán cho a
so sánh biến 2 và biến 1 kiểm tra biến nào lớn hơn thì gán vào biến số 3
}
cứ thế cho hết vòng lặp.

Ngoài ra có thể chỉ cần dùng 1 biến a hoặc 1 biến a và 1 biến tạm nếu b biết linh hoạt sử dụng, cách trên dùng 4 biến cho đơn giản.

6 Likes

Bạn nhập vào số đó là 1 string rồi bạn so sánh max dùng prt mình nghĩ sẽ đc

1 Like

ban lam giup minh dc khong…minh lam theo cach cua ban sao no khong ra…tks nhe…

đợi mình chút nhé
Mình tes thử trên c++

1 Like

Mình không post code đâu b, b tự làm đi, bài này đơn giản rồi. Nhớ là % khác / khác, không phải là 1 đâu, còn sai thì tự debug xem nó sai ở chỗ nào.

2 Likes

code của mình nek…tìm được max, khong tim được min…bạn xem sửa giúp mình với…

 #include <iostream>
 #include <math.h>
using namespace std;
int main()
{
	int n, max, a, b, c, d, min, e;
	cout << " nhap n :" << endl;
	cin >> n;
	a = n;
	max = a % 10;

	min = a % 10;
	
	while (a != 0)
	{

		b = a / 10;
		d = b % 10;
		a = b;

		if (max < d)
			max = d;

	}
	while (a != 0)
	{
		b = a / 10;
		d = b % 10;
		a = b;
	
		if (min>d)
			min = d;
	}
	cout << "sln" << max <<" "<<"sbn"<<min<< endl;
	system("pause");
	return 0;
}
1 Like

Vì giá tri a của vòng lặp thứ 2 đã bị thay đổi so với ban đầu.
Với lại bạn dùng 1 vòng lặp và tính max min luôn, tạo ra 2 cái làm gì thừa ra

1 Like

tks ban nhe… minh gop lai no bao min=0…chiu luon

1 Like

bác post code lên tớ xem nào

1 Like

code phía trên đó…

code mới…

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	int n, max, a, b, c, d, min, e;

	cout << " nhap n :" << endl;
	cin >> n;
	a = n;
	max = a % 10;

	min = a % 10;
	
	while (a != 0)
	{

		b = a / 10;
		d = b % 10;
		a = b;

		if (max < d)
			max  = d;
		if (min > d)
			min = d;

	}

	cout << "sln" << max <<" "<<"sbn"<<min<< endl;
	system("pause");
	return 0;
}

Thử thay bằng:

d = a % 10;
a = a / 10;

mấy anh cho em hỏi sao em nhập vào 12121212121212121212.mà kết quả trả về của max lại ko phải là 2 mà là 1 số khác ạ.của em nó trả về số 8

Tràn số rồi, chuyển qua nhập string thôi.

1 Like

Mình sửa lại code của bạn 1 chút:

#include<iostream>
using namespace std;
int main() {
	int max, min;
	int a;
	cout<<"Nhap a: ";
	cin>>a;
	max=a%10;
	min=a%10;
	while(a) {
		int temp=a%10;
		a/=10;
		if(max<temp) {
			max=temp;
		}
		if(min>temp) {
			min=temp;
		}
	}
	cout<<"Chu so lon nhat la: "<<max<<endl;
	cout<<"Chu so be nhat la: "<<min<<endl;
	system("pause");
	return 0;
}

Bạn nên khai báo ít biến thôi dùng chỗ nào thì khai báo trong đấy.

1 Like

Mình thì không dùng nhiều hàm phức tạp mình hiểu sao làm v. Tại đề khác của mình chỉ tìm số lớn nhất…nhỏ nhất thì cũng dể luận ra…

{
  int n,t=0,s;
  scanf("%d",&n);
  while(n!=0)
  {
  s=n%10;
  t=t-s;
  if(t>=0)t=t+s;
  else t=(t/t)*s;
  n=n/10;
  }
  printf("%d",t);
}

bạn ơi, nếu số đó rất lớn (khoảng 20-30 chữ sô) thì mình nên làm như nào đc ạ

Nhập string thôi bạn :smiley:

2 Likes

bn thay kiểu giá trị lớn hơn int là đc

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