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. matlab 打不开excel文件

    方法论 excel的后缀为.xls, matlab是无法识别的, 需要将其另存为.xlsx文件格式 打开excel, 点击save as, 选中保存的文件格式是.xlsx即可

  2. js中===、==、!=、!===的区别

    结论 ===:先比较两个变量的类型,然后再比较值 !==:上面的值取非 ==:如果变量类型相同,比较值是否相同:类型不同,先转成相同类型,再比较值 !=:上面的值取非 代码 var num = 1; ...

  3. ServiceStack.Redis 使用

    Redis官网提供了很多开源的C#客户端.例如,Nhiredis ,ServiceStack.Redis ,StackExchange.Redis等.其中ServiceStack.Redis应该算是比 ...

  4. Soft skill

    不要害怕让别人看到自己的无知 作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们: 这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你. 当我还是一个初级 ...

  5. CPU保护模式DPL、CPL简易理解

    现代INTEL CPU都有保护模式,实模式这两种CPU运行模式.当CPU加电,CPU初始化时就运行在是模式下,然后现代操作系统会从实模式跳转到保护模式! 为什么需要保护模式? 在最开始编程的汇编时代, ...

  6. C# 只运行一个实例 ShowWindowAsync 窗体隐藏时失效 解决方案

    如果窗体已经隐藏,那么利用instance.MainWindowHandle得到的句柄为空,继而ShowWindowAsync 操作失败 不过我们可以使用FindWindow来查找到指定窗体的句柄 只 ...

  7. C#实现正则表达式

    如果想了解正则表达式的基础知识:http://www.cnblogs.com/alvin-niu/p/6430758.html 一.C#中的Regex类 1.在C#中开发正则表达式,首先要引用Syst ...

  8. shell脚本常识

    --------------------------------------------------------------- --------------            概要      -- ...

  9. webpack最简单的入门教程里bundle.js之运行单步调试的原理解析

    读这篇文章的朋友,请确保对webpack有最基础的认识. 您可以阅读我前一篇文章:Webpack 10分钟入门 来在本地运行一个Webpack的hello world项目.https://www.to ...

  10. IOS 进程描述

    ● 什么是进程 ● 进程是指在系统中正在运行的一个应用程序 ● 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 ● 通过“活动监视器”可以查看Mac系统中所开启的进程