算法练习
Posted ch42e
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习相关的知识,希望对你有一定的参考价值。
P020801
tips:
fgetc(fin):它读取一个打开的文件fin,读取每一个字符,然后返回一个int值,如果文件结束,fgetc返回一个特殊标记EOF
- getchar():从标准输入读取每一个字符,等价于fgetc(stdin)
- 在使用fgetc和getchar时,应该尽量避免写出和操作系统相关的程序
- fgetc(buf,maxn,fin):读取完整的一行放在字符数组buf中,且不会读取超过maxn-1个字符
- C语言不会禁止程序读写”非法内存“,例如声明的是char s[100],完全可以赋值s[10000]=‘a‘,但是后果自负
C语言中的gets(s)函数存在缓冲区溢出漏洞,在C11标准里面已经被删除
A020801
#include<stdio.h>
int main(){
int c, q = 1;
while((c = getchar()) != EOF){
if(c == '"'){
printf("%s",q?"``":"''");
q=!q;
}
else{
printf("%c",c);
}
}
return 0;
}
P020802
A020802
#include<stdio.h>
char s[]="`1234567890-=QWERTYUIOP[]ASDFGHJKL;'ZXCVBNM,./";
int main(){
int i,c;
while((c=getchar())!=EOF){
for(i=1;s[i] && s[i]!=c;i++);
if(s[i])
putchar(s[i-1]);
else
putchar(c);
}
return 0;
}
P020803
镜像字符串就,通俗来说,在纸上写一个A,然后再A的右边放一面镜子,在镜子里看到到依然是字符A,而像(3,E),(J,L)等的大概就是长得像吧。
比如3AIAE,3和E,A和A,I和I
A020803
#include<stdio.h>
#include<string.h>
#include<ctype.h>
const char* rev = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
const char* msg[] = {"not a palindrome","a regular palindrome","a mirrored str","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 -- is %s.
",s,msg[m*2+p]);
}
return 0;
}
tips:
- isalpha:判断字符是否为字母;类似的还有idigit、isprint等,再ctype.h中定义
- toupper/tolower:转换大小写
以上是关于算法练习的主要内容,如果未能解决你的问题,请参考以下文章
Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段
有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]