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

C程序检查数字是否属于特定基数

给定数字作为字符串和基数;任务是检查给定数量是否为给定基数。

我们必须根据数字系统检查数字和基数,其中有2个二进制数,8个八进制数,10个十进制数和16个十六进制数。据此,我们必须找出字符串中的给定数字是否属于某个特定的基数,如果它属于某个特定的基数,则必须在输出屏幕上打印“是”;否则在输出屏幕上显示“否”。

就像我们知道的那样,数字/表达式“ 1A6”的基数为16,而“ 1010”的基数为2,但这可以通过直观的分析来判断,现在我们必须找到一种方法来解决该问题。程序。

示例

Input: str = “1010”, base =2
Output: yes
Input: str = “1AA4”, base = 16
Output: yes
Input: str = “1610”, base = 2
Output: No

我们将用来解决给定问题的方法-

  • 检查基数是否在2到16之间。

  • 然后将检查strig的每个数字是否属于特定基数。

  • 如果属于,则返回true,否则返回false。

算法

Start
Step 1 -> In function bool isInGivenBase(char str[], int base)
   If base > 16 then,
      Return 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)) then,
         Return false
      Else
      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,
            Return false
            Return true
   Step 2 -> In function int main()
      Set str[] = {"AF87"}
      If isInGivenBase(str, 16) then,
         Print "yes "
      Else
         Print "No "
Stop

示例

#include <ctype.h>
#include <stdio.h>
#include <string.h>
bool isInGivenBase(char str[], int base) {
   //允许的基数为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;
}
// Driver code
int main() {
   char str[] = {"AF87"};
   if (isInGivenBase(str, 16))
      printf("yes\n");
   else
      printf("No\n");
   return 0;
}

输出结果

yes