A1035 Password (20)(20 分)
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 分)的更多相关文章
- 1035 Password (20 分)
1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...
- PAT 甲级 1035 Password (20 分)
1035 Password (20 分) To prepare for PAT, the judge sometimes has to generate random passwords for th ...
- pat 1035 Password(20 分)
1035 Password(20 分) To prepare for PAT, the judge sometimes has to generate random passwords for the ...
- MVC4 学习笔记 之 URL中存在编译的空格 20%20%
/Config/Edit/QQCC%20%20%20%20%20%20%20 原因是: 通过EF直接添加了空格? NO 是因为你的数据库字段设计问题,因为你当然设计如>:sID nchar(10 ...
- 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 ...
- 安装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 ...
- PAT A1035 Password (20)
AC代码 注意创造函数条件中使用引用 输出语句注意单复数 #include <cstdio> #include <cstring> #include <iostream& ...
- 1035 Password (20 分)(字符串)
注意下单复数 #include<bits/stdc++.h> using namespace std; pair<string,string>pa; int main() { ...
- 做数据挖掘,就算发 20 几分的 CNS 子刊,也是垃圾!?--转载
关于数据挖掘发表文章,我们知道很多人是看不上.瞧不起.嗤之以鼻的.大抵是因为这些人平时只发 CNS 主刊,所以才认为通过数据挖掘这种用「别人的数据」或者叫「干实验」来发文章是“「垃圾」,没有什么价值. ...
随机推荐
- C 碎片一 计算机知识
一.计算机知识 1, 计算机组成及工作原理 计算机是硬件和软件的结合体.硬件由主机箱和外部设备组成,主机主要包括CPU.内存.主板.硬盘.光驱.各种扩展卡.连接线.电源等:外部设备包括鼠标.键盘等.软 ...
- 如何从MYSQL官方YUM仓库安装MYSQL5.x 原理一样只要获取对的仓库依赖安装对的仓库依赖就ok了,我就是用这种安装的5.7
如何从MYSQL官方YUM仓库安装MYSQL5.6 2013年10月,MySQL开发团队正式宣布支持Yum仓库,这就意味着我们现在可以从这个Yum库中获得最新和最优版的MySQL安装包.本文将在一台全 ...
- Python接入支付宝进行PC端支付
1. 支付宝开放平台登录,使用支付宝账号登录 https://open.alipay.com/platform/home.htm 2.选择沙箱模式 [支付宝提供了测试环境] https://docs ...
- C/C++ sort函数的用法
sort函数的用法(#include<algorithm>) 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比 ...
- 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强
本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...
- 常用的CSS属性列表汇总
常用的CSS属性列表汇总 近期教学给学员总结常用的CSS属性,方便学习查询,正好发上来也给大家分享一下. 表格最右列的数字标识支持的CSS最低版本. 01. CSS背景属性(Background) 属 ...
- 【转】【C++】【MFC】各种数据类型大小
*原文地址:http://blog.csdn.net/xuexiacm/article/details/8122267 /*运行结果分析: 以上结果已经很明白了,一下补充说明几点: 概念.整型:表示整 ...
- PHP线程安全和非线程安全有什么区别
我们先来看一段PHP官网的原话: Which version do I choose? IIS If you are using PHP as FastCGI with IIS you should ...
- Python核心编程——多线程threading和队列
线程与进程类似不过他们是在同一个进程下执行的,并共享相同的上下文.可以将他们认为是在一个主进程或“主线程”中运行的迷你进程. 线程包括开始.执行顺序和结束三部分.它有一个指令指针,用于记录当前运行的上 ...
- 【洛谷1120】小木棍(一道有技巧的dfs)
点此看题面 大致题意: 给你\(N\)根小木棍,请你把它们拼成若干根长度相同的木棍,问你最小可能长度. 枚举+\(dfs\) 显然的,木棍的长度肯定是\(\sum_{i=1}^n len[i]\)的一 ...