前言

C语言作为一门历史悠久且应用广泛的编程语言,一直是程序员面试中的重要考点。掌握C语言的编程能力,对于求职者来说至关重要。本文将为你整理一些常见的C语言面试真题,帮助你轻松应对挑战。

一、基本语法与数据类型

1. 常量与变量

题目:编写一个C程序,定义两个整型变量,一个常量,并分别给它们赋值。

答案:

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    const int c = 30;
    return 0;
}

2. 运算符

题目:编写一个C程序,计算两个整数的和、差、积、商。

答案:

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    int sum = a + b;
    int diff = a - b;
    int prod = a * b;
    int quot = a / b;
    return 0;
}

二、控制结构

1. 条件语句

题目:编写一个C程序,根据用户输入的年龄判断是儿童、青少年、成年人或老年人。

答案:

#include <stdio.h>

int main() {
    int age;
    printf("请输入您的年龄:");
    scanf("%d", &age);
    if (age < 18) {
        printf("您是儿童。\n");
    } else if (age >= 18 && age < 60) {
        printf("您是青少年。\n");
    } else {
        printf("您是成年人或老年人。\n");
    }
    return 0;
}

2. 循环结构

题目:编写一个C程序,计算1到100之间所有整数的和。

答案:

#include <stdio.h>

int main() {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
        sum += i;
    }
    printf("1到100之间所有整数的和为:%d\n", sum);
    return 0;
}

三、函数与数组

1. 函数

题目:编写一个C程序,定义一个函数计算两个整数的最大值。

答案:

#include <stdio.h>

int max(int a, int b) {
    return (a > b) ? a : b;
}

int main() {
    int a = 10;
    int b = 20;
    printf("两个整数的最大值为:%d\n", max(a, b));
    return 0;
}

2. 数组

题目:编写一个C程序,将一个整数数组中的元素逆序。

答案:

#include <stdio.h>

void reverseArray(int arr[], int size) {
    int temp;
    for (int i = 0; i < size / 2; i++) {
        temp = arr[i];
        arr[i] = arr[size - 1 - i];
        arr[size - 1 - i] = temp;
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);
    reverseArray(arr, size);
    printf("逆序后的数组为:");
    for (int i = 0; i < size; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

四、指针与结构体

1. 指针

题目:编写一个C程序,交换两个整数的值。

答案:

#include <stdio.h>

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main() {
    int a = 10;
    int b = 20;
    swap(&a, &b);
    printf("交换后的值为:%d %d\n", a, b);
    return 0;
}

2. 结构体

题目:编写一个C程序,定义一个学生结构体,并创建一个学生数组,打印所有学生的信息。

答案:

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
    float score;
} Student;

void printStudents(Student students[], int size) {
    for (int i = 0; i < size; i++) {
        printf("姓名:%s,年龄:%d,成绩:%f\n", students[i].name, students[i].age, students[i].score);
    }
}

int main() {
    Student students[] = {
        {"张三", 20, 85.5},
        {"李四", 22, 90.0},
        {"王五", 21, 78.9}
    };
    int size = sizeof(students) / sizeof(students[0]);
    printStudents(students, size);
    return 0;
}

五、文件操作

1. 文件写入

题目:编写一个C程序,将一段文本写入文件。

答案:

#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("打开文件失败。\n");
        return 1;
    }
    fprintf(fp, "这是一段测试文本。\n");
    fclose(fp);
    return 0;
}

2. 文件读取

题目:编写一个C程序,读取文件内容并打印到屏幕上。

答案:

#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "r");
    if (fp == NULL) {
        printf("打开文件失败。\n");
        return 1;
    }
    char buffer[1024];
    while (fgets(buffer, sizeof(buffer), fp)) {
        printf("%s", buffer);
    }
    fclose(fp);
    return 0;
}

六、总结

通过以上这些C语言面试真题的练习,相信你已经对C语言的编程能力有了更深的理解。在面试过程中,保持自信,认真审题,相信你一定能顺利应对挑战。祝你好运!