项目1 转圈加密
为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。
加密办法,如图所示,每一个字母的密文是其后第4个字母,若超出了字母的范围,将A看作为Z的下一个字母,将a看作是z的下一个字线,依次顺延。
如″Wonderful!″转换为″Asrhivjyp!″。
输入一行字符,要求输出其相应的密码。
/**
*Copyright @2018,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2018年1月19日
*版 本 号:v1.0
*问题描述:每一个字母的密文是其后第4个字母,若超出
*了字母的范围,将A看作为Z的下一个字母,将a看作是z的
*下一个字线,依次顺延。
*/
#include <stdio.h>
int main()
{
char ch;
while((ch=getchar())!='\n')
{
if ((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
if (ch<'W'||(ch<'w'&&ch>='a'))
putchar(ch+4);
else
putchar(ch-22);
else
putchar(ch);
}
return 0;
}
运行结果
小结
if (ch<'W'||ch<'w')
忘了添加条件ch>='a'
导致输入字符在[W,W+4]
时出错。
项目2 消除多余的空格
从键盘上输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。例如,输入:I am a teacher.,输出I am a teacher.
/**
*Copyright @2018,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2018年1月19日
*版 本 号:v1.0
*问题描述:从键盘上输入一句话,直到按回车键为止,
*这些字符被原样输出,但若有连续的一个以上的空格时
*只输出一个空格。例如,输入:I am a teacher.,
*输出I am a teacher.
*/
#include <stdio.h>
int main()
{
int i=0;
char ch;
while((ch=getchar())!='\n')
{
if (ch!=' ') //字符不是空格则输出并将空格标记i置零
{
putchar(ch);
i=0;
}
else if ((ch=' ')&&(i==0)) //字符是空格且标志为零(前面没有空格)就输出并将标志置1
{
putchar(ch);
i=1;
} //字符是空格且标志为1(前面有空格)就不输出,继续循环
}
return 0;
}
运行结果
小结
刚开始写循环体没处着手,然后稿纸上分析一下:1.当前输入非空格,直接输出;2.当前输入空格,如果前一个字符非空格,则输出当前空格并标记已有一个空格,反之不输出继续循环。由于前一个字符在当前循环已被覆盖,需要用个变量记住它的空格状态。
代码else if ((ch=' ')&&(i==0))
可优化为else if (i==0)
。
项目3 血型统计
黑猫警长在犯罪现场发现了一些血迹,现已经委托检验机构确定了血型,需要统计各种血型的样本数目。
输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)
输出:各种血型的数量
输入样例:ABCAOCOAOOBX
输出样例:A:3 B:2 O:4 AB:2
/**
*Copyright @2018,CSDN学院
*All rights reserved.
*文件名称:main.c
*作 者:袁生
*完成日期:2018年1月19日
*版 本 号:v1.0
*问题描述:黑猫警长在犯罪现场发现了一些血迹,现已经委托检验
*机构确定了血型,需要统计各种血型的样本数目。
*输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)
*输出:各种血型的数量
*输入样例:ABCAOCOAOOBX
*输出样例:A:3 B:2 O:4 AB:2
*/
#include <stdio.h>
int main()
{
int a=0,b=0,o=0,c=0;
char ch;
while((ch=getchar())!='X')
{
switch (ch)
{
case 'A':
a++;
continue;
case 'B':
b++;
continue;
case 'O':
o++;
continue;
case 'C':
c++;
continue;
default:
printf("wrong type");
return 0;
}
}
printf("A:%d B:%d O:%d C:%d",a,b,o,c);
return 0;
}
运行结果
小结
switch后记得给括号,变量记得赋初值。