我是靠谱客的博主 结实板凳,最近开发中收集的这篇文章主要介绍18.3.21(NBUOJ)1057 字符变换1144 回文数字1054 相邻字符判相等1139 单词译码1187 数字提取1336 镜像文字1201 输出最短字符串1159 字母出现频率小结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1057 字符变换

  • 思路:既可以用strlen函数来获取字符串长度,也可以用来判断,但注意不要把strlen函数放在整个循环里面,这样每次都要计算一下就会多花时间。
  • 代码:
    gets(seq);
    for(int i=0;seq[i]!='';i++){
        if(seq[i]<='z'&&seq[i]>='a'){
            seq[i]+='A'-'a';
        }
        else if(seq[i]<='Z'&&seq[i]>='A'){
            seq[i]+=32;
        }
    }
puts(seq);

1144 回文数字

  • 思路:只需要判断一半就好,如果是奇数,最中间的不需要判断。
  • 代码:
    int len=strlen(seq);
    int flag=1;
    for(int i=0;i<len/2;i++){
        if(seq[i] != seq[len-i-1]){
            flag=0;
            break;
        }
    }
    if(flag) printf("Yesn");
else printf("Non");

1054 相邻字符判相等

  • 思路:直接用存储的字符就可以判断
  • 代码
    char ch=NULL;
    for(int i=1;seq[i]!='';i++){
        if(seq[i] == seq[i-1]){
            ch=seq[i];
            break;
        }
    }
    if(ch) printf("%cn",ch);
    else printf("Non");

1139 单词译码

思路:看到循环可以想到依旧利用取模(%),用判断也可以。

代码:

    for(int i=0;seq[i]!='';i++){
        if(seq[i] <='z'&& seq[i]>='a'){
            seq[i]='a'+(seq[i]-'a'+4)%26;
        }
        else if(seq[i]<='Z'&&seq[i]>='A'){
            seq[i]='A'+(seq[i]-'A'+4)%26;
        }
}

1187 数字提取

  • 思路:只要把数字输出就好了
  • 代码:
    for(int i=0;seq[i]!='';i++){
        if(seq[i] <='9'&& seq[i]>='0'){
            printf("%c",seq[i]);
        }
    }
    printf("n");

1336 镜像文字

  • 思路1:把数组开大点,后面一部分存储前部分的镜像,最后再加个’’。代码略
  • 思路2:直接输出就好
  • 代码:
    int i;
    for(i=0;seq[i]!='';i++){
        printf("%c",seq[i]);
    }
    for(i-=2;i>=0;i--){
        printf("%c",seq[i]);
    }
    printf("n");

1201 输出最短字符串

  • 思路:是第一个或者找到更短的存一下就好
  • 代码:
    for(i=0;i<5;i++){
        gets(curseq);
        if(i==0 || len>strlen(curseq)){
            len=strlen(curseq);
            strcpy(minseq,curseq);
        }
    }
    puts(minseq);

1159 字母出现频率

  • 代码:
    for(i=0;seq[i]!='';i++){
        if(seq[i]<='z'&&seq[i]>='a'){
            data[seq[i]-'a']++;
        }
        else if(seq[i]<='Z'&&seq[i]>='A'){
            data[seq[i]-'A']++;
        }
    }
    for(i=0;i<26;i++){
        if(data[i]){
            printf("'%c':%dn",i+'A',data[i]);
        }
    }


小结

  1.  看到一些小可爱不会用N,这里我再解释一下。你define了一个变量N,这个变量就定住了,不能变了,所以才可以用做数组大小。但是你定义过后既不能在输入的时候给它赋值,也不能改变它的值了。后面输入了字符串,字符串的长度不一定等于N,不能用N来代替。我经验中define一般是要在多次使用某个固定数据或者变量或者语句,并且这个语句比较长,你不想写那么多次的时候用。
  2. 一些小可爱不知道该如何判断一个字符串结束才好,我给出的参考代码里面你们可以看到,我用了两种方法,一种是include一个string.h头文件,用strlen函数求字符串长度。还有一种是结尾是’’的时候表示结束。如果不需要知道长度,我倾向于后者,简单快捷。
  3. 对于结尾为’’表示结束这一点我还要再提一下,有小可爱把一些字符存到另一个数组,最后直接一下子输出了(printf或者puts),但是计算机不会记录你刚刚往里面存了多少个字符,它只会找结束标志’’判断是不是该停止,如果你没有在结尾加上’’,那么大概率上函数会继续往下输出脏数据直到碰到’’。如果说你IDE上输出是正确的,那么你基本上只是幸运地碰到后面刚好是’’,或者由于一些IDE的某种特性(比如分配内存的数据初始化为’’, 多次使用后就不行了)导致你能看到正确结果。另外小心不要把''写为'n'了~



最后

以上就是结实板凳为你收集整理的18.3.21(NBUOJ)1057 字符变换1144 回文数字1054 相邻字符判相等1139 单词译码1187 数字提取1336 镜像文字1201 输出最短字符串1159 字母出现频率小结的全部内容,希望文章能够帮你解决18.3.21(NBUOJ)1057 字符变换1144 回文数字1054 相邻字符判相等1139 单词译码1187 数字提取1336 镜像文字1201 输出最短字符串1159 字母出现频率小结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部