第一部分:C语言基础入门

1.1 数据类型与变量

在C语言中,了解基本的数据类型和变量声明是非常重要的。以下是一些基础题目的示例:

题目1:声明一个整型变量age,并为其赋值。

#include <stdio.h>

int main() {
    int age;
    age = 20;
    printf("My age is: %d\n", age);
    return 0;
}

题目2:声明一个浮点型变量score,并为其赋值。

#include <stdio.h>

int main() {
    float score;
    score = 92.5;
    printf("My score is: %.2f\n", score);
    return 0;
}

1.2 运算符与表达式

运算符是C语言中用于执行特定操作的符号。以下是一些关于运算符和表达式的题目:

题目3:编写一个程序,计算并输出a和b的和、差、积、商。

#include <stdio.h>

int main() {
    int a = 10, b = 5;
    printf("Sum: %d\n", a + b);
    printf("Difference: %d\n", a - b);
    printf("Product: %d\n", a * b);
    printf("Quotient: %d\n", a / b);
    return 0;
}

1.3 控制结构

C语言中的控制结构包括条件语句和循环语句。以下是一些关于控制结构的题目:

题目4:编写一个程序,根据用户输入的年龄,判断其是否成年。

#include <stdio.h>

int main() {
    int age;
    printf("Enter your age: ");
    scanf("%d", &age);
    if (age >= 18) {
        printf("You are an adult.\n");
    } else {
        printf("You are not an adult.\n");
    }
    return 0;
}

第二部分:C语言进阶练习

2.1 函数与模块化编程

函数是C语言中的核心概念之一。以下是一些关于函数的题目:

题目5:编写一个函数,计算两个整数的最大公约数。

#include <stdio.h>

int gcd(int a, int b) {
    if (b == 0) {
        return a;
    } else {
        return gcd(b, a % b);
    }
}

int main() {
    int x = 60, y = 48;
    printf("GCD of %d and %d is %d\n", x, y, gcd(x, y));
    return 0;
}

2.2 数组与指针

数组是C语言中用于存储相同类型数据的集合。以下是一些关于数组和指针的题目:

题目6:编写一个程序,使用指针遍历一个整数数组,并输出每个元素的值。

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    for (int i = 0; i < 5; i++) {
        printf("Element %d: %d\n", i, *(ptr + i));
    }
    return 0;
}

第三部分:实战题目挑战

3.1 文件操作

文件操作是C语言中常用的功能之一。以下是一些关于文件操作的题目:

题目7:编写一个程序,将用户输入的文本内容写入到一个名为output.txt的文件中。

#include <stdio.h>

int main() {
    FILE *file;
    char text[100];

    file = fopen("output.txt", "w");
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }

    printf("Enter text: ");
    fgets(text, sizeof(text), stdin);
    fputs(text, file);

    fclose(file);
    return 0;
}

3.2 数据结构

数据结构是C语言中用于存储和组织数据的方式。以下是一些关于数据结构的题目:

题目8:编写一个链表程序,实现链表的插入、删除和遍历操作。

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

// 函数声明
Node* createNode(int data);
void insertNode(Node **head, int data);
void deleteNode(Node **head, int data);
void printList(Node *head);

int main() {
    Node *head = NULL;

    // 插入节点
    insertNode(&head, 1);
    insertNode(&head, 2);
    insertNode(&head, 3);

    // 打印链表
    printList(head);

    // 删除节点
    deleteNode(&head, 2);

    // 再次打印链表
    printList(head);

    return 0;
}

// 创建新节点
Node* createNode(int data) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 插入节点
void insertNode(Node **head, int data) {
    Node *newNode = createNode(data);
    newNode->next = *head;
    *head = newNode;
}

// 删除节点
void deleteNode(Node **head, int data) {
    Node *temp = *head, *prev = NULL;

    if (temp != NULL && temp->data == data) {
        *head = temp->next;
        free(temp);
        return;
    }

    while (temp != NULL && temp->data != data) {
        prev = temp;
        temp = temp->next;
    }

    if (temp == NULL) return;

    prev->next = temp->next;
    free(temp);
}

// 打印链表
void printList(Node *head) {
    Node *temp = head;
    while (temp != NULL) {
        printf("%d ", temp->data);
        temp = temp->next;
    }
    printf("\n");
}

通过以上题目,你可以巩固C语言的基础知识,并挑战一些实战题目。祝你学习顺利!