注意gets puts get char各自的区别还有用法
很奇怪的就是不知道为啥clion测试的时候最后一个样例总是没有结果
而且程序也不会结束,就觉得很奇怪了,但是提交到PAT上面一点问题没有。
目前尚不清楚原因。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <map>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
struct book{
char id[8];
char title[81];
char author[81];
vector<string> kw;
char publisher[81];
char year[5];
};
vector <book> store;
bool cmp(book a, book b)
{
return strcmp(a.id,b.id)<0;//注意这里,将字符串的数字ID按照递增排序
}
int main()
{
int n,m,i,j;
scanf("%d",&n);
getchar(); //erase the "\n"
for(i = 0;i<n;i++)
{
book bb;
gets(bb.id);
gets(bb.title);
gets(bb.author);
do{
char tmp[10];
scanf("%s", tmp);
bb.kw.push_back(tmp);
}while(getchar()!='\n');
gets(bb.publisher);
gets(bb.year);
store.push_back(bb);
}
sort(store.begin(), store.end(), cmp);
scanf("%d", &m);
int order;
char zz[81];
int find ;
for(int k = 0;k<m;k++)
{
// printf("-------------%d--------------\n",k);
scanf("%d", &order);
getchar();
// printf("-------------1%d--------------\n",k);
getchar();
// printf("-------------2%d--------------\n",k);
gets(zz);
// printf("-------------3%d--------------\n",k);
printf("%d: %s\n",order,zz);
// printf("-------------4%d--------------\n",k);
find = 0;
if(order == 1)
{
for(j=0;j<store.size();j++)
if(strcmp(zz,store[j].title)==0)
{
puts(store[j].id);
find = 1;
}
}
else if(order == 2)
{
for(j=0;j<store.size();j++)
if(strcmp(zz,store[j].author)==0)
{
puts(store[j].id);
find = 1;
}
}
else if(order == 4)
{
for(j=0;j<store.size();j++)
if(strcmp(zz,store[j].publisher)==0)
{
puts(store[j].id);
find = 1;
}
}
else if(order == 5)
{
for(j=0;j<store.size();j++)
if(strcmp(zz,store[j].year)==0)
{
puts(store[j].id);
find = 1;
}
}
else if (order == 3)
{
for(j=0;j<store.size();j++)
{
for(i = 0;i < store[j].kw.size();i++)
if(strcmp(zz,store[j].kw[i].c_str())==0) //strcmp需要传入的是指针所以用c_str()
{
puts(store[j].id);
find = 1;
break;
}
}
}
if(find == 0)
{
printf("Not Found\n");
}
}
return 0;
}
/*
3
1111111
The Testing Book
Yue Chen
test code debug sort keywords
ZUCS Print
2011
3333333
Another Testing Book
Yue Chen
test code sort keywords
ZUCS Print2
2012
2222222
The Testing Book
CYLL
keywords debug book
ZUCS Print2
2011
5
1: The Testing Book
2: Yue Chen
3: keywords
4: ZUCS Print
5: 2011
*/