第三十六讲项目 用循环处理文字(血型统计,消除空格等)

来源:互联网 发布:矩阵的秩怎么算 编辑:程序博客网 时间:2024/05/16 01:39

任务和代码:

【项目1:Mpsziy是嘛意思?】
小明让同学传纸条给小丽,纸条上写着Mpsziy。小丽接到会心一笑,大家却不知所云。
他们俩的花招瞒不过老师,给你一个程序,输入Mpsziy,输出的,就是小明的真实意思!
老师真坏!下面,该你运行程序了,明白这样的处理方式后,扩展完成后面的两项工作:

#include <stdio.h>  int main()  {      char ch;      while((ch=getchar())!='\n')      {          putchar(ch-4);      }      return 0;  }  

因为他们俩人的“加密”手段泄露,决定纸条由人传,加密数字(1-9)用两人约好的手势传。所以在解密前,需要将加密数字提前输入。例,输入4(回车)Mpsziy(回车),输出……

补全后的代码:

/**Copyright (c) 2016, CSDN学院*All rights reserved.*文件名:main.c*作者:DylanLiu*完成日期:2016/09/10*版本号:V1.0**问题描述:加密的文字。*程序输出:被加密的内容。*/#include <stdio.h>int main(){    char ch;    int n;    printf("Input n:");    scanf("%d", &n);    getchar();    printf("Input the characters:");    while((ch=getchar())!='\n')    {        putchar(ch-n);    }    return 0;}

输出结果:

任务和代码:

【项目2:转着圈加密】
为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。
加密办法,如图所示,每一个字母的密文是其后第4个字母,若超出了字母的范围,将A看作为Z的下一个字母,将a看作是z的下一个字线,依次顺延。

如″Wonderful!″转换为″Asrhivjyp!″。
输入一行字符,要求输出其相应的密码。

/**Copyright (c) 2016, CSDN学院*All rights reserved.*文件名:main.c*作者:DylanLiu*完成日期:2016/10/09*版本号:V1.0**问题描述:加密解密。*程序输出:加密后的密文。*/#include <stdio.h>int main( ){    char c;    while ((c=getchar( ))!='\n')    {        if((c>='a'&&c<='z')|| (c>='A'&&c<='Z'))        {            c=c+4;            if((c>'Z' && c<='Z'+6) || (c>'z'))                c=c-26;        }        putchar(c);    }    printf("\n");    return 0;}

相互出结果:

任务和代码:

【项目3:消除多余的空格】
从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。
例如,输入:I am a teacher.,输出I am a teacher.

/**Copyright (c) 2016, CSDN学院*All rights reserved.*文件名:main.c*作者:DylanLiu*完成日期:2016/10/09*版本号:V1.0**问题描述:消除多余的空格。*程序输出:消除空多余空格后的输出。*/#include <stdio.h>int main(){    char ch;    int frontIsSpace = 0;    printf("Input a string:");    while( ( ch=getchar() )!= '\n') {          if (ch!=' '){            frontIsSpace=0;            putchar(ch);          }          else if(frontIsSpace==0){            frontIsSpace = 1;            putchar(ch);          }    }    printf("\n");    return 0;}

输出结果:

任务和代码:

【项目4:血型统计】
黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。
输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)
输出:各种血型的数量
输入样例:ABCAOCOAOOBX
输出样例:A:3 B:2 O:4 AB:2

/**Copyright (c) 2016, CSDN学院*All rights reserved.*文件名:main.c*作者:DylanLiu*完成日期:2016/10/09*版本号:V1.0**问题描述:血型统计。*程序输出:各种血型的数量。*/#include <stdio.h>int main(){    char ch;    int a=0, b=0, c=0, o=0;    printf("Input :");    while ((ch=getchar()) != 'X'){        if (ch == 'A') a++;        if (ch == 'B') b++;        if (ch == 'C') c++;        if (ch == 'O') o++;    }    printf("A: %d\tB: %d\tAB: %d\tO: %d\n", a, b, c, o);    return 0;}

输出结果:

任务和代码:

【项目5:有多少符号】
输入一行文字,以回车结束,统计并输出其中数字、空格、字母出现的次数,以及输入的字符总数。

/**Copyright (c) 2016, CSDN学院*All rights reserved.*文件名:main.c*作者:DylanLiu*完成日期:2016/10/09*版本号:V1.0**问题描述:字符统计。*程序输出:字符个数。*/#include <stdio.h>int main(){    int cNum=0, dNum=0, aNum=0, bNum=0;    char ch;    printf("Input a string:");    while((ch=getchar()) != '\n'){        if (ch == ' ') bNum++;        if (ch>='0'&&ch<='9') dNum++;        if ((ch >='a' && ch<='z') || (ch>='A' && ch<='Z')) cNum++;        aNum++;    }    printf("数字:%d\t, 字母:%d\t, 空格:%d\t, 总数:%d\n", dNum, cNum, bNum, aNum);//总数中含有特殊字符个数    return 0;}

输出结果:

0 0
原创粉丝点击