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

    •  题目来源:《The C programming language》中的习题
    •  练习1-21:编写程序entab,将空格串替换为最好数量的制表符和空格,但要保持单词之间的间隔不变。

      思路: 

      对于制表符的作用我们已经在习题1-20中讲解了。

      这里的题目是用最少的制表符和空格代替空格。这里也分为以下几种情况:

    1. 字符为空格时,判断当前空格的位置,如果当前位置对8取余不为零,则nb++;如果当前位置对8取余等于零,ntab++,pos++,并且要把nb变为0;
    2. 字符为换行时,把变量清空,即nb=0,ntab=0,pos=0
    3. 字符为普通字符时,首先根据ntab的值for循环输出 ;同样根据nb的值循环输出空格。然后判断当前字符若为 ,则位置pos=pos+(ENTAB-pos%ENTAB)%ENTAB+1;否则令pos++。之后令nb为零。并输出当前字符。

      C语言代码实现:

    #include<stdio.h>
    
    #define ENTAB 8
    
    void main(){
        int c,nb,ntab,i,j,pos;
        nb = 0;
        ntab = 0;
        i = 0;
        j = 0;
        pos = 1;
        while((c=getchar()) != EOF){
            if(c == ' '){
                if(pos%ENTAB != 0){
                    nb++;
                }else{
                    ntab++;
                    nb = 0;
                }
                pos++;
            }else if(c == '
    '){
                nb = 0;
                ntab = 0;
                i=0;
                j=0;
                pos = 1;
                putchar(c);
            }else{
                for(;i<ntab;i++){
                    putchar('	');
                }
                for(;j<nb;j++){
                    putchar(' ');
                }
                if(c == '	'){
                    pos += (ENTAB-pos%ENTAB)%ENTAB+1;
                }else{
                    pos++;
                }
                putchar(c);
                nb = 0;
                ntab = 0;
                i = 0;
                j = 0;
                
            }
        }
    }
  • 相关阅读:
    windows系统下hosts文件的改写(为了测试nginx内网的证书代理,需要做域名解析)
    搭建jenkins
    Jsp传递参数的方法
    防止自己的网站被别人frame引用造成钓鱼
    Jsp连接Mysql数据库取数方法
    Win7下安装Mysql方法
    jsp建立错误页自动跳转
    jsp-forward跳转
    jvm栈和堆详解
    Gridpanel多种操作帮助文档
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3774539.html
Copyright © 2011-2022 走看看