c语言编程题经典100例

来源:undefined 2025-05-20 06:53:41 1001

C语言作为一门经典的编程语言,广泛应用于系统编程、嵌入式开发、算法实现等领域。掌握C语言编程技能对于程序员来说至关重要。以下是100个经典的C语言编程题,涵盖了基础语法、数组、指针、结构体、文件操作等多个方面。每个题目都附有详细的解答和代码示例,帮助读者深入理解C语言的编程技巧。

1. 打印“Hello, World!”

#include <stdio.h> int main() { printf("Hello, World! "); return 0; }

这是C语言中最简单的程序,用于验证开发环境是否配置正确。

2. 计算两个整数的和

#include <stdio.h> int main() { int a, b, sum; printf("Enter two integers: "); scanf("%d %d", &a, &b); sum = a + b; printf("Sum: %d ", sum); return 0; }

通过scanf函数获取用户输入,并计算两个整数的和。

3. 判断一个数是奇数还是偶数

#include <stdio.h> int main() { int num; printf("Enter an integer: "); scanf("%d", &num); if (num % 2 == 0) printf("%d is even. ", num); else printf("%d is odd. ", num); return 0; }

使用取模运算符%判断奇偶性。

4. 计算阶乘

#include <stdio.h> int main() { int n, i; unsigned long long factorial = 1; printf("Enter an integer: "); scanf("%d", &n); for (i = 1; i <= n; i++) factorial *= i; printf("Factorial of %d = %llu ", n, factorial); return 0; }

使用循环计算阶乘,注意使用unsigned long long类型以避免溢出。

5. 判断一个数是否为素数

#include <stdio.h> int main() { int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d", &n); for (i = 2; i <= n / 2; i++) { if (n % i == 0) { flag = 1; break; } } if (n == 1) printf("1 is neither prime nor composite. "); else if (flag == 0) printf("%d is a prime number. ", n); else printf("%d is not a prime number. ", n); return 0; }

通过循环判断一个数是否能被2到n/2之间的数整除。

6. 斐波那契数列

#include <stdio.h> int main() { int n, i, t1 = 0, t2 = 1, nextTerm; printf("Enter the number of terms: "); scanf("%d", &n); printf("Fibonacci Series: "); for (i = 1; i <= n; i++) { printf("%d ", t1); nextTerm = t1 + t2; t1 = t2; t2 = nextTerm; } return 0; }

使用循环生成斐波那契数列。

7. 反转一个整数

#include <stdio.h> int main() { int n, reversed = 0; printf("Enter an integer: "); scanf("%d", &n); while (n != 0) { reversed = reversed * 10 + n % 10; n /= 10; } printf("Reversed number: %d ", reversed); return 0; }

通过取模和除法操作反转整数。

8. 计算数组的平均值

#include <stdio.h> int main() { int n, i; float sum = 0, average; printf("Enter the number of elements: "); scanf("%d", &n); int arr[n]; for (i = 0; i < n; i++) { printf("Enter element %d: ", i + 1); scanf("%d", &arr[i]); sum += arr[i]; } average = sum / n; printf("Average = %.2f ", average); return 0; }

通过循环计算数组元素的平均值。

9. 查找数组中的*值

#include <stdio.h> int main() { int n, i; printf("Enter the number of elements: "); scanf("%d", &n); int arr[n]; for (i = 0; i < n; i++) { printf("Enter element %d: ", i + 1); scanf("%d", &arr[i]); } int max = arr[0]; for (i = 1; i < n; i++) { if (arr[i] > max) max = arr[i]; } printf("Maximum value = %d ", max); return 0; }

通过循环查找数组中的*值。

10. 冒泡排序

#include <stdio.h> int main() { int n, i, j, temp; printf("Enter the number of elements: "); scanf("%d", &n); int arr[n]; for (i = 0; i < n; i++) { printf("Enter element %d: ", i + 1); scanf("%d", &arr[i]); } for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } printf("Sorted array: "); for (i = 0; i < n; i++) printf("%d ", arr[i]); return 0; }

通过冒泡排序算法对数组进行排序。

11. 指针的基本使用

#include <stdio.h> int main() { int num = 10; int *p; p = &num; printf("Value of num: %d ", num); printf("Address of num: %p ", &num); printf("Value of p: %p ", p); printf("Value pointed by p: %d ", *p); return 0; }

演示指针的基本用法。

12. 结构体的使用

#include <stdio.h> struct Student { char name[50]; int age; float marks; }; int main() { struct Student s; printf("Enter name: "); scanf("%s", s.name); printf("Enter age: "); scanf("%d", &s.age); printf("Enter marks: "); scanf("%f", &s.marks); printf("Name: %s Age: %d Marks: %.2f ", s.name, s.age, s.marks); return 0; }

定义和使用结构体。

13. 文件读写操作

#include <stdio.h> int main() { FILE *fptr; fptr = fopen("test.txt", "w"); if (fptr == NULL) { printf("Error opening file! "); return 1; } fprintf(fptr, "Hello, File! "); fclose(fptr); return 0; }

演示如何将数据写入文件。

14. 递归计算阶乘

#include <stdio.h> unsigned long long factorial(int n) { if (n == 0) return 1; else return n * factorial(n - 1); } int main() { int n; printf("Enter an integer: "); scanf("%d", &n); printf("Factorial of %d = %llu ", n, factorial(n)); return 0; }

使用递归计算阶乘。

15. 动态内存分配

#include <stdio.h> #include <stdlib.h> int main() { int n, i; printf("Enter the number of elements: "); scanf("%d", &n); int *arr = (int *)malloc(n * sizeof(int)); if (arr == NULL) { printf("Memory allocation failed! "); return 1; } for (i = 0; i < n; i++) { printf("Enter element %d: ", i + 1); scanf("%d", &arr[i]); } printf("Array elements: "); for (i = 0; i < n; i++) printf("%d ", arr[i]); free(arr); return 0; }

使用malloc动态分配内存。

以上是15个经典的C语言编程题及其解答。通过这些题目,读者可以掌握C语言的基本语法和常用编程技巧。后续的题目将继续深入探讨更复杂的概念和应用。

最新文章