欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PTA(java,C++)查找电话号码

程序员文章站 2024-01-31 08:22:16
...

查找电话号码

题目描述:
文件phonebook1.txt中有若干联系人的姓名和电话号码。
高富帅 13312342222
白富美 13412343333
孙悟空 13512345555
唐三藏 13612346666
猪悟能 13712347777
沙悟净 13812348888
请你编写一个简单的通信录程序,当从键盘输入一个姓名时查找到对应的电话号码并输出。如果没找到则显示Not found. 由于目前的自动裁判系统暂时不能支持用户读入文件,我们编写程序从键盘输入文件中的姓名和电话号码,当输入的名字为noname时,表示结束。noname后面有一个名字,需要查找其对应的电话号码。

输入样例:
白富美 13412343333
孙悟空 13512345555
唐三藏 13612346666
猪悟能 13712347777
沙悟净 13812348888
noname
白骨精

输出样例:
Not found.

  • 解题思路:很明显,题目中姓名和电话号码一一对应,在C++中map容器可以很好地反映出键与键值一一对相应的关系。在java中容器中的映射接口Map可以反映出键与键值一一对相应的关系。其大致流程为:声明容器对象,将姓名和电话号码的关系添加到容器中,然后输入要查找的姓名,判断该键是否在容器中,如果在,输出对应的键值,如果不在输出Not found.

C++编程

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main() {
	map<string,string> m;
	string name;
	string phone;
	string flag("noname");
	cin>>name;
	while(name!=flag) {
		cin>>phone;
		m.insert(pair<string, string>(name,phone));
		cin>>name;
	}
	string seek_name;
	cin >>seek_name;
	map<string,string>::iterator p;
	p=m.find(seek_name);
	if(p!=m. end())
		cout<<p->second;
	else
		cout <<"Not found."<<endl;
	return 0;
}

java编程

package first;
import java.util.*;
public class first {
     public static void main(String args[]){
     	Map<String,String> hm=new HashMap<String,String>();
    	Scanner in=new Scanner(System.in);
    	while(in.hasNext()){//判断是否还有后续元素
    		String name=in.next();
    		if(name.equals("noname")){
    			break;
    		}
    		else{
    			String phone=in.next();
    			hm.put(name, phone);
    		}
    	}
    	String seek_name=in.next();//返回键(从键盘输入)
    	if(hm.containsKey(seek_name)){//判断是否包含指定的键
    		System.out.println(hm.get(seek_name));//输出键对应的值
    	}
    	else {
			System.out.println("Not found.");
		}
     }
}