1. 题目一:设计一个简单的学生类
题目描述: 设计一个名为Student的类,包含以下属性:姓名(name)、年龄(age)和成绩(score)。同时,实现以下方法:设置姓名、年龄和成绩,获取姓名、年龄和成绩,以及计算平均成绩。
代码示例:
#include <stdio.h>
#include <string.h>
typedef struct {
char name[50];
int age;
float score;
} Student;
void setStudentInfo(Student *s, const char *name, int age, float score) {
strcpy(s->name, name);
s->age = age;
s->score = score;
}
void getStudentInfo(const Student *s) {
printf("Name: %s\n", s->name);
printf("Age: %d\n", s->age);
printf("Score: %.2f\n", s->score);
}
float calculateAverageScore(const Student *s) {
return s->score;
}
int main() {
Student s;
setStudentInfo(&s, "Alice", 20, 90.5);
getStudentInfo(&s);
printf("Average Score: %.2f\n", calculateAverageScore(&s));
return 0;
}
2. 题目二:设计一个图书管理类
题目描述: 设计一个名为Library的类,包含以下属性:图书列表(books)和图书数量(bookCount)。实现以下方法:添加图书、删除图书、查找图书和显示所有图书。
代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
char title[100];
char author[100];
} Book;
typedef struct {
Book *books;
int bookCount;
} Library;
void addBook(Library *library, const char *title, const char *author) {
library->books = realloc(library->books, (library->bookCount + 1) * sizeof(Book));
strcpy(library->books[library->bookCount].title, title);
strcpy(library->books[library->bookCount].author, author);
library->bookCount++;
}
void deleteBook(Library *library, const char *title) {
for (int i = 0; i < library->bookCount; i++) {
if (strcmp(library->books[i].title, title) == 0) {
for (int j = i; j < library->bookCount - 1; j++) {
library->books[j] = library->books[j + 1];
}
library->bookCount--;
break;
}
}
}
void findBook(const Library *library, const char *title) {
for (int i = 0; i < library->bookCount; i++) {
if (strcmp(library->books[i].title, title) == 0) {
printf("Found: %s by %s\n", library->books[i].title, library->books[i].author);
return;
}
}
printf("Book not found.\n");
}
void displayBooks(const Library *library) {
for (int i = 0; i < library->bookCount; i++) {
printf("%d. %s by %s\n", i + 1, library->books[i].title, library->books[i].author);
}
}
int main() {
Library library;
library.books = NULL;
library.bookCount = 0;
addBook(&library, "C Programming Language", "Kernighan and Ritchie");
addBook(&library, "The C++ Programming Language", "Stroustrup");
displayBooks(&library);
findBook(&library, "C Programming Language");
deleteBook(&library, "The C++ Programming Language");
displayBooks(&library);
return 0;
}
3. 题目三:设计一个银行账户类
题目描述: 设计一个名为BankAccount的类,包含以下属性:账户号(accountNumber)、账户余额(balance)和密码(password)。实现以下方法:创建账户、存款、取款和查询余额。
代码示例:
#include <stdio.h>
#include <string.h>
typedef struct {
int accountNumber;
float balance;
char password[50];
} BankAccount;
BankAccount *createAccount(int accountNumber, const char *password) {
BankAccount *account = (BankAccount *)malloc(sizeof(BankAccount));
account->accountNumber = accountNumber;
strcpy(account->password, password);
account->balance = 0.0;
return account;
}
void deposit(BankAccount *account, float amount) {
account->balance += amount;
}
void withdraw(BankAccount *account, float amount) {
if (account->balance >= amount) {
account->balance -= amount;
} else {
printf("Insufficient funds.\n");
}
}
void checkBalance(const BankAccount *account) {
printf("Account Number: %d\n", account->accountNumber);
printf("Balance: %.2f\n", account->balance);
}
int main() {
BankAccount *account = createAccount(123456, "password123");
deposit(account, 1000.0);
withdraw(account, 200.0);
checkBalance(account);
free(account);
return 0;
}
总结
以上是三个关于C语言面向对象编程的模拟试题,通过这些题目,你可以了解到如何使用C语言实现面向对象编程的基本概念。在实际开发中,面向对象编程可以帮助你更好地组织代码,提高代码的可维护性和可扩展性。希望这些题目能够帮助你巩固面向对象编程的知识。
