在给定的一组书名中,从键盘任意输入一个书名(书名可以有空格)。若找到,则打印该书名,否则打印"没找到"。找出其中错误并改正之。 #include <string.h> #include <stdio.h> int main() { int i, findFlag; char x; char str[][13]={ "Pascal","Basic","Fortran", "Java", "Visual C", "Visual Basic" };
时间: 2023-07-19 14:28:50 浏览: 203
在代码中,我们需要用一个字符数组来存储用户输入的书名,而不是只用一个字符变量。此外,书名数组中最长的字符串长度为12,因此我们需要将字符数组的长度至少设置为13。另外,我们需要使用strcmp()函数来比较两个字符串是否相等。下面是修改后的代码:
```
#include <string.h>
#include <stdio.h>
int main() {
int i, findFlag = 0;
char str[][13] = {"Pascal", "Basic", "Fortran", "Java", "Visual C", "Visual Basic"};
char input[13];
printf("请输入书名:");
scanf("%s", input);
for (i = 0; i < 6; i++) {
if (strcmp(input, str[i]) == 0) {
printf("找到了:%s\n", str[i]);
findFlag = 1;
break;
}
}
if (!findFlag) {
printf("没找到\n");
}
return 0;
}
```
相关问题
用go 语言实现 查找图书 将给定的若干本图书的信息(书号、书名、定价)按输入的先后顺序加入到一个单链表中。然后遍历单链表,寻找并输出价格最高的图书信息。若存在相同的定价,则按原始顺序全部输出。 输入格式: 首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试的第一行输入正整数n,表示有n本不同的书。接下来n行分别输入一本图书的信息。其中,书号由长度等于6的纯数字构成;而书名则由长度不超过50且不含空格的字符串组成,价格包含2位小数。 输出格式: 对于每组测试,输出价格最高的图书信息(书号、书名、定价),数据之间用一个空格隔开,定价的输出保留2位小数。 输入样例: 1 4 023689 DataStructure 26.50 123456 FundamentalsOfDataStructure 76.00 157618 FundamentalsOfC++Language 24.10 057618 OpereationSystem 76.00
好的,以下是用 Go 语言实现查找图书的代码。
在本题中,需要读入多组数据,因此我们可以通过 for 循环来实现。对于每组数据,我们可以使用一个结构体来保存每本书的信息,然后将这些结构体按输入顺序加入到一个单链表中。最后遍历单链表,找到价格最高的图书并输出即可。
```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
type Book struct {
id string
name string
price float64
next *Book
}
func main() {
reader := bufio.NewReader(os.Stdin)
// 读入测试数据的组数
var T int
fmt.Fscan(reader, &T)
for t := 0; t < T; t++ {
// 读入每组测试数据
var n int
fmt.Fscan(reader, &n)
var head *Book = nil
var tail *Book = nil
for i := 0; i < n; i++ {
// 读入一本书的信息
var id, name string
var priceStr string
fmt.Fscan(reader, &id, &name, &priceStr)
// 将价格转换为浮点数
price, _ := strconv.ParseFloat(priceStr, 64)
// 创建一个 Book 对象
book := &Book{id, name, price, nil}
// 将 book 加入到单链表中
if head == nil {
head = book
tail = book
} else {
tail.next = book
tail = book
}
}
// 遍历单链表,找到价格最高的图书
maxPrice := 0.0
var maxBooks []*Book
for book := head; book != nil; book = book.next {
if book.price > maxPrice {
maxPrice = book.price
maxBooks = []*Book{book}
} else if book.price == maxPrice {
maxBooks = append(maxBooks, book)
}
}
// 输出所有价格最高的图书
for _, book := range maxBooks {
fmt.Printf("%s %s %.2f\n", book.id, book.name, book.price)
}
}
}
```
输入样例:
```
1
4
023689 DataStructure 26.50
123456 FundamentalsOfDataStructure 76.00
157618 FundamentalsOfC++Language 24.10
057618 OpereationSystem 76.00
```
输出样例:
```
123456 FundamentalsOfDataStructure 76.00
057618 OpereationSystem 76.00
```
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。 输出格式: 在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。 输入样例:
### 回答1:
这是一个程序题,要求输入n(小于10),然后随后输入n本书的信息。每本书在一行中给出书名(长度不超过30的字符串)和价格(不超过3个小数位的非负实数),中间用空格分隔。要求编写程序,查找并输出其中价格最高和价格最低的书的名称和价格。题目保证没有两本书的价格相同。输出格式:在一行中按照“价格, 书名”的格式先输出价格最高的书,然后输出价格最低的书,中间用逗号分隔,价格保留2位小数,书名没有空格,注意书名中间有逗号。
### 回答2:
题目不算难,主要考察对于输入输出格式和字符串操作的掌握。
思路
首先读入n,然后用一个for循环读入每本书的名称和定价。读入时要注意,书名可能包含空格,因此应该用getline()函数读入。价格应该用double类型存储,可以用scanf()或cin读入。
在读入过程中,顺便记录最高价和最低价以及对应的书名,方法是定义四个变量:min_price、max_price、min_name和max_name,遇到新的价格时,如果它比当前的最高价要高,则更新max_price和max_name;如果它比当前的最低价要低,则更新min_price和min_name。
最后输出结果即可。输出时,要将价格精确到2位小数,可以用printf()或cout搭配ios::fixed和ios::setprecision()进行格式化输出。
代码
### 回答3:
本题是一道基础的输入输出练习题,需要读入 n 本书的名称和价格,并找到其中价格最高和最低的书名及其价格。具体思路如下:
1. 读入 n 的值。
2. 对于每本书,先读入书名,再读入价格,并将其保存在一个数组(或者 vector)中。
3. 在数组中找到价格最高和最低的书,并记录它们的下标。
4. 使用记录下的下标输出结果。
下面是代码实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> name(n);
vector<double> price(n);
int max_idx = 0, min_idx = 0;
for (int i = 0; i < n; i++) {
cin >> name[i] >> price[i];
if (price[i] > price[max_idx]) max_idx = i;
if (price[i] < price[min_idx]) min_idx = i;
}
cout << fixed << setprecision(2) << price[max_idx] << ", " << name[max_idx] << endl;
cout << fixed << setprecision(2) << price[min_idx] << ", " << name[min_idx] << endl;
return 0;
}
```
其中,用 `vector<string>` 和 `vector<double>` 定义了两个数组,分别存储书名和价格。
在读入每本书的信息时,使用了 `cin` 进行输入,并将读入的数据保存在数组对应的位置上。同时,使用 `max_idx` 和 `min_idx` 分别记录价格最高和最低的书在数组中的下标。
在输出结果时,使用 `fixed` 和 `setprecision`,保留 2 位小数输出价格,并按照题目要求输出书名和价格。
阅读全文