Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C kiểm tra số thuộc cơ số (base) cho trước

Cho một số dưới dạng chuỗi và một cơ số (base), kiểm tra xem số đó có hợp lệ trong cơ số đó hay không.

Các cơ số phổ biến: 2 (nhị phân), 8 (bát phân), 10 (thập phân), 16 (thập lục phân).

Ví dụ: "1A6" hợp lệ base 16, "1010" hợp lệ base 2, nhưng "1610" không hợp lệ base 2.

Ví dụ

Input: str = "1010", base = 2 → Output: yes
Input: str = "1AA4", base = 16 → Output: yes
Input: str = "1610", base = 2 → Output: No

Phương pháp:

  • Kiểm tra base từ 2 đến 16.
  • Duyệt từng ký tự, kiểm tra xem có thuộc bảng ký tự của base đó không.
  • Trả về true nếu hợp lệ, false nếu không.

Mã nguồn C

#include <ctype.h>
#include <stdio.h>
#include <string.h>

bool isInGivenBase(char str[], int base) {
    if (base > 16) return false;
    else if (base <= 10) {
        for (int i = 0; i < strlen(str); i++)
            if (!(str[i] >= '0' && str[i] < ('0' + base)))
                return false;
    } else {
        for (int i = 0; i < strlen(str); i++)
            if (!((str[i] >= '0' && str[i] < ('0' + base)) ||
                  (str[i] >= 'A' && str[i] < ('A' + base - 10))))
                return false;
    }
    return true;
}

int main() {
    char str[] = "AF87";
    if (isInGivenBase(str, 16))
        printf("yes\n");
    else
        printf("No\n");
    return 0;
}

Kết quả

yes