码迷,mamicode.com
首页 > 编程语言 > 详细

【C语言】练习1-20

时间:2014-06-08 00:46:57      阅读:268      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

  •  题目来源:《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列。

bubuko.com,布布扣

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

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

  C语言代码实现:

bubuko.com,布布扣
#include<stdio.h>

#define DETAB 8

//将制表符替换为适当的空格,并且空格填充到下一个制表符终止位
void main(){
    int c,pos,i,nbs;
    pos = 1;
    nbs = 0;
    while((c=getchar())!=EOF){
        if(c == \t){
            nbs = (DETAB-pos%DETAB)%DETAB+1;
            i = 0;
            for(;i<nbs;i++){
                putchar( );
            }
            pos += nbs;
        }else if(c == \n){
            putchar(c);
            pos = 1;
            nbs = 0;
        }else{
            pos++;
            putchar(c);
        }
    }
}
bubuko.com,布布扣

【C语言】练习1-20,布布扣,bubuko.com

【C语言】练习1-20

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/ningvsban/p/3774519.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!