C语言作为一门经典的编程语言,广泛应用于系统编程、嵌入式开发、算法实现等领域。掌握C语言编程技能对于程序员来说至关重要。以下是100个经典的C语言编程题,涵盖了基础语法、数组、指针、结构体、文件操作等多个方面。每个题目都附有详细的解答和代码示例,帮助读者深入理解C语言的编程技巧。
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
这是C语言中最简单的程序,用于验证开发环境是否配置正确。
#include <stdio.h>
int main() {
int a, b, sum;
printf("Enter two integers: ");
scanf("%d %d", &a, &b);
sum = a + b;
printf("Sum: %d\n", sum);
return 0;
}
通过scanf
函数获取用户输入,并计算两个整数的和。
#include <stdio.h>
int main() {
int num;
printf("Enter an integer: ");
scanf("%d", &num);
if (num % 2 == 0)
printf("%d is even.\n", num);
else
printf("%d is odd.\n", num);
return 0;
}
使用取模运算符%
判断奇偶性。
#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", n, factorial);
return 0;
}
使用循环计算阶乘,注意使用unsigned long long
类型以避免溢出。
#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.\n");
else if (flag == 0)
printf("%d is a prime number.\n", n);
else
printf("%d is not a prime number.\n", n);
return 0;
}
通过循环判断一个数是否能被2到n/2之间的数整除。
#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;
}
使用循环生成斐波那契数列。
#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\n", reversed);
return 0;
}
通过取模和除法操作反转整数。
#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\n", average);
return 0;
}
通过循环计算数组元素的平均值。
#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\n", max);
return 0;
}
通过循环查找数组中的*值。
#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;
}
通过冒泡排序算法对数组进行排序。
#include <stdio.h>
int main() {
int num = 10;
int *p;
p = #
printf("Value of num: %d\n", num);
printf("Address of num: %p\n", &num);
printf("Value of p: %p\n", p);
printf("Value pointed by p: %d\n", *p);
return 0;
}
演示指针的基本用法。
#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\nAge: %d\nMarks: %.2f\n", s.name, s.age, s.marks);
return 0;
}
定义和使用结构体。
#include <stdio.h>
int main() {
FILE *fptr;
fptr = fopen("test.txt", "w");
if (fptr == NULL) {
printf("Error opening file!\n");
return 1;
}
fprintf(fptr, "Hello, File!\n");
fclose(fptr);
return 0;
}
演示如何将数据写入文件。
#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", n, factorial(n));
return 0;
}
使用递归计算阶乘。
#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!\n");
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语言的基本语法和常用编程技巧。后续的题目将继续深入探讨更复杂的概念和应用。