编写程序,从键盘输入n(n<10)本书的名称和定价并存入结构数组中,从中查找定价最高和最低的书的名称和定价,并输出。
时间: 2023-04-26 17:04:12 浏览: 128
好的,以下是程序的中文描述:
1. 首先,从键盘输入一个小于10的正整数n,表示要输入n本书的信息。
2. 定义一个结构体Book,包含两个成员变量:书名name和价格price。
3. 定义一个长度为n的结构数组books,用于存储n本书的信息。
4. 使用for循环,从键盘输入每一本书的名称和价格,并将其存储到books数组中。
5. 定义两个变量max和min,分别表示最高价和最低价。初始值可以设为books[].price。
6. 使用for循环遍历books数组,比较每本书的价格与max和min的大小关系,更新max和min的值。
7. 最后,输出最高价和最低价对应的书名和价格。
完整的程序代码如下:
相关问题
编写c++程序,从键盘输入 n (n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。
以下是一个简单的C++程序实现:
```c++
#include <iostream>
using namespace std;
struct Book {
string name; // 书名
double price; // 定价
};
int main() {
int n;
cout << "请输入书的数量(n<10):";
cin >> n;
Book books[n];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "本书的名称和定价:";
cin >> books[i].name >> books[i].price;
}
int maxIndex = 0, minIndex = 0;
for (int i = 1; i < n; i++) {
if (books[i].price > books[maxIndex].price) {
maxIndex = i;
}
if (books[i].price < books[minIndex].price) {
minIndex = i;
}
}
cout << "定价最高的书是 " << books[maxIndex].name << ",价格为 " << books[maxIndex].price << endl;
cout << "定价最低的书是 " << books[minIndex].name << ",价格为 " << books[minIndex].price << endl;
return 0;
}
```
程序首先从键盘输入书的数量n,然后定义一个长度为n的结构数组books,循环从键盘输入每本书的名称和定价,并存入结构数组中。
接下来,程序定义了两个变量maxIndex和minIndex分别表示定价最高和最低的书的下标,然后循环遍历结构数组,比较每本书的定价,更新maxIndex和minIndex。
最后,程序输出定价最高和最低的书的名称和定价。
编写程序,从键盘输入 n (n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。\n\n输出格式语句:\n\nprintf(\"highest price: %.1f, %
### 回答1:
题目中要求编写程序,从键盘输入不超过10本书的名称和定价并存入一个结构数组中,查找并输出其中定价最高和最低的书的名称和定价。
答案中使用了printf函数输出格式语句:“highest price: %.1f, %'d, %s\n", max_price, min_price, max_book.name”,其中%.1f表示输出一个一位小数的浮点数(即定价),%'d表示输出千位分隔符的整数(即定价),%s表示输出字符串(即书名),\n表示换行。最后将要输出的三个变量(一个浮点数和两个字符串)依次填入格式字符串中。
### 回答2:
本书的名称是%s\nlowest price: %.1f, %。其中的书名是%s\n\n\", highest_price, highest_name, lowest_price, lowest_name);
这个程序首先需要定义一个结构体,包括书名和定价两个成员变量。然后根据给定的n,定义一个结构体数组,存储n本书的信息。通过一个循环,从键盘读入n本书的信息,将读入的信息存储到结构体数组中。
编写查找定价最高和最低的书的函数。最高价和最低价的初值分别取数组中第一本书的定价,然后通过循环遍历整个数组,将每一本书的定价与已知的最高价和最低价比较,如果当前书的定价大于最高价,则将最高价和最高价的书名更新,如果当前书的定价小于最低价,则将最低价和最低价的书名更新。
最后,输出查找结果。使用printf函数输出最高价和最低价,以及对应的书名。
一个可能的完整程序如下:
#include <stdio.h>
#define MAX_BOOKS 10
struct Book {
char name[50];
float price;
};
int main() {
struct Book books[MAX_BOOKS];
int n;
printf("Please enter the number of books (less than 10): ");
scanf("%d", &n);
printf("Please enter the name and price of %d books:\n", n);
for (int i=0; i<n; i++) {
printf("Book %d:\n", i+1);
printf("\tName: ");
scanf("%s", books[i].name);
printf("\tPrice: ");
scanf("%f", &books[i].price);
}
// 查找最高价和最低价的书
float highest_price = books[0].price;
float lowest_price = books[0].price;
char highest_name[50];
char lowest_name[50];
for (int i=1; i<n; i++) {
if (books[i].price > highest_price) {
highest_price = books[i].price;
strcpy(highest_name, books[i].name);
}
if (books[i].price < lowest_price) {
lowest_price = books[i].price;
strcpy(lowest_name, books[i].name);
}
}
// 输出结果
printf("highest price: %.1f, %s\nlowest price: %.1f, %s\n",
highest_price, highest_name, lowest_price, lowest_name);
return 0;
}
### 回答3:
这道题目要求我们用结构体和数组来存储和处理输入的数据,从中找到价格最高和最低的书名和价格。下面是我编写的程序:
```c
#include <stdio.h>
#define N 10
struct Book {
char name[30];
float price;
};
int main() {
int n;
printf("Please enter the number of books (n<10): ");
scanf("%d", &n);
struct Book books[N];
float max_price = 0.0, min_price = 99999.0;
int max_index = 0, min_index = 0;
for (int i = 0; i < n; i++) {
printf("Enter name and price of book %d: ", i+1);
scanf("%s %f", books[i].name, &books[i].price);
if (books[i].price > max_price) {
max_price = books[i].price;
max_index = i;
}
if (books[i].price < min_price) {
min_price = books[i].price;
min_index = i;
}
}
printf("The book with highest price is \"%s\" at %.1f yuan.\n", books[max_index].name, max_price);
printf("The book with lowest price is \"%s\" at %.1f yuan.\n", books[min_index].name, min_price);
return 0;
}
```
这个程序首先会要求用户输入要存储的书的数量n,并定义了一个结构体数组books[N]来存储输入的数据。除此之外,程序还定义了一个max_price和min_price变量用来记录当前最高和最低的价格,以及max_index和min_index变量来记录在books数组中最高和最低的价格所在的下标。
然后,程序会通过循环,让用户依次输入每一本书的名称和价格,存储在books数组中。同时,程序会更新max_price、min_pirce、max_index和min_index。
最后,在程序循环结束后,我们输出得到到的最高和最低价格对应的书名和价格,其中printf语句根据输入的例子给出:
```c
printf("highest price: %.1f, %s\n", max_price, books[max_index].name);
printf("lowest price: %.1f, %s\n", min_price, books[min_index].name);
```
这段代码使用了“%.1f”来控制输出的浮点数的小数位数为1,避免输出过于繁琐。同时,用“%s”来输出字符串类型的数据。这样,我们就可以更好地输出数据了。
这样,我们就成功地完成了本题。
阅读全文