结构体的运用
2024-03-30 16:16:09
发布于:江苏
26阅读
0回复
0点赞
这道题也是非常简单,相信大家都可以做出来,但是还是提供一下思路:
首先一个结构体
struct p(
string name, num;
}a[105];
成员有名字和电话,之所以要把电话设置成string,是因为方便遍历。
然后就是主函数:
显示输入一个n,然后输入name和num
int N;
cin >> N;
for(int i = 0; i < N; i ++) cin >> a[i].name >> a[i].num;
接着输入是否包含的字串,也要设置成string:
string n;
cin >> n;
最后就是循环判断了!
最外层遍历N(几个电话),中层遍历11位电话(题目中又说一定是11位哦~),最内层遍历字串,判断是否完全相同,如果满足,就输出并跳出这层循环。
bool f = 1;
for(int i = 0; i < N; i ++){
for(int j = 0; j < 11; j ++){
bool f2 = 1;
if(n.size() > 11) f2 = 0;
for(int k = 0; k < n.size(); k ++){
if(a[i].num[j + k] != n[k]){
f2 = 0;
}
}
if(f2){
cout << a[i].name << ' ' << a[i].num << endl;
f = 0;
break;
}
}
最后拼接一下可得完整代码:
#include <bits/stdc++.h>
using namespace std;
struct p{
string name, num;
}a[105];
int main(){
int N;
cin >> N;
for(int i = 0; i < N; i ++) cin >> a[i].name >> a[i].num;
string n;
cin >> n;
bool f = 1;
for(int i = 0; i < N; i ++){
for(int j = 0; j < 11; j ++){
bool f2 = 1;
if(n.size() > 11) f2 = 0;
for(int k = 0; k < n.size(); k ++){
if(a[i].num[j + k] != n[k]){
f2 = 0;
}
}
if(f2){
cout << a[i].name << ' ' << a[i].num << endl;
f = 0;
break;
}
}
}
if(f) cout << "None.";
return 0;
}
不是标准的百分百答案,不喜可喷,别喷得太过头了~。
这里空空如也
有帮助,赞一个