首页 文章资讯内容详情

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

2026-06-04 1 花语

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

我们必须根据数字系统检查数字和基数,其中有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