PAT A1035

为了准备 PAT,评判系统有时必须对用户生成随机密码。问题是经常有一些困惑的密码很难去辨别 数字 1 还是 小写字母 L,或者 数字 0 还是 大写字母O,一个解决方案就是 把 数字 1 换成 @,数字 0 换成 %,小写 l 换成大写 L,大写 O 换成小写 o,现在你的工作就是去写一个程序检查系统产生的账户,然后帮助系统修改令人困惑的密码

输入格式:

每个输入文件包含一个测试用例。每个用例包含一个正整数 N(<=1000),然后紧接着 N 行账户数据。每个账户由用户名和密码组成,这两个字符串都是不超过10个字符并且没有空格

输出格式:

对于每一个测试用例,第一输出 被修改账户的数字 M,然后紧接着打印出M行 修改后的账户信息,那就是用户名必须和被修改的密码相关联。账户必须以输入的顺序打印出来。如果没有账户被修改,第一行打印 “There are N accounts and no account is modified” N 就是账户的总个数。然而,如果 N 是1,你必须打印 “There is 1 account and no account is modified”。

代码:
 

#include <cstdio>
#include <cstring>
// 定义改变字符函数
void change(char* c){
	if(*c == '1')
		*c = '@';
	else if(*c == '0')
		*c = '%';
	else if(*c == 'l')
		*c = 'L';
	else if(*c == 'O')
		*c = 'o';
}
int main(){
	int n;
	scanf("%d", &n);
	char user[1010][15];
	char pwd[1010][15];
	// 输入用户名和密码
	for(int i = 0; i < n; i++){
		scanf("%s %s", user[i], pwd[i]);				
	}
	// count计数,被修改的数
	int count = 0;
	int flag[1010] = {0};
	for(int i = 0; i < n; i++){
		int len = strlen(pwd[i]);
		for(int j = 0; j < len; j++){
			if((pwd[i][j] == '1') || (pwd[i][j] == '0') || (pwd[i][j] == 'l') || (pwd[i][j] == 'O')){
				char* p = &pwd[i][j];
				change(p);
				flag[i] = 1;
			}
		}
		if(flag[i] == 1)
			count++;
	}
    // 没有注意 are 应该是 is ,还有 accounts的单数形式,从而一个测试点没有通过
	if(count == 0 && n == 1){
		printf("There are 1 accounts and no account is modified");
	}else if(count == 0){
		printf("There are %d accounts and no account is modified", n);
	}else {
		printf("%d\n", count);
		for(int i = 0; i < n; i++){
			if(flag[i] == 1){
				printf("%s %s\n", user[i], pwd[i]);
			}
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值