c语言写出如下要求:输入一行由数字字符(不含字符'0')构成的字符串(最长不超过80字符,以回车结束),从字符串中任意的选取连续的 两个或三个数字字符,构成的数字如果是质数则称为找到一个“串中质数”,请编程计算在给定的字符串中 最多能找到多少个不同的“串中质数” 注:两个“串中质数”,只要它们中有一个字符不同或位置不同,就算不同的两个“串中质数”,例如 2131中有三个串中质数,分别为“13”、“31”和“131” 输入格式 一行字符串(如题目描述) 输出格式 不同的“串中质数”的数量 输入样例 2131 输出样例 3
时间: 2023-02-09 12:51:44 浏览: 128
C语言实现输入一个字符串后打印出该字符串中字符的所有排列
以下是一种使用 C 语言实现的方法:
```
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
// 判断数字是否是质数
bool is_prime(int num) {
if (num < 2) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) return false;
}
return true;
}
int main() {
char str[81]; // 字符串数组,最多容纳 80 个字符
scanf("%s", str); // 读入字符串
int count = 0; // 记录结果
int len = strlen(str); // 字符串的长度
// 使用循环枚举字符串中的每一组数字字符
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
for (int k = j + 1; k < len; k++) {
// 将当前的三个数字字符转换成数字
int num = (str[i] - '0') * 100 + (str[j] - '0') * 10 + str[k] - '0';
// 判断是否是质数
if (is_prime(num)) {
count++; // 找到了一个“串中质数”,结果加 1
}
}
}
}
printf("%d\n", count); // 输出结果
return 0;
}
```
该程序通过使用三层循环,分别枚举字符串中的每一组三个数字字符,然后将其转换成数字,并使用 is_prime 函数判断是否是质数,如果是质数,就将结果加 1。
注意:需要使用 bool 类型来表示布尔值,需要引入头文件 <stdbool.h>。
阅读全文