题目
定义图书信息结构体 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