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 vào một số nguyên, xuất ra chữ số lớn nhất, nhỏ nhất của số đó
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.
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
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++
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.
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;
}
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
tks ban nhe… minh gop lai no bao min=0…chiu luon
bác post code lên tớ xem nào
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.
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.
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
bn thay kiểu giá trị lớn hơn int là đc