•  题目来源:《The C programming language》中的习题
  •  练习1-23: 写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套

  思路:

  注释语句分为两种://和/* */。在代码中,我们需要做的是,删除所有的注释语句。以下分两种情况来分析:

  1. 注释符号为//的时候,首先我们读取字符的时候,我们会按顺序读取,读取第一个字符/,我们需要把这个字符存入tmp中,如果接下来的字符仍然为/,说明这一行都是注释,需要直接跳过而不输出,直到遇到换行。其他情况的时候,则直接原样输出即可。
  2. 注释符号为/*开头的时候,首先,我们同样会按顺序先读取/字符,并存入tmp中,如果下一个字符为*,则说明开始进入了注释中,直到遇到*/结束,而不管是否为换行符。

  C语言代码实现:

#include<stdio.h>

void main(){
int c,former,comment;
former=-;
comment=;
while((c=getchar())!=EOF){ if(comment==){ // 注释符类型为//
if(c=='\n'){
putchar(c);
former=-;
comment=;
}
}else if(comment==){ // 注释符类型为/* */
if(c=='/' && former=='*'){
former=-;
comment=;
}else{
former=c;
}
}else{
if(c=='/'){
if(former=='/'){ //注释符为//的开始
comment=;
}
}else if(c=='*'){
if(former=='/'){ //注释符为/* */的开始
comment=;
}else{
putchar(c);
}
}else{
if(former=='/'){
putchar('/');
}
putchar(c);
}
former=c;
} }
}

【C语言】练习1-23的更多相关文章

  1. 扩展《C程序设计语言》练习2-3程序通用性

    最近开始自学C语言,在看K&R的<C程序设计语言>.练习2-3要求写一个函数,将输入的十六进制数字字符串转换成与之等价的整数值,配套答案没有扩展程序的通用性,所以我就稍微改造改造. ...

  2. Go语言实现的23种设计模式之结构型模式

    摘要:本文主要聚焦在结构型模式(Structural Pattern)上,其主要思想是将多个对象组装成较大的结构,并同时保持结构的灵活和高效,从程序的结构上解决模块之间的耦合问题. 本文分享自华为云社 ...

  3. 《C程序设计语言》 练习2-3

    问题描述 < class="title-article"> 练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的 ...

  4. Kotlin 语言下设计模式的不同实现

    偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ...

  5. C 语言经典100例

    C 语言经典100例 C 语言练习实例1 C 语言练习实例2 C 语言练习实例3 C 语言练习实例4 C 语言练习实例5 C 语言练习实例6 C 语言练习实例7 C 语言练习实例8 C 语言练习实例9 ...

  6. PHP是.NET上的一门开发语言

    .NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言   12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行.在本次大 ...

  7. iOS应用的语言设置

    首先需要明确两个名词的区别:“当前手机的系统语言”.“应用内部的语言设置” 要解决的问题的情景: 在iOS应用中,有时候会调用系统的一些UI控件,例如: 1.在UIWebView中长按会弹出系统的上下 ...

  8. C语言知识汇总,史上最全面总结,没有之一

    C语言基础 C语言学习路线 C语言入门笔记 初识C语言 简单的C程序示例 我们编写的C代码是怎样跑起来的? 简单示例,VS2019调试C语言程序 C语言基础-数据类型 深入理解变量,变量的声明,定义, ...

  9. Delphi 的知识体系

    第一部分   快速开发的基础 第1章   Delphi 5下的Windows编程    1 1.1   Delphi产品家族    1 1.2  Delphi是什么    3 1.2.1   可视化开 ...

  10. 【JAVA单例模式详解】

    设计模式是一种思想,适合于任何一门面向对象的语言.共有23种设计模式. 单例设计模式所解决的问题就是:保证类的对象在内存中唯一. 举例: A.B类都想要操作配置文件信息Config.java,所以在方 ...

随机推荐

  1. 迁移Windows下的MySQL时字符乱码问题

    我们常常会直接复制一份MySQL的Data文件夹到新的环境下,正常情况下重新启动MySQL就可以使用.但有时也会遇到些问题: 1.程序訪问时提示找不到表,实际表已经存在 这样的情况是因为数据库全部者可 ...

  2. mysql zerofill 的使用

    转自:http://www.jquerycn.cn/blog/mysql/ 那这个int[M]中M是什么意义喃,在定义数值型数据类型的时候,可以在关键字括号内指定整数值(如:int(M),M的最大值为 ...

  3. 使用Feign时报错Service id not legal hostname

    报错Service id not legal hostname的原因是服务名称不能带有下划线,可以使用中划线

  4. android中NavigationView(Design Support)的使用

    NavigationView可以实现美观的菜单功能展示,下面看一下怎么使用NavigationView 先是主Activity activity_main.xml: <?xml version= ...

  5. Jquery 中的CheckBox、 RadioButton、 DropDownList的取值赋值

    1.获取选中值,三种方法都可以: $('input:radio:checked').val(): $("input[type='radio']:checked").val(); $ ...

  6. Python取得系统进程列表

    一.上代码 import psutil for proc in psutil.process_iter(): try: pinfo = proc.as_dict(attrs=['pid', 'name ...

  7. 使用Gulp

    为什么要使用Gulp 在前端开发中通常须要做,预处理语言的编译.js文件的压缩.css文件的压缩.图片的压缩等一系列工作,而使用Gulp能够自己主动化的完毕这些工作,从而提高站点的开发效率,在我的博客 ...

  8. VB 中 copymemory的有关问题

    dim a() as long dim b() as bytecopymemory b(0),byval "1234",4 copymemory byval varptr(a(0) ...

  9. 你如何获取浏览器URL中查询字符串中的参数?

    测试地址为:http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23 实例如下: ...

  10. Spring MVC 中急速集成 Shiro 实践

    相信有很多的程序员,不愿意进行用户管理这块代码实现. 原因之一,不同的JavaEE 系统,用户管理都会有个性化的实现,逻辑很繁琐. 而且是系统门面,以后背锅的几率非常大,可谓是低收益高风险. 最近在系 ...