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.

Author: buitrunghieu

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

There are no comments at the moment.

Zalo