1、编写程序求孪生素数。如果n和n+2都是素数,则称它们是孪生素数。输入一个正整数m,输出两个均不超过m的最大孪生素数,并输出。比如输入m值为20,输出孪生素数17,19。
c语言程序代码:
#include <stdio.h>
// 函数原型
int is_prime(int num);
int main() {
int m;
// 输入正整数 m
printf("请输入一个正整数 m:");
scanf("%d", &m);
// 寻找不超过 m 的最大孪生素数
for (int i = m; i >= 2; i--) {
if (is_prime(i) && is_prime(i - 2)) {
printf("最大的孪生素数是:%d 和 %d\n", i - 2, i);
break;
}
}
return 0;
}
// 判断一个数是否为素数的函数
int is_prime(int num) {
if (num <= 1) {
return 0;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
运行结果:
2、编写一个子函数 int string_sub(char *s1,char *s2),用以判断字符串s1中是否含有子字符串s2,如果存在,则返回1;否则返回0。
要求用指针实现,主函数输入一个字符串string和一个子字符串substr,调用子函数int string_sub(char *s1,char *s2),输出字符串中是否存在子字符串。
比如输入的字符串为:C program,输入的子字符串为gra,则输出“存在字符串”。
比如输入的字符串为:C program,输入的子字符串为prg,则输出“不存在字符串”。
代码:
#include <stdio.h>
// 函数原型
int string_sub(char *s1, char *s2);
int main() {
char string[100], substr[100];
// 输入字符串和子字符串
printf("请输入一个字符串:");
gets(string); // 请注意,gets 函数不太安全,实际应用中应该使用更安全的替代方案
printf("请输入一个子字符串:");
gets(substr);
// 调用子函数判断是否存在子字符串
if (string_sub(string, substr)) {
printf("存在字符串\n");
} else {
printf("不存在字符串\n");
}
return 0;
}
// 判断字符串s1中是否含有子字符串s2
int string_sub(char *s1, char *s2) {
while (*s1 != '\0') {
char *temp_s1 = s1;
char *temp_s2 = s2;
// 检查子字符串是否匹配
while (*temp_s1 == *temp_s2 && *temp_s2 != '\0') {
temp_s1++;
temp_s2++;
}
// 如果子字符串匹配成功,返回1
if (*temp_s2 == '\0') {
return 1;
}
s1++;
}
// 如果遍历完毕都没有匹配成功,返回0
return 0;
}
仿真结果: