算法练习

Posted ch42e

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法练习相关的知识,希望对你有一定的参考价值。

P020801

技术图片

tips:

  1. fgetc(fin):它读取一个打开的文件fin,读取每一个字符,然后返回一个int值,如果文件结束,fgetc返回一个特殊标记EOF

  2. getchar():从标准输入读取每一个字符,等价于fgetc(stdin)
  3. 在使用fgetc和getchar时,应该尽量避免写出和操作系统相关的程序
  4. fgetc(buf,maxn,fin):读取完整的一行放在字符数组buf中,且不会读取超过maxn-1个字符
  5. C语言不会禁止程序读写”非法内存“,例如声明的是char s[100],完全可以赋值s[10000]=‘a‘,但是后果自负
  6. 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:

  1. isalpha:判断字符是否为字母;类似的还有idigit、isprint等,再ctype.h中定义
  2. toupper/tolower:转换大小写

以上是关于算法练习的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的算法复杂度

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

有人可以解释啥是 SVN 平分算法吗?理论上和通过代码片段[重复]

片段(Java) | 机试题+算法思路+考点+代码解析 2023

csharp Epicor标准练习片段

golang 去练习片段