【C语言】练习1-23
- 题目来源:《The C programming language》中的习题
- 练习1-23: 写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言中,注释不允许嵌套
思路:
注释语句分为两种://和/* */。在代码中,我们需要做的是,删除所有的注释语句。以下分两种情况来分析:
- 注释符号为//的时候,首先我们读取字符的时候,我们会按顺序读取,读取第一个字符/,我们需要把这个字符存入tmp中,如果接下来的字符仍然为/,说明这一行都是注释,需要直接跳过而不输出,直到遇到换行。其他情况的时候,则直接原样输出即可。
- 注释符号为/*开头的时候,首先,我们同样会按顺序先读取/字符,并存入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的更多相关文章
- 扩展《C程序设计语言》练习2-3程序通用性
		最近开始自学C语言,在看K&R的<C程序设计语言>.练习2-3要求写一个函数,将输入的十六进制数字字符串转换成与之等价的整数值,配套答案没有扩展程序的通用性,所以我就稍微改造改造. ... 
- Go语言实现的23种设计模式之结构型模式
		摘要:本文主要聚焦在结构型模式(Structural Pattern)上,其主要思想是将多个对象组装成较大的结构,并同时保持结构的灵活和高效,从程序的结构上解决模块之间的耦合问题. 本文分享自华为云社 ... 
- 《C程序设计语言》   练习2-3
		问题描述 < class="title-article"> 练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的 ... 
- Kotlin 语言下设计模式的不同实现
		偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ... 
- C 语言经典100例
		C 语言经典100例 C 语言练习实例1 C 语言练习实例2 C 语言练习实例3 C 语言练习实例4 C 语言练习实例5 C 语言练习实例6 C 语言练习实例7 C 语言练习实例8 C 语言练习实例9 ... 
- PHP是.NET上的一门开发语言
		.NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言 12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行.在本次大 ... 
- iOS应用的语言设置
		首先需要明确两个名词的区别:“当前手机的系统语言”.“应用内部的语言设置” 要解决的问题的情景: 在iOS应用中,有时候会调用系统的一些UI控件,例如: 1.在UIWebView中长按会弹出系统的上下 ... 
- C语言知识汇总,史上最全面总结,没有之一
		C语言基础 C语言学习路线 C语言入门笔记 初识C语言 简单的C程序示例 我们编写的C代码是怎样跑起来的? 简单示例,VS2019调试C语言程序 C语言基础-数据类型 深入理解变量,变量的声明,定义, ... 
- Delphi 的知识体系
		第一部分 快速开发的基础 第1章 Delphi 5下的Windows编程 1 1.1 Delphi产品家族 1 1.2 Delphi是什么 3 1.2.1 可视化开 ... 
- 【JAVA单例模式详解】
		设计模式是一种思想,适合于任何一门面向对象的语言.共有23种设计模式. 单例设计模式所解决的问题就是:保证类的对象在内存中唯一. 举例: A.B类都想要操作配置文件信息Config.java,所以在方 ... 
随机推荐
- 一个十年IT从业者的职场感言:为什么不要自称是“程序员”
			转载:https://blog.csdn.net/S_king_/article/details/78529089 如果我可以给每个工程教育增加一门课,它不会涉及编译器.门电路或是时间复杂度,而是一门 ... 
- centos6默认python2.6升级2.7 卸载python2.6升级2.7
			转自:http://blog.csdn.net/u010098331/article/details/52190354 本文介绍CentOS 6.3从自带的Pyhon版本是2.6升级到2.7.6的方法 ... 
- 高效率、简洁、CSS代码优化原则
			高效率.简洁.CSS代码优化原则 CSS学起来并不难,但在大型项目中,一个团队中不同的人在书写CSS风格上也有不同这样这个项目就变得难以管理,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CS ... 
- 1066: 单词游戏(game)
			var i,j,k,n,ans,p,len,chk,zh:longint; ch:char; s:string; a:array[..] of longint; begin readln(ch); c ... 
- python unittest case运行失败重试
			因为使用unittest进行管理case的运行.有时case因为偶然因素,会随机的失败.通过重试机制能够补充保持case的稳定性.查阅资料后发现,python的unittest自身无失败重试机制,可以 ... 
- cmder切换路径、设置命令别名
			alias alias hub= cd /d d:github/ cd $ help cd 显示当前目录名或改变当前目录. CHDIR [/D] [drive:][path] CHDIR [..] C ... 
- 算法笔记_230:运动员分组(Java)
			目录 1 问题描述 2 解决方案 1 问题描述 有N个人参加100米短跑比赛.跑道为8条.程序的任务是按照尽量使每组的人数相差最少的原则分组.例如:N=8时,分成1组即可.N=9时,分成2组:一组 ... 
- Java远程方法协议(JRMP)
			Java远程方法协议(英语:Java Remote Method Protocol,JRMP)是特定于Java技术的.用于查找和引用远程对象的协议.这是运行在Java远程方法调用(RMI)之下.TCP ... 
- 【DB2】监控临时表空间使用
			在我们使用数据库的时候,我们都知道应用程序在DB2上运行时,会产生临时表空间,我们想要监测这些临时表空间的使用情况,可以使用以下步骤: (1)打开monitor switches 中的table监视器 ... 
- 用python导出csv文件
			# coding: utf-8 import csv csvfile = open('csv.csv', 'wb') #打开方式还可以使用file对象 writer = csv.writer(csvf ... 
