A1035 Password (20)(20 分)

To prepare for PAT, the judge sometimes has to generate random passwords for the users. The problem is that there are always some confusing passwords since it is hard to distinguish 1 (one) from l (L in lowercase), or 0 (zero) from O (o in uppercase). One solution is to replace 1 (one) by @, 0 (zero) by %, l by L, and O by o. Now it is your job to write a program to check the accounts generated by the judge, and to help the juge modify the confusing passwords.

Input Specification:

Each input file contains one test case. Each case contains a positive integer N (<= 1000), followed by N lines of accounts. Each account consists of a user name and a password, both are strings of no more than 10 characters with no space.

Output Specification:

For each test case, first print the number M of accounts that have been modified, then print in the following M lines the modified accounts info, that is, the user names and the corresponding modified passwords. The accounts must be printed in the same order as they are read in. If no account is modified, print in one line "There are N accounts and no account is modified" where N is the total number of accounts. However, if N is one, you must print "There is 1 account and no account is modified" instead.

Sample Input 1:

3
Team000002 Rlsp0dfa
Team000003 perfectpwd
Team000001 R1spOdfa

Sample Output 1:

2
Team000002 RLsp%dfa
Team000001 R@spodfa

Sample Input 2:

1
team110 abcdefg332

Sample Output 2:

There is 1 account and no account is modified

Sample Input 3:

2
team110 abcdefg222
team220 abcdefg333

Sample Output 3:

There are 2 accounts and no account is modified

思考

c++的引用很方便,传递参数,传递了操作对象本身,灵魂附体。

c语言没有引用,只能指针取地址。

AC代码

c语言

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
struct node {
char name[20], password[20];
bool ischange;
}T[1005];
/*在C语言中是不存在引用的,也就是说C语言中&表示的不是引用,仅仅是取地址符。所以错误提示就是告诉你&在这里用的不对,那怎么解决呢? 首先介绍一个正规的解决方法:用指针来取代引用,在主函数中传进来地址;*/
void crypt(struct node* t, int* cnt) {//c语言结构体必须加struct,typedef可解决此类问题
int len = strlen(t->password);
for(int i = 0; i < len; i++) {
if(t->password[i] == '1') {
t->password[i] = '@';
t->ischange = true;
} else if(t->password[i] == '0') {
t->password[i] = '%';
t->ischange = true;
} else if(t->password[i] == 'l') {
t->password[i] = 'L';
t->ischange = true;
} else if(t->password[i] == 'O') {
t->password[i] = 'o';
t->ischange = true;
}
}
if(t->ischange) {
(*cnt)++;//优先级很重要,先解指针,再自增1,遇到优先级没把握,加括号,都加上
}
} int main() {
int n, cnt = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%s %s", T[i].name, T[i].password);
T[i].ischange = false;//初始化为未修改
}
for(int i = 0; i < n; i++) {
crypt(&T[i], &cnt);
}
if(cnt == 0) {
if(n == 1) printf("There is %d account and no account is modified", n);
else {
printf("There are %d accounts and no account is modified", n);
}
}else {
printf("%d\n", cnt);
for(int i = 0; i < n; i++) {
if(T[i].ischange) {
printf("%s %s\n", T[i].name, T[i].password);
}
}
}
return 0;
}

c++

#include <cstdio>
#include <cstring>
struct node {
char name[20], password[20];
bool ischange;
}T[1005]; void crypt(node& t, int& cnt) {//引用,可以对传入参数进行修改
int len = strlen(t.password);
for(int i = 0; i < len; i++) {
if(t.password[i] == '1') {
t.password[i] = '@';
t.ischange = true;
} else if(t.password[i] == '0') {
t.password[i] = '%';
t.ischange = true;
} else if(t.password[i] == 'l') {
t.password[i] = 'L';
t.ischange = true;
} else if(t.password[i] == 'O') {
t.password[i] = 'o';
t.ischange = true;
}
}
if(t.ischange) {
cnt++;
}
} int main() {
int n, cnt = 0;
scanf("%d", &n);
for(int i = 0; i < n; i++) {
scanf("%s %s", T[i].name, T[i].password);
T[i].ischange = false;
}
for(int i = 0; i < n; i++) {
crypt(T[i], cnt);
}
if(cnt == 0) {
if(n == 1) printf("There is %d account and no account is modified", n);
else {
printf("There are %d accounts and no account is modified", n);
}
}else {
printf("%d\n", cnt);
for(int i = 0; i < n; i++) {
if(T[i].ischange) {
printf("%s %s\n", T[i].name, T[i].password);
}
}
}
return 0;
}

A1035 Password (20)(20 分)的更多相关文章

  1. 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  2. PAT 甲级 1035 Password (20 分)

    1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...

  3. pat 1035 Password(20 分)

    1035 Password(20 分) To prepare for PAT, the judge sometimes has to generate random passwords for the ...

  4. MVC4 学习笔记 之 URL中存在编译的空格 20%20%

    /Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10 ...

  5. 2016年11月29日 星期二 --出埃及记 Exodus 20:20

    2016年11月29日 星期二 --出埃及记 Exodus 20:20 Moses said to the people, "Do not be afraid. God has come t ...

  6. 安装nginx环境(含lua)时遇到报错ngx_http_lua_common.h:20:20: error: luajit.h: No such file or directory的解决

    下面是安装nginx+lua环境时使用的相关模块及版本,ngx_devel_kit和lua-nginx-module模块用的都是github上最新的模块.并进行了LuaJIT的安装. #Install ...

  7. PAT A1035 Password (20)

    AC代码 注意创造函数条件中使用引用 输出语句注意单复数 #include <cstdio> #include <cstring> #include <iostream& ...

  8. 1035 Password (20 分)(字符串)

    注意下单复数 #include<bits/stdc++.h> using namespace std; pair<string,string>pa; int main() { ...

  9. 做数据挖掘,就算发 20 几分的 CNS 子刊,也是垃圾!?--转载

    关于数据挖掘发表文章,我们知道很多人是看不上.瞧不起.嗤之以鼻的.大抵是因为这些人平时只发 CNS 主刊,所以才认为通过数据挖掘这种用「别人的数据」或者叫「干实验」来发文章是“「垃圾」,没有什么价值. ...

随机推荐

  1. 2009年3月新浪PHP面试题及答案(一)

    1. echo count(“abc”); 输出什么? 答案:1 2. 用PHP代码写出显示客户端IP与服务器IP的代码. 答案:客户端 getenv(‘REMOTE_ADDR’); 服务器端 get ...

  2. 关于docker下容器和宿主机器时间不一致问题

    在前几天,在阿里云的ECS上部署一个docker应用时,发现部署的应用在请求第三方应用时,一直出现超时的异常提示,刚开始以为是第三方应用系统的问题(此系统无赖躺枪,反正也不是一次两次了,多躺几次也就习 ...

  3. Javascript常见问题

    倒计时 <Script Language="JavaScript"> var timedate= new Date("October 1,2002" ...

  4. SQLServer 索引的使用情况

    —在优化查询SQL语句,查看索引使用情况SQL语句: select db_name(database_id) as N'数据库名称', object_name(a.object_id) as N'表名 ...

  5. vue resource patch方法的传递数据 form data 为 [object Object]

    今天在测试 iblog 登录时,传送过去的数据总是 [object Object],以至于后台识别不出来. vue 使用了 vueResource 组件,登录方法为 patch. 经过探索,终于在官网 ...

  6. 分享到qq空间等代码

    <!-- Baidu Button BEGIN --><div id="bdshare" class="bdshare_t bds_tools get- ...

  7. cf1042F. Leaf Sets(贪心)

    题意 题目链接 给出一棵树,删除一些边,使得任意联通块内的任意点距离不超过$k$ sol 考场上想的贪心是对的:考虑一棵子树,如果该子树内最深的两个节点的距离相加$>k$就删掉最深的那个点,向上 ...

  8. jQuery事件绑定函数:on()与bind()的差别

    jQuery从1.7+版本开始,提供了on()和off()进行事件处理函数的绑定和取消.on()和bind()这两个方法有相同的地方也有不同的地方. bind(type,[data],fn); on( ...

  9. zblog添加水印插件后出现Cannot use $this as parameter

    安装了水印插件后后台也进不去了,页面错误提示:Cannot use $this as parameter 删除水印插件文件后恢复正常,具体原因待研究 水印插件文件:/zb_users/plugin/W ...

  10. SpringBoot集成mybatis和mybatis generator

    利用搭建的基本的spring boot框架,集成 mybatis + generator 1.设置 maven 的相关配置: File  - setting - maven 设置 Maven home ...