【PAT】B1033/B1038/B1029

/*
*时间:2018年4月7日15:31:27-2018年4月7日16:15:54
*题号:1033. 旧键盘打字
*语言:C++ (g++ 4.7.2)
*分数:20
*题目描述:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字
、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:

输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字
是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、
“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。
输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst

*/

#include 
using namespace std;
#include 
#include 
int main()
{	
	char hash[128];
	char str[100010];
	gets(hash);
	gets(str);
	int lenhash = strlen(hash);
	int lenstr = strlen(str);
	bool HashTable[128] = {false};    //记录坏键
	for (int i=0; i='A' && str[i] <= 'Z') continue;
		if (str[i] == '+') continue;
		bool trans = false;//标记是否进行了大小写转换
		if (str[i] >='a' && str[i] <= 'z') {trans = true; str[i] -= 32;}//小写转换成大写,并标记进行了大小写转换
		if (HashTable[str[i]] != true)
		{
			str[i] = trans? str[i]+32: str[i];//如果小写转换成了大写,那么变回小写再输出
			printf("%c", str[i]);
		}			
	}
	printf("\n");
	return 0;
}


/*
*这题开始用string的cin读进来,好像不能读空行,所以第三个点好像一直错误
*后来换成了gets来读,结果第三个点可以了,但是最后一个点出问题了,运行超时,看来gets的效率不行呀
*于是把cout都改成了printf还没有搞定,不知道还有哪儿可以简化的
*CSDN上一个建议把strlen的返回值改成int类型,果然改了之后最后一个点就通过了,以后记得最好长度的单独写出来用int 类型
*/




/*
*时间:2018年4月7日20:22:40-2018年4月7日20:33:44
*题号:1038. 统计同成绩学生
*语言:C++ (g++ 4.7.2)
*分数:20
*题目描述:

本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入格式:

输入在第1行给出不超过105的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,
中间以空格分隔。最后1行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。

输出格式:

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。
输入样例:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出样例:

3 2 0
*/

#include 
using namespace std;

int main()
{
	int N, K;       //分数及查询的个数		
	int renshu[101] = {0}; //每种分数的人数,注意:最高分100分,数组下表要到101才行
	cin>>N;
	int score[N];
	for (int i=0; i>score[i];
		renshu[score[i]]++;
	}		
	cin>>K;
	int chaxun[K]; 
	for (int i=0; i>chaxun[i];

	for (int i=0; i

/*
*时间:2018年4月7日12:44:35-2018年4月7日13:37:03
*题号:1029. 旧键盘
*语言:C++ (g++ 4.7.2)
*分数:20
*题目描述:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、
以及实际被输入的文字,请你列出肯定坏掉的那些键。

输入格式:

输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字
母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。

输出格式:

按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有
1个坏键。
输入样例:

7_This_is_a_test
_hs_s_a_es

输出样例:

7TI
*/

#include 
using namespace std;
#include 
#define Debug false
#include 

int main()
{	
	string str1, str2;
	cin>>str1>>str2;
	bool HashTable[128] = {false}; //坏键,包含了所有的ASCII码,true表示损坏,虽然这里只有数字字母和下划线
	
	for (int i=0; i= 'a' && str1[i] <= 'z') str1[i] -= 32;  //小写转换成大写
			if (str2[j] >= 'a' && str2[j] <= 'z') str2[j] -= 32;  //小写转换成大写
			if (str1[i] == str2[j]) break;						  //将str1[i]与str2中的所以元素对比,发现有相同就break
		}
		if (Debug) cout<<"str1[i]: \n"<

你可能感兴趣的:(PAT,编程)