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. flask --db-Column属性

    db.Column 中其余的参数指定属性的配置选项. 选项名 说 明 primary_key 如果设为 True,这列就是表的主键 unique 如果设为 True,这列不允许出现重复的值 index ...

  2. Linux下安装软件遇见的问题汇总

    1.安装monodevelop 安装环境Linux Mint17.1 在软件在中心直接安装monodevelop,安装完成后直接启动界面“一闪而过”,解决办法: 软件中心安装 mono-complet ...

  3. Teradata 认证系列 - 1. TCPP这是个啥

    一看历史,好几年没发帖...正好最近在自学teradata认证(学也不一定学的完,最后也不一定去考,仅仅安慰一下不想碌碌无为的内心) 网上一搜,百度上的中文相关资料简直为0.这个不奇怪,毕竟都没什么人 ...

  4. HttpURLConnection(http 1.1) 用法、状态码、状态描述

    最近研究了java的HttpURLConnection的用法, 这里简单的做一下记录: Java中可以使用HttpURLConnection来请求WEB资源. 1. URL请求的类别 分为二类,GET ...

  5. 云中(云厂商)抗DDoS究竟哪家强?

    随着云计算的兴起,大量资源触手可得,这让DDoS攻击的成本断崖般下降,而人们对于互联网服务的可靠性要求又在不断加强,这就使得DDoS攻击所造成的破坏力与日俱增.面对日趋严重的网络安全形势,企业传统的见 ...

  6. EF ObjectQuery查询及方法

      string esql = "select value c from NorthwindEntities.Customers as c order by c.CustomerID lim ...

  7. 美国绿卡基础知识:I-539和I-129表格的应用回复新帖

    美国绿卡基础知识:I-539和I-129表格的应用 发布于: 2011/07/25  8:43 am 引用     I-539,就是和万金油类似的表格.不管你是要延期,还是转换身份:不管你是 B-2 ...

  8. java核心技术 要点笔记2

    第4章   对象和类 1.面向对象 类:构造对象的模板,创建类的实例:由类构造对象的过程,封装,继承: 对象:对象的特性——对象的行为,对象的状态,对象的标识: 类之间的关系: 依赖(“user-a” ...

  9. POJ 1065 Wooden Sticks(LIS,最少链划分)

    题意:求二维偏序的最少链划分. 用到Dilworth定理:最少链划分=最长反链.(对偶也成立,个人认为区别只是一个维度上的两个方向,写了个简单的证明 相关概念:偏序集,链,反链等等概念可以参考这里:h ...

  10. Spark的基本概念及工作原理

    Spark作业的基本概念 -Application:用户自定义的Spark程序,用户提交后,Spark为App分配资源将程序转换并执行. -Driver Program:运行Application的m ...