C语言课程设计案例精选
一、引言
C语言是一门广泛应用于系统开发和嵌入式编程的高级程序设计语言。在C语言课程学习中,设计案例是提高学生编程能力和实践经验的重要环节。本文将介绍一些精选的C语言课程设计案例,帮助学生更好地理解和掌握C语言。
二、案例一:学生成绩管理系统
2.1 问题描述
设计一个学生成绩管理系统,要求能够实现以下功能: - 输入学生信息和成绩 - 统计平均成绩和总分 - 按照成绩排序并输出排名
2.2 设计思路
1.定义学生结构体,包含学号、姓名和成绩等信息。
2.使用数组存储学生信息。
3.编写函数实现输入学生信息和成绩、计算平均成绩和总分、排序等功能。
2.3 代码示例
#include <stdio.h>
#define MAX_STUDENTS 100
struct Student {
    int id;
    char name[20];
    float score;
};
void inputStudents(struct Student students[], int n) {
    for (int i = 0; i < n; i++) {
        printf("请输入第%d个学生的学号、姓名和成绩:", i + 1);
        scanf("%d%s%f", &students[i].id, students[i].name, &students[i].score);
    }
}
void calculateAverageScore(struct Student students[], int n) {
    float sum = 0;
    for (int i = 0; i < n; i++) {
        sum += students[i].score;
    }
    float average = sum / n;
    printf("平均成绩:%f\n", average);
}
void sortStudents(struct Student students[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (students[j].score < students[j + 1].score) {
                struct Student temp = students[j];
                students[j] = students[j + 1];
                students[j + 1] = temp;
            }
        }
    }
}
void outputStudents(struct Student students[], int n) {
    printf("按照成绩排序后的学生信息:\n");
    for (int i = 0; i < n; i++) {
        printf("学号:%d,姓名:%s,成绩:%f\n", students[i].id, students[i].name, students[i].score);
    }
}
int main() {
    int n;
    printf("请输入学生人数:");
    scanf("while语句简单例子%d", &n);
    struct Student students[MAX_STUDENTS];
    inputStudents(students, n);
    calculateAverageScore(students, n);
    sortStudents(students, n);
    outputStudents(students, n);
    return 0;
}
三、案例二:简单计算器
3.1 问题描述
设计一个简单的计算器程序,要求能够进行基本的四则运算。
3.2 设计思路
4.使用switch语句实现菜单功能,让用户选择进行的运算。
5.编写函数实现加法、减法、乘法和除法等运算。
3.3 代码示例
#include <stdio.h>
float add(float a, float b) {
    return a + b;
}
float subtract(float a, float b) {
    return a - b;
}
float multiply(float a, float b) {
    return a * b;
}
float divide(float a, float b) {
    if (b != 0) {
        return a / b;
    } else {
        printf("除数不能为0\n");
        return 0;
    }
}
int main() {
    float a, b;
    int choice;
    printf("请输入两个操作数:");
    scanf("%f%f", &a, &b);
    printf("请选择运算类型:\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    printf("请输入选项:");
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("结果:%f\n", add(a, b));
            break;
        case 2:
            printf("结果:%f\n", subtract(a, b));
            break;
        case 3:
            printf("结果:%f\n", multiply(a, b));
            break;
        case 4:
            printf("结果:%f\n", divide(a, b));
            break;
        default:
            printf("无效的选项\n");
            break;
    }
    return 0;
}
四、案例三:图书管理系统
4.1 问题描述
设计一个图书管理系统,要求能够实现以下功能: - 添加图书信息 - 删除图书信息 - 查询图书信息 - 修改图书信息
4.2 设计思路
6.定义图书结构体,包含书名、作者和出版社等信息。
7.使用链表存储图书信息。
8.编写函数实现添加、删除、查询和修改图书信息等功能。
4.3 代码示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Book {
    char title[50];
    char author[50];
    char publisher[50];
    struct Book *next;
};
struct Book *head = NULL;
void addBook() {
    struct Book *newBook = (struct Book *) malloc(sizeof(struct Book));
    printf("请输入图书信息(书名、作者、出版社):");
    scanf("%s%s%s", newBook->title, newBook->author, newBook->publisher);
    newBook->next = NULL;
    if (head == NULL) {
        head = newBook;
    } else {
        struct Book *temp = head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = newBook;
    }
    printf("添加图书成功\n");
}
void deleteBook() {
    if (head == NULL) {
        printf("图书馆为空\n");
        return;
    }
    char title[50];
    printf("请输入要删除的图书的书名:");
    scanf("%s", title);
    if (strcmp(head->title, title) == 0) {
        struct Book *temp = head;
        head = head->next;
        free(temp);
        printf("删除图书成功\n");
        return;
    }
    struct Book *prev = head;
    struct Book *curr = head->next;
    while (curr != NULL) {
        if (strcmp(curr->title, title) == 0) {
            prev->next = curr->next;
            free(curr);
            printf("删除图书成功\n");
            return;
        }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。