C语言第十三篇:简单文字处理
2016-04-12 11:28
381 查看
一、简单示例
代码
/* *Copyright (c)2016,刘兵马俑 *All rights reserved. *文件名称:main.c *作 者:刘兵马俑 *完成日期:2016/04/12 *版 本 号:v1.0 *问题描述:键盘缓冲区、处理一连串字符、统计(特殊)字符数量、for和while *程序输出: */ #include<stdio.h> #include<math.h> int main() { char c; int count=0,i=0,n=0;//用于计数的变量应该指定初值 //用while语句实现 while((c=getchar())!='\n') { putchar(c); putchar('\n'); count++; } printf("\n%d\n",count); //用for语句实现 for(i=0;(c=getchar())!='\n';++i) { putchar(c); putchar('\n'); } printf("\n%d\n",i); //统计数字字符数量 while((c=getchar())!='\n') { if(c>='0'&&c<='9') ++n; } printf("\n%d\n",n); return 0; }
运行结果
二、M$pszi$y是嘛意思?
题目与要求:
小明让同学传纸条给小丽,纸条上写着M$pszi$y。小丽接到会心一笑,大家却不知所云。他们俩的花招瞒不过老师,给你一个程序,输入M$pszi$y,输出的,就是小明的真实意思!老师真坏!下面,该你运行程序了,明白这样的处理方式后,扩展完成后面的两项工作:因为他们俩人的“加密”手段泄露,决定纸条由人传,加密数字(1-9)用两人约好的手势传。所以在解密前,需要将加密数字提前输入。例,输入4(回车)M$pszi$y(回车),输出……
代码
/* *Copyright (c)2016,刘兵马俑 *All rights reserved. *文件名称:main.c *作 者:刘兵马俑 *完成日期:2016/04/12 *版 本 号:v1.0 *问题描述:键盘缓冲区、处理一连串字符、统计(特殊)字符数量、for和while *程序输出: */ #include<stdio.h> #include<math.h> int main() { int N; char ch; printf("请输入密钥和密文:\n"); scanf("%d",&N); while((ch=getchar())!='\n') { putchar(ch-N); } return 0; }
运行结果
--------------------------------------------我是昏割线(2016.04.16更新)-----------------------------------------------
找工作累如狗呀,不过现在已经找到了一份自己真心喜欢的工作,FPGA硬件开发,真心好棒,给自己点一百个赞。今天晚上回到家里坐下来静静地编会儿程序。
三、转着圈加密
题目与要求:为使电文保密,往往按一定规律将电文转换成密码,收报人再按约定的规律将其译回原文。加密办法,如图所示,每一个字母的密文是其后第4个字母,若超出了字母的范围,将A看作为Z的下一个字母,将a看作是z的下一个字线,依次顺延。输入一行字符,要求输出其相应的密码。代码(自己写的)
/* *Copyright (c)2016,刘兵马俑 *All rights reserved. *文件名称:main.c *作 者:刘兵马俑 *完成日期:2016/04/16 *版 本 号:v1.0 *问题描述:键盘缓冲区、处理一连串字符、统计(特殊)字符数量、for和while *程序输出: */ #include<stdio.h> #include<math.h> #define N 4 //步长 int main() { int iChar; char ch; while((ch=getchar())!='\n') { //读入的字符含有大写字母时 if(ch>='A'&&ch<='Z') { iChar=ch+N; if(iChar<='Z') putchar(iChar); else switch(iChar-'Z') { case 1: putchar('A');break; case 2: putchar('B');break; case 3: putchar('C');break; case 4: putchar('D');break; default:; } } //读入的字符含有小写字母时 else if(ch>='a'&&ch<='z') { iChar=ch+N; if(iChar<='z') putchar(iChar); else switch(iChar-'z') { case 1: putchar('a');break; case 2: putchar('b');break; case 3: putchar('c');break; case 4: putchar('d');break; default:; } } //读入的字符为非字母时,按原样输出 else putchar(ch); } printf("\n"); return 0; }
运行结果
----------------------------------------------------不要看我哦(2016.04.17更新)--------------------------------------------------------
一大早上起来就开始写代码,啊哈哈哈哈哈,要不要这么正能量!
下面是参考贺利坚老师的代码,非常简练
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'+4) || (c>'z'))
c=c-26;
}
putchar(c);
}
printf("\n");
return 0;
}
四、清楚多余的空格
题目与要求:从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。例如,输入:I am a teacher.,输出I am a teacher.代码
/**Copyright (c)2016,刘兵马俑
*All rights reserved.
*文件名称:main.c
*作 者:刘兵马俑
*完成日期:2016/04/16
*版 本 号:v1.0
*问题描述:消除多余的空格
*程序输出:
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char c, frontIsSpace=0; //frontIsSpace用于记忆前面的符号是否为空格,是空格,值为1,不为空格,为0
while ((c=getchar())!='\n')
{
if (c!=' ')
{
frontIsSpace=0; //在读入下一个字符后,当前的字符,就是下一次所谓前一个,其值不是空格,故赋值为0
putchar(c) ;
}
else if (frontIsSpace==0) //如果前一个不是空格,当前的这个空格是要输出的
{
putchar(c); //输出的是空格
frontIsSpace=1; //在读入下一个字符后,就需要知道,当前的字符,也就是下一次所谓前一个,其值是空格,故赋值为1
}
}
putchar('\n');
return 0;
}
运行结果
五、血型统计
题目与要求:
输入:血型序列(A/B/O/C,C代表AB型血,输入以X结束)输出:各种血型的数量
输入样例:ABCAOCOAOOBX
输出样例:A:3 B:2 O:4 AB:2
代码
/**Copyright (c)2016,刘兵马俑
*All rights reserved.
*文件名称:main.c
*作 者:刘兵马俑
*完成日期:2016/04/17
*版 本 号:v1.0
*问题描述:血型统计
*程序输出:
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
char ch;
int count_A=0,count_B=0,count_O=0,count_AB=0;
while((ch=getchar())!='\n')
{
if(ch=='A')
++count_A;
else if(ch=='B')
++count_B;
else if(ch=='O')
++count_O;
else if(ch=='C')
++count_AB;
else ;//do nothing!
}
printf("A=%d B=%d O=%d AB=%d",count_A,count_B,count_O,count_AB);
return 0;
}
运行结果
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 新注册
- Flex程序开发心得小结
- 四大漏洞入侵博客
- Lua和C语言的交互详解
- C#获取网页源代码的方法
- LCL.VBS 病毒源代码
- 在Ubuntu系统上安装Ghost博客平台的教程
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法