zoukankan      html  css  js  c++  java
  • 【C语言】练习1-23

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

      思路:

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

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

      C语言代码实现:

    #include<stdio.h>
    
    void main(){
        int c,former,comment;
        former=-1;
        comment=0;
        while((c=getchar())!=EOF){
    
                if(comment==1){        // 注释符类型为//
                    if(c=='
    '){
                        putchar(c);
                        former=-1;
                        comment=0;
                    }
                }else if(comment==2){  // 注释符类型为/* */
                    if(c=='/' && former=='*'){ 
                        former=-1;
                        comment=0;
                    }else{
                        former=c;
                    }
                }else{
                    if(c=='/'){
                        if(former=='/'){      //注释符为//的开始
                            comment=1;    
                        }
                    }else if(c=='*'){
                        if(former=='/'){       //注释符为/* */的开始
                            comment=2;
                        }else{
                            putchar(c);
                        }
                    }else{
                        if(former=='/'){
                            putchar('/');
                        }
                        putchar(c);
                    }
                    former=c;
                }
        
        }
    }
  • 相关阅读:
    Framework not found Reveal
    iOS 数字每隔3位用逗号分隔
    iOS 常见内存泄漏--项目实遇
    iOS面试的一个逻辑题
    iOS 视频直播弹幕的实现
    好好写博客,不再划水喊口号
    【计你太美】一句代码实现微博兴趣页的自动跳转
    【Auto.js教程】Auto.js强制关闭软件函数
    【Auto.js教程】Auto.js入门及第一个示例程序
    mysql中的join
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3776037.html
Copyright © 2011-2022 走看看