程序设计基础 C语言翁恺第七周习题解析

2026-08-25 0 阅读

1. 题目一:编写一个C程序,计算两个整数的最大公约数。

解析

最大公约数(Greatest Common Divisor,GCD)是指两个或多个整数共有约数中最大的一个。计算两个整数的最大公约数可以使用辗转相除法(也称欧几里得算法)。

代码示例

#include <stdio.h>

// 函数声明
int gcd(int a, int b);

int main() {
    int num1, num2, result;

    // 输入两个整数
    printf("请输入两个整数:");
    scanf("%d %d", &num1, &num2);

    // 调用函数计算最大公约数
    result = gcd(num1, num2);

    // 输出结果
    printf("最大公约数为:%d\n", result);

    return 0;
}

// 辗转相除法计算最大公约数
int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

2. 题目二:编写一个C程序,实现一个简单的计算器。

解析

计算器可以支持加、减、乘、除四种基本运算。为了实现计算器,我们需要定义一个函数,根据用户输入的运算符和两个操作数来计算结果。

代码示例

#include <stdio.h>

// 函数声明
double calculate(double a, double b, char op);

int main() {
    double num1, num2, result;
    char op;

    // 输入两个操作数和运算符
    printf("请输入两个操作数和运算符(+,-,*,/):");
    scanf("%lf %lf %c", &num1, &num2, &op);

    // 调用函数计算结果
    result = calculate(num1, num2, op);

    // 输出结果
    printf("结果为:%lf\n", result);

    return 0;
}

// 计算器函数
double calculate(double a, double b, char op) {
    switch (op) {
        case '+':
            return a + b;
        case '-':
            return a - b;
        case '*':
            return a * b;
        case '/':
            if (b != 0) {
                return a / b;
            } else {
                printf("除数不能为0!\n");
                return 0;
            }
        default:
            printf("无效的运算符!\n");
            return 0;
    }
}

3. 题目三:编写一个C程序,实现一个学生信息管理系统。

解析

学生信息管理系统可以包含学生的姓名、学号、年龄、成绩等信息。为了实现该系统,我们需要定义一个结构体来存储学生信息,并实现增删改查等功能。

代码示例

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

// 定义学生信息结构体
typedef struct {
    char name[50];
    int id;
    int age;
    float score;
} Student;

// 函数声明
void addStudent(Student *students, int *count);
void deleteStudent(Student *students, int *count);
void updateStudent(Student *students, int *count);
void queryStudent(Student *students, int count);
void displayStudents(Student *students, int count);

int main() {
    Student students[100]; // 假设最多存储100名学生信息
    int count = 0; // 当前存储的学生数量

    // 实现学生信息管理系统的各种功能
    // ...

    return 0;
}

// 添加学生信息
void addStudent(Student *students, int *count) {
    // 实现添加学生信息的逻辑
    // ...
}

// 删除学生信息
void deleteStudent(Student *students, int *count) {
    // 实现删除学生信息的逻辑
    // ...
}

// 更新学生信息
void updateStudent(Student *students, int *count) {
    // 实现更新学生信息的逻辑
    // ...
}

// 查询学生信息
void queryStudent(Student *students, int count) {
    // 实现查询学生信息的逻辑
    // ...
}

// 显示所有学生信息
void displayStudents(Student *students, int count) {
    // 实现显示所有学生信息的逻辑
    // ...
}

以上是C语言翁恺第七周习题的解析和代码示例。这些示例代码可以帮助你更好地理解题目要求和实现思路。在实际编写代码时,你需要根据具体需求进一步完善和优化代码。

分享到: