English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

특정 기본수에 속하는지 확인하는 C 프로그램

주어진 숫자를 문자열과 기본수로 받아서 주어진 숫자가 주어진 기본수에 속하는지 확인하는 작업입니다;

숫자 시스템을 확인해야 하며, 그 중에는2의 2진수와8의 8진수와10의 십진수와16는 16진수입니다. 따라서 문자열의 주어진 숫자가 특정 기본수에 속하는지 확인해야 하며, 특정 기본수에 속하면 출력 스크린에 'Yes'를 인쇄해야 하며, 속하지 않으면 출력 스크린에 'No'를 표시해야 합니다.

그리고 우리가 알다시피, 숫자/표현식 “ 1A6”의 기본수는16그리고 “ 1010”의 기본수는2이지만 이는 직관적인 분석으로 판단할 수 있으며, 지금은 이 문제를 해결하는 방법을 찾아야 합니다. 프로그램.

예제

입력: str = “1010”, base =2
출력: yes
입력: str = “1AA4”, base = 16
출력: yes
입력: str = “1610”, base = 2
출력: No

해결할 문제를 해결하기 위해 사용할 방법-

  • 기본수가 다음에 포함되는지 확인합니다:2to16之间.

  • 그런 다음 string의 각 숫자가 특정 기본수에 속하는지 확인합니다.

  • 그렇다면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

알고리즘

Start
단계 1 -> function bool isInGivenBase(char str[], int base)
   If base > 16 then,
      false 반환
   Else If base <= 10 then,
   Loop For i = 0 and i < strlen(str) and i++
      If !(str[i] >= '0' and str[i] < ('0' + base)) 이렇게 하면,
         false 반환
      다른 경우
      Loop For i = 0 and i < strlen(str) and i++
         If NOT ((str[i] >= '0' && str[i] < ('0' + base)) ||
            (str[i] >= 'A' && str[i] < ('A' + base - 10) then,
            false 반환
            true 반환
   단계 2 -> In function int main()
      Set str[] = {"AF87"});
      If isInGivenBase(str, 16) then,
         "yes" 출력
      다른 경우
         "No" 출력
정지

예제

#include <ctype.h>
#include <stdio.h>
#include <string.h>
bool isInGivenBase(char str[], int base) {
   //허용 가능한 기본 수는16(16진수)
   if (base > 16))
      return false;
      //基数가 작거나 같으면10까지여야 합니다
      // 자리수는 0에서9。
   else if (base <= 10)) {
      for (int i = 0; i < strlen(str); i++))
      if (!(str[i] >= '0' and
         str[i] < ('0' + base)))
         return false;
   }
   //基数가 작거나 같으면16까지여야 합니다
   //숫자는 0에서9또는 'A'
   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;
}

출력 결과

yes