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小时内删除。
发表评论