PAT A1035

本文介绍了一个简单的C++程序,用于检测用户密码中特定字符并进行替换。如果密码包含1、0、l或O,则分别替换成@、%、L和o,并记录被修改过的账户。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <string.h>
struct node{
	char account[15],password[15];
};
node initial[1010],modified[1010];
int indexm=0,num;
bool ismodify(char str[]){
	int len=strlen(str);
	bool ans=false;   //replace 1 (one) by @, 0 (zero) by %, l by L, and O by o
	for(int i=0;i<len;i++){
		if(str[i]=='1'||str[i]=='0'||str[i]=='l'||str[i]=='O') ans=true;
		else continue;
		if(str[i]=='1') str[i]='@';
		else if(str[i]=='0') str[i]='%';
		else if(str[i]=='l') str[i]='L';
		else if(str[i]=='O') str[i]='o'; 
	}
	return ans;
}

int main(){
	scanf("%d",&num);
	for(int i=0;i<num;i++){
		scanf("%s%s",&initial[i].account,initial[i].password);
		if(ismodify(initial[i].password)) modified[indexm++]=initial[i];
	}
	if(indexm){
		printf("%d\n",indexm);
		for(int i=0;i<indexm;i++)
			printf("%s %s\n",modified[i].account,modified[i].password);
	}else{
		if(num==1) printf("There is 1 account and no account is modified");
		else printf("There are %d accounts and no account is modified",num);
	}
}

### 关于 PAT 1035 测试点解题思路 对于PAT 1035 “Password”,主要任务是对给定的密码字符串进行处理,替换容易混淆的字符以提高可读性和区分度。具体来说: - 将 `1` 替换为 `@` - 将 `0` 替换为 `%` - 将小写字母 `l` 替换为大写 `L` - 将大写字母 `O` 替换为小写 `o` #### 输入输出说明 输入的第一行为一个正整数N (≤ 10),表示待检测账户的数量。随后N行,每一行给出一个用户的账号及其对应的原始密码,两者之间由单个空格分隔[^1]。 为了实现上述功能,可以采用如下算法框架: ```python def password_check_and_modify(accounts): modified_passwords = [] replacements = { '1': '@', '0': '%', 'l': 'L', 'O': 'o' } for account in accounts: username, old_pwd = account.split() new_pwd_chars = [ replacements[char] if char in replacements else char for char in list(old_pwd) ] new_pwd = ''.join(new_pwd_chars) if new_pwd != old_pwd: modified_passwords.append((username, new_pwd)) result_count = len(modified_passwords) output_lines = [f"{result_count}"] + \ [f"{uname} {pwd}" for uname, pwd in modified_passwords] return "\n".join(output_lines) # 示例调用方式 accounts_input = ["Johndoe 12345678", "Alice lOl"] print(password_check_and_modify(accounts_input)) ``` 此代码片段定义了一个函数用于接收包含用户名和旧密码的列表作为参数,并返回修改后的结果字符串。如果没有任何密码被更改,则仅输出数字0;如果有任何密码发生了变化,则先输出变更数量,再逐行打印出更新后的用户名与新密码组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值