引言
C语言作为一门历史悠久且应用广泛的编程语言,一直是计算机科学教育中的基础课程。通过解决编程题,不仅可以加深对C语言语法和概念的理解,还能提高逻辑思维和编程能力。本文将为您介绍30个趣味编程题,帮助您在轻松愉快的氛围中提升C语言编程技能。
1. 打印图案
题目描述:编写一个C程序,打印如下图案:
*
**
***
****
*****
代码示例:
#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 5; i++) {
for (j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
2. 求阶乘
题目描述:编写一个C程序,计算一个给定正整数的阶乘。
代码示例:
#include <stdio.h>
long long factorial(int n) {
if (n == 0)
return 1;
return n * factorial(n - 1);
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
printf("Factorial of %d is %lld\n", n, factorial(n));
return 0;
}
3. 最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
4. 素数判断
题目描述:编写一个C程序,判断一个给定的正整数是否为素数。
代码示例:
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int n) {
if (n <= 1)
return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return false;
}
return true;
}
int main() {
int n;
printf("Enter a positive integer: ");
scanf("%d", &n);
if (is_prime(n))
printf("%d is a prime number\n", n);
else
printf("%d is not a prime number\n", n);
return 0;
}
5. 水仙花数
题目描述:编写一个C程序,找出所有三位数的水仙花数。
代码示例:
#include <stdio.h>
bool is_narcissistic(int n) {
int original = n, sum = 0, remainder;
while (n > 0) {
remainder = n % 10;
sum += remainder * remainder * remainder;
n /= 10;
}
return original == sum;
}
int main() {
for (int i = 100; i < 1000; i++) {
if (is_narcissistic(i))
printf("%d is a narcissistic number\n", i);
}
return 0;
}
6. 汉诺塔
题目描述:编写一个C程序,模拟汉诺塔的移动过程。
代码示例:
#include <stdio.h>
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n == 1) {
printf("Move disk 1 from rod %c to rod %c\n", from_rod, to_rod);
return;
}
hanoi(n - 1, from_rod, aux_rod, to_rod);
printf("Move disk %d from rod %c to rod %c\n", n, from_rod, to_rod);
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
int main() {
int n = 3;
hanoi(n, 'A', 'C', 'B');
return 0;
}
7. 斐波那契数列
题目描述:编写一个C程序,打印斐波那契数列的前20个数。
代码示例:
#include <stdio.h>
void print_fibonacci(int n) {
int a = 0, b = 1, c;
for (int i = 0; i < n; i++) {
if (i <= 1)
c = i;
else {
c = a + b;
a = b;
b = c;
}
printf("%d ", c);
}
printf("\n");
}
int main() {
int n = 20;
print_fibonacci(n);
return 0;
}
8. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
9. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
10. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
11. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
12. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
13. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
14. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
15. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
16. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
17. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
18. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
19. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
20. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
21. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
22. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
#include <stdio.h>
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two positive integers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}
23. 求和
题目描述:编写一个C程序,计算从1到100的和。
代码示例:
#include <stdio.h>
int sum(int n) {
if (n <= 1)
return n;
return n + sum(n - 1);
}
int main() {
int n = 100;
printf("Sum of 1 to %d is %d\n", n, sum(n));
return 0;
}
24. 查找数字
题目描述:编写一个C程序,在有序数组中查找一个给定的数字。
代码示例:
#include <stdio.h>
int binary_search(int arr[], int low, int high, int x) {
if (high >= low) {
int mid = low + (high - low) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binary_search(arr, low, mid - 1, x);
return binary_search(arr, mid + 1, high, x);
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9, 11, 13, 15};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 7;
int result = binary_search(arr, 0, n - 1, x);
if (result == -1)
printf("Element is not present in array");
else
printf("Element is present at index %d", result);
return 0;
}
25. 计算最大公约数
题目描述:编写一个C程序,计算两个正整数的最大公约数。
代码示例:
”`c
#include
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {