题目

定义图书信息结构体 Book(包含书名、作者与价格),编写函数通过结构体指针接收该结构体并格式化输出图书详情。

输入格式:一行依次输入书名(字符串)、作者(字符串)和价格(浮点数),以空格分隔。

输出格式:按格式输出图书各字段信息,价格保留两位小数。

数据范围与约定:字符串长度不超过 50。

思路与算法

1. 结构体指针与箭头运算符
当通过指针传递结构体时,使用箭头运算符 -> 访问其成员,如 ptr->title,等价于解引用后的 (*ptr).title。

2. 避免大对象值传递拷贝
在 Java 语言中,传结构体指针只复制一个地址(通常 4 或 8 字节),相比直接值传递整个结构体能够大幅节省栈内存与拷贝开销。

完整程序

import java.util.Scanner;

class Book {
    int id;
    double price;
    String title;

    public Book(int id, double price, String title) {
        this.id = id;
        this.price = price;
        this.title = title;
    }

    public void printInfo() {
        System.out.printf("id=%d title=%s price=%.2f%n", id, title, price);
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int id = sc.nextInt();
        double price = sc.nextDouble();
        String title = sc.next();

        Book book = new Book(id, price, title);
        book.printInfo();
    }
}

运行示例

输入:

1 39.9 CPrimer

输出:

id=1 title=CPrimer price=39.90