UVa272
基本的输出输出判断。。。
找到输入的双引号 改为其他符号,查找然后判断 增加一个判断是下引号还是上引号,输出即可!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int c ,q = 1;
while((c = getchar()) != EOF){
if(c == '"'){
printf("%s",q ? "``" : "''");
q = !q;
}
else{
printf("%c",c);
}
}
return 0;
}
UVa10082
基本字符数组的 查找 下标使用
紫皮书中47页代码,字符数组中多了一个/ 。我去掉了一个ac,带着它仍然ac,不知道是什么地方出了问题,大概是测试数据不足吧。
大意:输出一行字符。找到字符在键盘上左边的字符,输出。。。
#include<bits/stdc++.h>
using namespace std;
char s[] ={"`1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"};
int main()
{
int i,c;
while((c = getchar())!=EOF){
for(i = 1;s[i]&&s[i]!=c;i++);//找到该字符,i为该字符下标。
if(s[i]) putchar(s[i-1]);
else putchar(c);
}
return 0;
}
UVa401
大意:给你一个字符串,判断是否是回文串或是镜像串,
回文:正反读一样
镜像:题目中给了样例 如图
写一个字符串保存所有有镜像字符
紫皮书中写了一个很巧妙的方法 确实厉害
#include<bits/stdc++.h>
using namespace std;
const char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char* msg[] = {"-- is not a palindrome.","-- is a regular palindrome.",
"-- is a mirrored string.","-- is a mirrored palindrome."};
char r(char ch)
{
if(isalpha(ch)) return rev[ch-'A'];
return rev[ch-'0'+25];
}
int main()
{
char s[30];
while(scanf("%s",s) == 1){
int len = strlen(s);
int p = 1, m = 1;
for(int i = 0;i < (len+1)/2; i++){
if(s[i] != s[len-1-i]) p = 0;//不是回文
if(r(s[i]) != s[len-1-i]) m =0;//不是镜像
}
printf("%s %s\n\n",s,msg[m*2+p]);
/*msg l = m*2+p 巧妙的组合
m = 1 p = 1:l = 3 镜像且回文
m = 0 p = 0:l = 0 不镜像也不回文
m = 1 p = 0:l = 2 镜像
m = 0 p = 1:l = 1 回文
恰好与字符数组msg对应 真厉害!*/
}
return 0;
}
先写这三个吧,还有其他的事情~
继续奋斗,我想要拿个奖,(^▽^)~~~~