以下是用 Dev - C++(支持 C 语言或 C++ 编译)完成这些题目的代码实现,涵盖 C 语言 版本(部分题目用 C++ 特性更方便的会用 C++ ,也可调整为纯 C ),按题目顺序逐一编写:
题目 1:计算双层生日蛋糕黄油体积(C 语言)
c
#include <stdio.h>
#define PI 3.14159
// 圆柱体积公式:底面积×高(深度),双层则×2
int main() {
double r, h, volume;
printf("请输入黄油半径 r 和深度 h:");
scanf("%lf %lf", &r, &h);
volume = 2 * PI * r * r * h; // 双层,两个圆柱体积相加
printf("双层蛋糕黄油体积为:%.2lf\n", volume);
return 0;
}
题目 2:解一元二次方程(C 语言,用 math.h 处理开根号 )
c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, delta, x1, x2;
printf("请输入方程系数 a、b、c:");
scanf("%lf %lf %lf", &a, &b, &c);
delta = b * b - 4 * a * c; // 判别式
if (a == 0) {
printf("不是二次方程,a 不能为 0!\n");
} else if (delta > 0) {
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("两个不同实根:x1=%.2lf,x2=%.2lf\n", x1, x2);
} else if (delta == 0) {
x1 = -b / (2 * a);
printf("一个实根(重根):x=%.2lf\n", x1);
} else {
printf("无实根,有复数根(需拓展复数运算才能显示)\n");
}
return 0;
}
题目 3:6 人报数找报 3000 的人(C 语言,取余简化循环 )
c
#include <stdio.h>
int main() {
// 总人数 6,报数到 3000,(3000 - 1) % 6 得索引,+1 对应第 n 个人
int person = (3000 - 1) % 6 + 1;
printf("报 3000 的是第 %d 个人\n", person);
return 0;
}
题目 4:判断整数不能被 3、5、7 整除(C 语言 )
c
#include <stdio.h>
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num % 3 != 0 && num % 5 != 0 && num % 7 != 0) {
printf("%d 不能被 3、5、7 中的任何一个整除\n", num);
} else {
printf("%d 能被 3、5、7 中至少一个整除\n", num);
}
return 0;
}
题目 5:循环输出字母图形(C 语言,利用 ASCII 码 + 循环控制 )
c
#include <stdio.h>
int main() {
for (int i = 0; i < 7; i++) { // 共 7 行
char start = 'A' + i; // 每行起始字母
for (int j = 0; j < 7; j++) {
// 超过 'G' 则循环回 'A',用 % 7 控制
printf("%c ", (start + j - 'A') % 7 + 'A');
}
printf("\n");
}
return 0;
}
题目 6:计算 100! 末尾 0 的个数(C 语言,统计因数 5 的个数 )
c
#include <stdio.h>
int main() {
int count = 0;
for (int i = 5; i <= 100; i += 5) {
int temp = i;
while (temp % 5 == 0) { // 处理含多个 5 因数的数(如 25=5×5)
count++;
temp /= 5;
}
}
printf("100! 末尾 0 的个数:%d\n", count);
return 0;
}
题目 7:计算 1! + 2! +... + n!(C 语言,n 范围 3 - 20 )
c
#include <stdio.h>
// 单独写阶乘函数
long long factorial(int n) {
long long res = 1;
for (int i = 1; i <= n; i++) {
res *= i;
}
return res;
}
int main() {
int n;
long long sum = 0;
printf("请输入 3 - 20 之间的 n:");
scanf("%d", &n);
if (n < 3 || n > 20) {
printf("n 超出范围!\n");
return 0;
}
for (int i = 1; i <= n; i++) {
sum += factorial(i);
}
printf("1! + 2! +... + %d! = %lld\n", n, sum);
return 0;
}
题目 8:猜数字游戏(C 语言,用 rand() 生成随机数 ,需加 stdlib.h time.h )
c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int)time(NULL)); // 初始化随机种子
int target = rand() % 10 + 1; // 生成 1 - 10 的随机数
int guess, count = 0;
printf("猜数字游戏开始!数字在 1 - 10 之间\n");
do {
printf("请输入猜测数字:");
scanf("%d", &guess);
count++;
if (guess > target) {
printf("猜大了,继续猜~\n");
} else if (guess < target) {
printf("猜小了,继续猜~\n");
}
} while (guess != target);
printf("恭喜猜对!共猜了 %d 次\n", count);
return 0;
}
题目 9:4 位整数逆序(C 语言,函数实现 )
c
#include <stdio.h>
// 定义逆序函数
int fun(int n) {
int reverse = 0;
while (n > 0) {
reverse = reverse * 10 + n % 10;
n /= 10;
}
return reverse;
}
int main() {
int n;
printf("请输入一个 4 位正整数:");
scanf("%d", &n);
if (n < 1000 || n > 9999) {
printf("不是 4 位正整数!\n");
return 0;
}
printf("逆序数为:%d\n", fun(n));
return 0;
}
题目 10:输出水仙花数(C 语言,遍历三位数判断 )
c
#include <stdio.h>
// 立方函数,也可用 pow ,但整数运算更高效
int cube(int digit) {
return digit * digit * digit;
}
int main() {
printf("水仙花数有:");
for (int num = 100; num < 1000; num++) {
int百位 = num / 100;
int十位 = (num / 10) % 10;
int个位 = num % 10;
if (cube(百位) + cube(十位) + cube(个位) == num) {
printf("%d ", num);
}
}
printf("\n");
return 0;
}
题目 11:分解质因数(C 语言,循环除质数 )
c
#include <stdio.h>
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("%d = ", num);
for (int i = 2; i <= num; i++) {
while (num % i == 0) {
printf("%d", i);
num /= i;
if (num != 1) {
printf("*");
}
}
}
printf("\n");
return 0;
}
题目 12:计算 s = a + aa + aaa +... (C 语言,构造每一项累加 )
c
#include <stdio.h>
int main() {
int a, n; // a 是数字,n 是项数(题目没说项数,这里假设用户输入项数 n ,也可按固定逻辑改)
printf("请输入数字 a(1 - 9)和项数 n:");
scanf("%d %d", &a, &n);
long long sum = 0, term = 0;
for (int i = 0; i < n; i++) {
term = term * 10 + a; // 构造每一项(如 a, aa, aaa...)
sum += term;
}
printf("s = %lld\n", sum);
return 0;
}
题目 13:猴子吃桃问题(C 语言,逆推法 )
c
#include <stdio.h>
int main() {
int day = 10, peach = 1; // 第 10 天剩 1 个,逆推
for (int i = 9; i >= 1; i--) {
peach = (peach + 1) * 2; // 前一天桃子数 = (后一天 +1)×2
}
printf("第一天摘了 %d 个桃子\n", peach);
return 0;
}
题目 14:判断位数并逆序输出(C 语言,用循环取余 / 除 )
c
#include <stdio.h>
int main() {
int num, digitCount = 0, temp;
printf("请输入一个不多于 5 位的正整数:");
scanf("%d", &num);
temp = num;
// 统计位数
while (temp > 0) {
digitCount++;
temp /= 10;
}
printf("它是 %d 位数\n", digitCount);
// 逆序输出
printf("逆序数字:");
temp = num;
while (temp > 0) {
printf("%d", temp % 10);
temp /= 10;
}
printf("\n");
return 0;
}
题目 15:对 10 个数排序(C 语言,用简单选择排序演示 ,也可用 qsort )
c
#include <stdio.h>
// 选择排序函数
void sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 交换
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
int main() {
int arr[10];
printf("请输入 10 个整数:");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
sort(arr, 10);
printf("排序后:");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
题目 16:打印杨辉三角(C 语言,二维数组存储 )
c
#include <stdio.h>
// 杨辉三角行数
#define ROWS 10
int main() {
int triangle[ROWS][ROWS] = {0};
// 初始化杨辉三角
for (int i = 0; i < ROWS; i++) {
triangle[i][0] = 1;
triangle[i][i] = 1;
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
}
// 打印
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j <= i; j++) {
printf("%d ", triangle[i][j]);
}
printf("\n");
}
return 0;
}
题目 17:1、2、3、4 组成无重复三位数(C 语言,三重循环枚举 )
c
#include <stdio.h>
int main() {
int count = 0;
printf("能组成的三位数:");
// 百位、十位、个位分别枚举
for (int a = 1; a <= 4; a++) {
for (int b = 1; b <= 4; b++) {
for (int c = 1; c <= 4; c++) {
if (a != b && a != c && b != c) {
printf("%d%d%d ", a, b, c);
count++;
}
}
}
}
printf("\n共 %d 个\n", count);
return 0;
}
使用说明
1. 打开 Dev - C++ ,新建 .c 或 .cpp 文件(上述代码是 C 语言为主,存为 .c 更合适 )。
2. 将对应题目代码复制进去,点击 “运行”/“编译运行” 即可测试。
3. 若题目有输入,按提示输入数据,观察输出是否符合逻辑。
生成所有C语言程序流程图