问题描述:判断一个整数是奇数还是偶数。
解题思路:使用 %
运算符判断数字是否能被2整除。
代码:
#include
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num % 2 == 0)
printf("%d 是偶数。\n", num);
else
printf("%d 是奇数。\n", num);
return 0;
}
问题描述:计算一个给定数字的阶乘。
解题思路:使用循环从1乘到给定的数字。
#include
int main() {
int n, factorial = 1;
printf("请输入一个正整数:");
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
factorial *= i;
}
printf("%d 的阶乘 = %d\n", n, factorial);
return 0;
}
问题描述:打印出10以内的乘法表。
解题思路:使用两个嵌套循环,分别控制行和列。
#include
int main() {
for (int i = 1; i <= 10; ++i) {
for (int j = 1; j <= 10; ++j) {
printf("%d*%d=%d\t", i, j, i * j);
}
printf("\n");
}
return 0;
}
问题描述:从用户输入的一系列数字中找出最大的数。
解题思路:使用循环读取每个数字,并用一个变量跟踪最大值。
#include
int main() {
int n, num, max;
printf("输入数字的数量:");
scanf("%d", &n);
printf("请输入 %d 个数字:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &num);
if (i == 0 || num > max) {
max = num;
}
}
printf("最大数是 %d\n", max);
return 0;
}
问题描述:计算从1加到用户输入的数字。
解题思路:使用循环累加从1到用户输入的数字。
#include
int main() {
int n, sum = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
sum += i;
}
printf("从1到%d的和为:%d\n", n, sum);
return 0;
}
问题描述:判断一个数字是否为素数。
解题思路:检查数字是否只能被1和它本身整除。
#include
int main() {
int n, flag = 1;
printf("请输入一个整数:");
scanf("%d", &n);
for (int i = 2; i <= n / 2; ++i) {
if (n % i == 0) {
flag = 0;
break;
}
}
if (n <= 1) flag = 0;
if (flag)
printf("%d 是素数。\n", n);
else
printf("%d 不是素数。\n", n);
return 0;
}
问题描述:将一个整数数字翻转。
解题思路:通过取余和整除操作逐位翻转数字。
#include
int main() {
int n, reversed = 0;
printf("请输入一个整数:");
scanf("%d", &n);
while (n != 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
printf("翻转后的数字为:%d\n", reversed);
return 0;
}
问题描述:打印一个星形的图案。
解题思路:使用循环控制行和列,打印合适数量的星号。
#include
int main() {
int rows;
printf("输入行数:");
scanf("%d", &rows);
for (int i = 1; i <= rows; ++i) {
for (int j = 1; j <= i; ++j) {
printf("* ");
}
printf("\n");
}
return 0;
}
问题描述:找出两个数字的最大公约数。
解题思路:使用辗转相除法。
#include
int gcd(int a, int b) {
while (b != 0) {
int t = b;
b = a % b;
a = t;
}
return a;
}
int main() {
int num1, num2;
printf("输入两个整数:");
scanf("%d %d", &num1, &num2);
printf("最大公约数是:%d\n", gcd(num1, num2));
return 0;
}
问题描述:打印斐波那契数列的前N项。
解题思路:使用循环或递归计算斐波那契数列。
#include
int main() {
int n, first = 0, second = 1, next;
printf("请输入要打印的项数:");
scanf("%d", &n);
printf("斐波那契数列的前 %d 项是:\n", n);
for (int i = 0; i < n; i++) {
if (i <= 1)
next = i;
else {
next = first + second;
first = second;
second = next;
}
printf("%d, ", next);
}
return 0;
}