C语言第十三篇:简单文字处理
来源:互联网 发布:8684公交软件下载 编辑:程序博客网 时间:2024/06/08 11:04
一、简单示例
代码
/**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;}
运行结果
1 0
- C语言第十三篇:简单文字处理
- C语言入门第十三篇,指针
- C语言第十三堂作业
- Perl语言的文字处理模式
- Perl语言的文字处理模式
- C++Builder文字处理控件TRichView
- 文字处理
- 文字处理
- 文字处理
- 文字处理
- C语言第十三回合:再谈指针
- 第十三周:C语言:学生成绩
- 正则表达式perl语言的文字处理模式
- 第三十六课——简单文字处理
- c++bulider 文字处理 + string char转换
- SM2算法第十三篇:SM2密钥协商协议的C语言实现
- 【C语言的学习】第十三回合:结构体大集合
- 第十三周 C语言实验——数组逆序
- MySQL insert性能优化
- iOS之富文本
- Linux下的定时任务crontab设置
- 从 0.99999... = 1 到芝诺悖论
- Oracle建立表空间和用户
- C语言第十三篇:简单文字处理
- php代码与表格元素的结合
- Java输入输出流(2)
- MySQL中实现分割字符串的方法
- android 解析、生成二维码
- Android WebView与JS的数据交互
- Brotli压缩算法
- PHP编码规范
- x264_param_t参数注解