MST

星途 面试题库

面试题:C语言结构体数组与函数操作

定义一个结构体表示图书信息,包含书名、作者、价格。编写一个函数,接受一个结构体数组和数组长度作为参数,计算并返回这些图书的平均价格。
12.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <string.h>

// 定义图书结构体
typedef struct {
    char title[100];
    char author[50];
    float price;
} Book;

// 计算平均价格的函数
float calculateAveragePrice(Book books[], int length) {
    float totalPrice = 0;
    for (int i = 0; i < length; i++) {
        totalPrice += books[i].price;
    }
    if (length == 0) {
        return 0;
    }
    return totalPrice / length;
}

int main() {
    Book books[] = {
        {"C Programming Language", "Brian W. Kernighan", 29.99},
        {"Effective Java", "Joshua Bloch", 49.99},
        {"Clean Code", "Robert C. Martin", 39.99}
    };
    int length = sizeof(books) / sizeof(books[0]);
    float averagePrice = calculateAveragePrice(books, length);
    printf("Average price of books: %.2f\n", averagePrice);
    return 0;
}

代码说明

  1. 结构体定义:使用typedef struct定义了Book结构体,包含title(书名)、author(作者)和price(价格)三个成员。
  2. 计算平均价格函数calculateAveragePrice函数遍历数组,累加每本书的价格,最后返回总价除以书的数量得到平均价格。如果数组长度为0,返回0。
  3. 主函数:在main函数中创建了一个Book结构体数组,并调用calculateAveragePrice函数计算平均价格,最后打印结果。

上述代码是C语言实现,其他语言实现思路类似,如C++:

#include <iostream>
#include <string>

// 定义图书结构体
struct Book {
    std::string title;
    std::string author;
    float price;
};

// 计算平均价格的函数
float calculateAveragePrice(Book books[], int length) {
    float totalPrice = 0;
    for (int i = 0; i < length; i++) {
        totalPrice += books[i].price;
    }
    if (length == 0) {
        return 0;
    }
    return totalPrice / length;
}

int main() {
    Book books[] = {
        {"C Programming Language", "Brian W. Kernighan", 29.99},
        {"Effective Java", "Joshua Bloch", 49.99},
        {"Clean Code", "Robert C. Martin", 39.99}
    };
    int length = sizeof(books) / sizeof(books[0]);
    float averagePrice = calculateAveragePrice(books, length);
    std::cout << "Average price of books: " << averagePrice << std::endl;
    return 0;
}

在C++中,使用std::string来存储字符串,其他逻辑与C语言版本类似。

Python实现如下:

class Book:
    def __init__(self, title, author, price):
        self.title = title
        self.author = author
        self.price = price


def calculate_average_price(books):
    if not books:
        return 0
    total_price = sum(book.price for book in books)
    return total_price / len(books)


books = [
    Book("C Programming Language", "Brian W. Kernighan", 29.99),
    Book("Effective Java", "Joshua Bloch", 49.99),
    Book("Clean Code", "Robert C. Martin", 39.99)
]
average_price = calculate_average_price(books)
print(f"Average price of books: {average_price}")

Python中通过定义类来表示图书信息,使用生成器表达式和sum函数计算总价,进而得到平均价格。