Editorial for C bài 5.A2: Đếm chữ số
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Lời giải chi tiết
Với bài này, ta không thể sử dụng biến dưới dạng nguyên để lưu giá trị của \(a\) được. Thay vào đó, ta sẽ sử dụng biên dưới dạng xâu.
Ý tưởng: duyệt từng kí tự \(i\) của xâu \(a\), với mỗi kí tự \(i\) ta thấy khi chuyển kí tự số đó sang số trong mã ascii(ta đặt là \(i_{asc}\)), kí tự số \(i\) được hiển thị và giá trị \(i_{asc}\) đều cùng đồng dư với 2. Ví dụ: kí tự 0 trong ascii có giá trị là 48, và nó cùng chia hết cho 2. Ta dùng đặc tính này để thực hiện điều kiện.
Code mẫu
#include <stdio.h>
#include <math.h>
#include<string.h>
int main() {
//Khai báo biến a dưới dạng xâu
char a[100];
scanf("%s", a);
//khởi tao 2 biến để đếm số số chẵn, lẻ có trong a
int odd = 0, even = 0;
/Duyệt từng kí tự
for(int i = 0; i < strlen(a); i++){
//Sử dụng đặc tính trên để đặt điều kiện cho tính chẵn lẻ
if(a[i] % 2 == 0){
even++;
}
else{
odd++;
}
}
//in màn hình số chữ số chẵn, lẻ có trong a
printf("%d %d", odd, even);
}
Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse
SĐT liên hệ: 0372229686
Youtube: CLB Lập Trình Full House
Fullhouse dev đồng hành trên từng dòng code
Comments