引言

C语言作为一种历史悠久且功能强大的编程语言,是学习编程的重要起点。掌握C语言不仅有助于理解计算机的工作原理,还能为学习其他编程语言打下坚实的基础。本文将提供50个实践题目,涵盖C语言编程的基础知识和高级技巧,旨在帮助读者从入门到精通。

第一部分:C语言基础

题目1:打印“Hello, World!”

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

题目2:变量和基本数据类型

#include <stdio.h>

int main() {
    int age = 25;
    float pi = 3.14159;
    char grade = 'A';
    printf("Age: %d\n", age);
    printf("Pi: %.5f\n", pi);
    printf("Grade: %c\n", grade);
    return 0;
}

题目3:运算符和表达式

#include <stdio.h>

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

第二部分:控制流

题目4:条件语句

#include <stdio.h>

int main() {
    int number = 10;
    if (number > 0) {
        printf("Number is positive.\n");
    } else if (number < 0) {
        printf("Number is negative.\n");
    } else {
        printf("Number is zero.\n");
    }
    return 0;
}

题目5:循环结构

#include <stdio.h>

int main() {
    int i;
    for (i = 1; i <= 5; i++) {
        printf("Loop %d\n", i);
    }
    return 0;
}

第三部分:数组与指针

题目6:一维数组

#include <stdio.h>

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

题目7:指针操作

#include <stdio.h>

int main() {
    int a = 10;
    int *ptr = &a;
    printf("Value of a: %d\n", a);
    printf("Address of a: %p\n", (void *)&a);
    printf("Value of ptr: %p\n", (void *)ptr);
    printf("Value pointed by ptr: %d\n", *ptr);
    return 0;
}

第四部分:函数与递归

题目8:函数定义与调用

#include <stdio.h>

void greet() {
    printf("Hello, Function!\n");
}

int main() {
    greet();
    return 0;
}

题目9:递归函数

#include <stdio.h>

int factorial(int n) {
    if (n <= 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int number = 5;
    printf("Factorial of %d is %d\n", number, factorial(number));
    return 0;
}

第五部分:高级主题

题目10:结构体

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
    float salary;
} Employee;

int main() {
    Employee emp;
    strcpy(emp.name, "John Doe");
    emp.age = 30;
    emp.salary = 50000.0;
    printf("Name: %s\n", emp.name);
    printf("Age: %d\n", emp.age);
    printf("Salary: %.2f\n", emp.salary);
    return 0;
}

题目11:文件操作

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    fprintf(file, "This is a test.\n");
    fclose(file);
    return 0;
}

第六部分:实战项目

题目12:计算器程序

#include <stdio.h>

int main() {
    char operator;
    double first, second;
    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operator);
    printf("Enter two operands: ");
    scanf("%lf %lf", &first, &second);

    switch (operator) {
        case '+':
            printf("%.1lf + %.1lf = %.1lf\n", first, second, first + second);
            break;
        case '-':
            printf("%.1lf - %.1lf = %.1lf\n", first, second, first - second);
            break;
        case '*':
            printf("%.1lf * %.1lf = %.1lf\n", first, second, first * second);
            break;
        case '/':
            if (second != 0.0)
                printf("%.1lf / %.1lf = %.1lf\n", first, second, first / second);
            else
                printf("Division by zero is not allowed.\n");
            break;
        default:
            printf("Invalid operator!\n");
    }
    return 0;
}

题目13:字符串处理

#include <stdio.h>
#include <string.h>

int main() {
    char str1[100], str2[100];
    printf("Enter first string: ");
    fgets(str1, sizeof(str1), stdin);
    printf("Enter second string: ");
    fgets(str2, sizeof(str2), stdin);

    if (strcmp(str1, str2) == 0) {
        printf("Strings are equal.\n");
    } else {
        printf("Strings are not equal.\n");
    }
    return 0;
}

结论

通过以上50个实践题目的学习,读者可以逐步掌握C语言编程的基础和高级技巧。每个题目都旨在帮助读者通过实际操作来加深对语言特性的理解。不断练习和挑战自己,相信不久的将来,你将成为一名熟练的C语言程序员。