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

    •  题目来源:《The C programming language》中的习题
    •  练习1-20:编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止的地方。

      思路: 

      这里,我们首先要对制表符的概念和情况进行了解:制表符的作用是将光标移到最接近8的倍数的位置,使得后面的输出从此开始。换句话说,如果所有数据都紧跟在制表符后面输出,则这些数据只能从第9列、第17列、第25列......开始。

    • 如果已经到了第1、2、3、...8列,    则直接跳到第9列。
    • 如果已经到了第9、10、11、...16列, 则直接跳到第17列。
    • 如果已经到了第17、18、19、...24列,则直接跳到第25列。

       所以对于每一个位置的处使用制表符所需要填补的空格是不同的,计算公式如下

    nbs = (DETAB-pos%DETAB)%DETAB,其中pos为tab所处的位置。

      C语言代码实现:

    #include<stdio.h>
    
    #define DETAB 8
    
    //将制表符替换为适当的空格,并且空格填充到下一个制表符终止位
    void main(){
        int c,pos,i,nbs;
        pos = 1;
        nbs = 0;
        while((c=getchar())!=EOF){
            if(c == '	'){
                nbs = (DETAB-pos%DETAB)%DETAB+1;
                i = 0;
                for(;i<nbs;i++){
                    putchar(' ');
                }
                pos += nbs;
            }else if(c == '
    '){
                putchar(c);
                pos = 1;
                nbs = 0;
            }else{
                pos++;
                putchar(c);
            }
        }
    }
  • 相关阅读:
    C 实战练习题目45
    C 实战练习题目44
    C 实战练习题目43
    C 实战练习题目42 -auto定义变量
    C 实战练习题目41 -static定义静态变量
    如何0基础学习C/C++?
    2019-11-29-win10-uwp-关联文件
    2019-11-29-win10-UWP-Controls-by-function
    2019-11-29-WPF-高性能笔
    2019-11-29-WPF-使用-Win2d-渲染
  • 原文地址:https://www.cnblogs.com/ningvsban/p/3774519.html
Copyright © 2011-2022 走看看