新闻动态

良好的口碑是企业发展的动力

c语言编程题经典100例

发布时间:2025-03-28 08:22:32 点击量:13
网站建设品牌

 

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


1. 打印“Hello, World!”

#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    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\n", 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.\n", num);
    else
        printf("%d is odd.\n", 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", 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.\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之间的数整除。


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\n", 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\n", 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\n", 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\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;
}

演示指针的基本用法。


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\nAge: %d\nMarks: %.2f\n", 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!\n");
        return 1;
    }
    fprintf(fptr, "Hello, File!\n");
    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", 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!\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语言的基本语法和常用编程技巧。后续的题目将继续深入探讨更复杂的概念和应用。

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:dm@cn86.cn进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。本站原创内容未经允许不得转载。
上一篇: setcancelable