《c程序设计语言》练习1-12
c程序设计语言练习1-12:编写一个程序,以每行一个单词的形式打印其输入。
此处单词是指除空格,TAB键,换行字符和文件结束符号(EOF)之外的其他字符。
我的代码如下:
而《the c answer book》中的代码如下:
1. #include 《stdio.h> 2. 3. #define IN 1 4. #define OUT 0 5. 6. /* print input one word perl line*/ 7. main() 8. { 9. int c,state; 10. 11. state = OUT; 12. while((c = getchar()) !=EOF){ 13. if(c == ' '||c == '\n' || c == '\t'){ 14. if(state == IN){ 15. putchar('\n'); 16. state = OUT; 17. } 18. } else if (state == OUT){ 19. state = IN; 20. putchar(c); 21. }else 22. putchar(c); 23. } 24. }
这个程序能够解决这个习题,但是整个程序看起来却有点冗余(毕竟这本书是1988年出版的)。因为最后的两种情况完全可以合并。
所以另一个网站 给出的答案如下:
1. #include <stdio.h> 2. int main(void) 3. { 4. int c; 5. int inspace; 6. 7. inspace = 0; 8. while((c = getchar()) != EOF) 9. { 10. if(c == ' ' || c == '\t' || c == '\n') 11. { 12. if(inspace == 0) 13. { 14. inspace = 1; 15. putchar('\n'); 16. } 17. /* else, don't print anything */ 18. } 19. else 20. { 21. inspace = 0; 22. putchar(c); 23. } 24. } 25. return 0; 26. }
这样看起来好一些,但是还显得不够简练,不过c程序设计语言中给出的程序(课本1.5.4单词计数的程序,跟这个程序以及习题1-9其实都是同一类问题)简练。这个程序虽然表面上看起来很简单,但是以我的笨脑子,最先想到的是找个字符数组来存储每个单词并将之输出。后来仔细想了想,直接用putchar就可以了。这个算法根据前一个字符和当前字符的值(每个值都可能是空白字符或者单词字符)分成四种情况。而根据其值的特殊性有些情况下是不需要做任何操作,所以可以合并成两种情况就可以了,这样看起来逻辑也更清晰一些。
我写的代码如下:
1. #include <stdio.h> 2. 3. #define TRUE 1 4. #define FALSE 0 5. 6. int main() 7. { 8. int c; /* a character variable */ 9. int b; /* a bool variable whose value is TRUE or FALSE 10. which indicates current character is in a word or out of a word*/ 11. 12. b = FALSE; 13. while( (c = getchar()) != EOF) 14. if( c != ' ' && c != '\t' && c != '\n') 15. { 16. putchar(c); 17. b = TRUE; 18. } 19. else if(b == TRUE) 20. { 21. printf("\n"); 22. b = FALSE; 23. } 24. return 0; 25. }
《c程序设计语言》练习1-12相关推荐
- C程序设计语言现代方法12:指针和数组
目录 1. 指针的算术运算 1.1 概述 1.2 C语言支持的算术运算类型 2. 指针的比较 3. 指针用于数组处理 4. 数组名与指针 4.1 用数组名作指针 4.2 数组取下标操作 4.3 惯用法 ...
- 安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级二级考试真题C语言2012年12月...
安徽省计算机等级二级考试真题C语言2012年12月 2012年下半年全国高等学校(安徽考区) 计算机水平考试试卷 (二级 C语言程序设计) 一.单项选择题(每题1分,共40分) 1.微型机的中央处理器 ...
- 安徽省2012年下半年计算机水平考试(二级 c语言程序设计),安徽省计算机等级级考试真题C语言2012年12月.doc...
安徽省计算机等级级考试真题C语言2012年12月,安徽省c语言二级考试,安徽省公务员考试真题,安徽省遴选考试真题,计算机等级二级c语言,c语言二级考试真题,江苏省计算机等级真题,安徽省二级c语言,计算 ...
- 201803考试批次2C 程序设计语言,201803考试批次2可视化程序设计(VB)D卷
201803考试批次2可视化程序设计(VB)D卷 2018-12-15 903 201803考试批次2可视化程序设计(VB)D卷 可视化程序设计(VB) 一 .单项选择题 (共 10 题.0 / 20 ...
- 中国计算机学会CCF推荐国际学术会议和期刊目录-软件工程/系统软件/程序设计语言
软件工程/系统软件/程序设计语言 中国计算机学会推荐国际学术期刊 (软件工程/系统软件/程序设计语言) 一.A类 序号 刊物简称 刊物全称 出版社 网址 1 TOPLAS ACM Transacti ...
- c#程序设计语言杜松江版_当前最流行的10款编程语言,你会哪种?
现在市场上对计算机方面的人才需求量非常大,不过真正需要的是那些有技术的高端人才. 下面就是当前流行的编程语言,来看看都用了那些吧! (PS:排名仅代表作者观点,如有不同观点,请务必坚持自我哦~~~). ...
- 程序设计语言python语言概述
程序设计语言 什么是程序设计语言 程序设计语言是人类与计算机交流和沟通的语言.人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的. 程序语言的发展历史 程序语言经历了从低级语言到高 ...
- [渝粤教育] 西南科技大学 程序设计语言VB 在线考试复习资料(1)
程序设计语言VB--在线考试复习资料 一.单选题 1.列表项选择后得到的选中索引是指(). A.Value B.ListValue C.Index D.ListIndex 2.为了隐藏一个窗体,所使用 ...
- 《C程序设计语言》-第2章-习题
本人写的代码可能与标准答案有出入,但运行是没问题的,欢迎大家相互参考学习. <C程序设计语言习题>2-1: 编写一个程序以确定分别由signed及unsigned限定的char.short ...
- 浅谈计算机程序设计语言,探讨计算机程序设计语言教学
[文章摘要] 随着社会不断的发展与进步,计算机作为现代先进产物的代表,已经很快的进入到社会中的各行各业.而程序设计作为计算机的核心内容,也同样引起了大家的重视,同时计算机程序设计也是高校开设的一门重要 ...
最新文章
- jquery实现倒计时
- 语言坐标度分秒的换算_测量位置度说明
- php查真实地址,php教程:检查URL地址是否真实存在
- sentinel 时间窗口_Sentinel 实战-规则持久化
- 01-复杂度1 最大子列和问题(剑指offer和PAT)
- java 获得平台编码_关于Java平台的编码
- 计算机中十类指令寻址方式总结
- github java 性能,JavaGuide/手把手教你定位常见Java性能问题.md at master · Github-Programer/JavaGuide · GitHub...
- 2019年全国大学生电子设计竞赛赛题分享与浅析
- npm start 和 npm run start的关系以及npm run start传递参数
- carsim/trucksim获取轮胎侧偏刚度、纵向刚度
- webpack入门使用教程
- Andromeda 源码解析 (同步获取服务)
- 青龙-闪电世界(脚本更新)
- html ace编辑器,Springboot 集成 Ace editor前端编辑器
- ajax前端分页实现
- 怎样在tableau里做渐变柱状图
- 投资转型:实体店铺,投资经营复盘
- SCORM标准的LMS
- 2016级算法期末上机-I.难题·ModricWang's Fight with DDLs III
热门文章
- awk教程入门与实例练习(一)
- POJ1163 数字三角形
- 计数排序vs基数排序vs桶排序
- 【window】git安装教程
- 正则表达式知识详解(转自晴天碧日)
- android点滴27:R文件无法加载 R cannot be resolved to a v...
- asp.net网页中导出EXCEL,WORD的环境设置验证实例
- Spring tx:advice/
- 优化mysql数据库_MySQL数据库十大优化技巧
- Java中nextfloat怎么用,关于java的nextFloat()后面跟一个nextLine()