一、前言
提示:以下是博主自己写的代码,仅供参考,欢迎有兴趣的朋友们留言讨论呀
二、正文
1.第一题
#include<stdio.h>
// 递归函数,求x的n次幂
double F(double x, int n);
void main()
{
double x;
int n;
while (1)
{
printf("请依次输入实数x和正整数n:");
scanf("%lf%d", &x, &n);
if (n > 0) {
break;
}
}
printf("%lf的%d次幂为:%lf\n", x, n, F(x, n));
}
double F(double x, int n)
{
if (n == 1)
{
return x;
}
if (n > 1)
{
return x * F(x, n - 1);
}
}
运行结果示例:
手写版:
2. 第二题
#include<stdio.h>
#define N 52
// 正面朝上为1,反面朝上为-1
int aa[N + 1];
// 改变牌的朝向
void change(int n);
void main()
{
int i, count = 0;
for (i = 1; i <=N; i++)
{
aa[i] = 1;
}
for (i = 2; i <=N; i++)
{
change(i);
}
printf("正面朝上的牌有第");
for (i = 1; i <= N; i++)
{
if (aa[i]==1)
{
printf("%d ", i);
count++;
}
}
printf("张\n共%d张\n", count);
}
void change(int n)
{
for (int i = n; i <= N; i++)
{
if (i % n == 0)
{
aa[i] *= -1;
}
}
}
运行结果示例:
手写版:
3.第三题
#include<stdio.h>
#include <stdlib.h>
#include<math.h>
// 判断n是否是素数。是素数则返回1,否则返回0
int judge(int n);
void main()
{
int i, count = 0, max;
FILE* fp;
//打开或创建文件
if (!(fp = fopen("prime.txt", "a+")))
{
printf("cannot open the file!\n");
exit(0);
}
for (i = 2; i <= 300; i += 1)
{
if (judge(i))
{
fprintf(fp, "%d ", i);
if (judge(i + 2) && (i + 2) <= 300)
{
count++;
max = i;
}
}
}
printf("有%d对双胞胎数,最大的一对为%d和%d\n", count, max, max + 2);
// 关闭文件
if (fclose(fp))
{
printf("cannot close the file!\n");
}
}
int judge(int n)
{
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return 0;
}
}
return 1;
}
运行结果示例:
(为了方便展示,这里我手动进行了换行,实际上数据应该是一整行的)
手写版: