作者:奇国的雪儿 | 来源:互联网 | 2024-12-20 17:54
以下是2019年江苏大学编程考试中三道大题的解析及参考答案:
第一题:幂运算
本题要求实现一个函数,计算给定实数x的n次方。
#include
double power(double x, int n) {
if (n == 0) return 1;
else if (n == 1) return x;
else return x * power(x, n - 1);
}
int main() {
printf("请输入实数x和整数n,计算x的n次方:");
double x, result;
int n;
scanf("%lf%d", &x, &n);
result = power(x, n);
printf("x=%lf, n=%d时结果为:%lf\n", x, n, result);
return 0;
}
第二题:扑克牌翻转
题目要求模拟52张扑克牌的翻转过程,并输出最终正面朝上的扑克牌编号。
#include
int main() {
int cards[53] = {0}; // 初始化数组,表示所有卡片初始状态
for (int i = 2; i <= 52; i++) {
for (int j = i; j <= 52; j += i) {
cards[j] = !cards[j];
}
}
printf("正面朝上的扑克牌是:\n");
for (int i = 1; i <= 52; i++) {
if (cards[i]) printf("%5d", i);
}
printf("\n");
return 0;
}
第三题:素数与双胞胎素数
题目要求找出2到300之间的所有素数,并将这些素数写入文件“prime.txt”。此外,还需统计并输出其中的最大一对双胞胎素数(即差为2的相邻素数)。
#include
#include
int isPrime(int n) {
if (n <2) return 0;
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) return 0;
}
return 1;
}
int main() {
FILE *fp;
if ((fp = fopen("prime.txt", "w")) == NULL) {
printf("无法打开文件!\n");
return 0;
}
int primes[300] = {0}, count = 0;
for (int i = 2; i <= 300; i++) {
if (isPrime(i)) {
primes[count++] = i;
fprintf(fp, "%5d", i);
}
}
fclose(fp);
int maxTwin1 = 0, maxTwin2 = 0, twinCount = 0;
for (int i = 0; i if (primes[i + 1] - primes[i] == 2) {
twinCount++;
maxTwin1 = primes[i];
maxTwin2 = primes[i + 1];
}
}
printf("一共有%d对双胞胎素数,最大的双胞胎素数是%d和%d\n", twinCount, maxTwin1, maxTwin2);
return 0;
}
欢迎各位网友批评指正!