【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,所以在方 ...
随机推荐
- [PureScript] Basic Data Constructors in PureScript
PureScript types are very extensive and we are going to experiment with type constructors and how to ...
- 曾经的超级明星类库jQuery未来也许不再会被前端程序猿追捧了!
作为火了十多年的老牌明星类库jQuery, 相信做前端的小伙伴肯定都或多或少的使用和追捧过,当然我也不例外, 作为第一个学习的js类库,我曾经也觉得它是真正的唯一, 帮助你处理恶心的浏览器CSS/JS ...
- 关于 URL 编码及 JavaScript 编码函数【转载+整理】
原文地址:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 本文内容 引入 环境 测试 JavaScript 编码函数 引入 URL ...
- linux ifconfig -a
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/i686-pc ...
- iOS界面篇 - bounds和frame的相同和区别
相同点: 他们都是CGRect类型,且拥有属性origin(x, y), size(weight, height) 不同点: bounds是你画的视图的边界,和父视图没有半毛钱关系 frames则一 ...
- Excel常用快捷键大全
一.关于处理工作表的快捷键总结 1.插入新工作表 Shift+F11或Alt+Shift+F1 2.移动到工作簿中的下一张工作表 Ctrl+PageDown 3.移动到工作簿中的上一张工作表 Ctrl ...
- NUMA and vNUMA
NUMA and vNUMA posted by szamosattila on march 04, 2012Tutorial, Virtualization With the spread of S ...
- Nutch的安装和配置
Nutch是一个Java实现的网络爬虫.Nutch的安装可以使用二进制包,也可以使用源代码安装.这里介绍用二进制包安装. 1. 下载apache-nutch-1.12-bin.tar.gz,并且解压, ...
- mysql中间件研究(Atlas,cobar,TDDL)[转载]
mysql中间件研究(Atlas,cobar,TDDL) mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差. ...
- Android M 动态权限获取
新的权限获取方式除了要求像之前版本号一样在AndroidManifest文件里静态申请之外,应用还需依据须要请求权限,方式採用向用户显示一个请求权限的对话框. 这些被动态申请的权限能够在系统设置中被手 ...