Bài toán: Tính tổng các giá trị có chữ số hàng chục là chữ số 5 trong mảng.
Input: mảng a có n phần tử
Xử lý: duyệt mảng tìm các giá trị trong mảng có chữ số hàng chục là 5
Hàm tìm chữ số 5 hàng chục
Xét số 5 hàng chục này có cả giá trị âm và giá trị dương nên:
Sử dụng abs đê lấy giá trị tuyệt trừ khi số ở 5 hàng chục là âm
Ví dụ: -50 abs(-50)=50
Nếu không sử dụng abs thì -50 sẽ không được tính là có số 5 ở hàng chục
Tiếp theo là chia cho 10 để bỏ hàng đơn vị rồi chia cho cho 10 lấy dư để lấy hàng chục
Ví dụ: 250
250/10=25
25%10=5
Hàng chục bằng 5 thì hàm trả về là 1, nếu không có chữ số hàng chục là 5 thì hàm trả về là -1
int So5HanChuc(int n) { n=abs(n); n=n/10; int hangchuc=n%10; if(hangchuc==5) return 1; return 0; }
Tiếp theo là viết hàm tính tổng các giá trị hàng chục là 5
Gán sum=0
Duyệt mảng , nếu có chữ số nào có hàng chục là 5 thì cộng vào
double Tong(int a[],int n) { int i; double sum=0; for( i=0 ; i<n ; i++ ) if(So5HanChuc(a[i])==1) sum=sum+a[i]; return sum; }
Output: Tổng các chữ số hàng chục là 5
Chương trình
#include<stdio.h> #include<conio.h> #include<math.h> #define MAX 100 void nhapmang(int a[], int &n); void xuatmang(int a[], int n); int So5HanChuc(int n); double Tong(int a[],int n); void main() { int a[MAX],n; nhapmang(a,n); printf("\nNoi dung cua mang\n"); xuatmang(a,n); double kq=Tong(a,n); printf("\ntong cac gia tri co chu so hang chuc 5 la: %8.2f",kq); printf("\nChuc cac ban hoc tot"); getch(); } void nhapmang(int a[], int &n) { do { printf("\nSo phan tu trong mang "); scanf("%d",&n); }while(n<=0 || n>100); for(int i=0 ; i<n ; i++ ) { printf("\nSo phan tu a[%d] la: ",i); scanf("%d",&a[i]); } } void xuatmang(int a[], int n) { for(int i=0 ; i<n ; i++ ) printf("%4d",a[i]); } int So5HanChuc(int n) { n=abs(n); n=n/10; int hangchuc=n%10; if(hangchuc==5) return 1; return 0; } double Tong(int a[],int n) { int i; double sum=0; for( i=0 ; i<n ; i++ ) if(So5HanChuc(a[i])==1) sum=sum+a[i]; return sum; }
Mình chia sẽ code này đê các bạn tham khảo các vấn đề tương tự. Tuy nhiên các bạn nên tự làm lại, đừng nên copy. Nếu gặp vấn đề gì khó khăn, hoặc thắc mắc gì, các bạn có thể đặt câu hỏi ở cuối bài. Mình sẽ giải đáp.
Chúc các bạn thành công!