精华内容
下载资源
问答
  • /* C程序设计语言 练习1-19: 编写程序detab,将输入中的制表符换成适当数据的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每个n列就会出现一个制表符终止位。n应该作为变量还是...
    /* C程序设计语言 练习1-19: 编写程序detab,将输入中的制表符换成适当数据的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每个n列就会出现一个制表符终止位。n应该作为变量还是符号常量呢? */
    #include <stdio.h>
    
    #define TABNUM 8
    
    void detab(char text[]);
    
    int main() {
        char text[1000];
    
        detab(text);
    
        printf("%s\n", text);
        return 0;
    }
    
    void detab(char text[]) {
        char c;
        int index = 0;  /* 字符串索引 */
        int pos = 1;    /* 制表符终止位后或当前行的第pos个字符 */
        int space_number;   /* 空格的数量 */
    
        while ((c = getchar()) != EOF) {
            if (c == '\t') {
                space_number = TABNUM - (pos - 1) % TABNUM;
                while (space_number > 0) {
                    text[index] = ' ';
                    ++index;
                    ++pos;
                    --space_number;
                }
            } else if (c == '\n') {
                text[index] = c;
                pos = 1;
                ++index;
            } else {
                text[index] = c;
                ++index;
                ++pos;
            }   
        }
    
    }

     

    展开全文
  • 什么是制表符终止位

    千次阅读 2018-03-08 15:41:26
    《C程序设计语言》这本书中的练习1-20中,提到了制表符终止位这个名词,初看真是一脸懵逼,各种百度之后,将自己的理解描述一下,希望和我有一样困惑的人从中有收获。 起初,我以为制表符就是代表其占据一定的空格...

        《C程序设计语言》这本书中的练习1-20中,提到了制表符终止位这个名词,初看真是一脸懵逼,各种百度之后,将自己的理解描述一下,希望和我有一样困惑的人从中有收获。

          起初,我以为制表符就是代表其占据一定的空格数(不同系统不同软件都可能不一样),但是真正作用是将每行按整数倍(需要系统或软件定义)的间隔进行分布。举个例子比较好:

    比如“制表符代表八个空格”,不是说代替八个空格。而其的作用是将光标移到最接近8的倍数的位置,使得后面的输出从此开始。换句话说,如果所有数据都紧跟在制表符后面输出,则这些数据只能从第9列、第17列、第25列......开始。


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

    展开全文
  • #include <stdio.h> #define TABINC 8 /* tab increment size */ /* replace tabs with the proper number of blanks */ int main() { int c, nb, pos; nb = 0; /* number of blanks necessary */ ...

    #include <stdio.h>
    #define TABINC 8 /* tab increment size */
    /* replace tabs with the proper number of blanks */
    int main()
    {
        int c, nb, pos;
        nb = 0; /* number of blanks necessary */
        pos = 1; /* position of character in line */
        printf("12345678123456781234567812345678\n");
        while ((c = getchar()) != EOF) {
            if (c == '\t') { /* tab character */
                nb = TABINC - (pos - 1) % TABINC;//需要的空格数量
                while (nb > 0) {
                    putchar(' ');
                    ++pos;
                    --nb;
                }
            }
            else if (c == '\n') { /* newline character */
                putchar(c);
                pos = 1;
            }
            else { /* all other characters */
                putchar(c);
                ++pos;
            }
        }
    }

    展开全文
  • 疑惑:主要是搞清楚制表符终止位是什么意思。 题意理解:制表符终止位可以看成是Excel单元格之间的竖线。这道题可以理解为:从键盘依次输入字符序列,往Excel单元格中填(自己想象),一个单元格的宽度为N(也就是可...

    《C语言程序设计》练习1-20 编写程序detab

    疑惑:主要是搞清楚制表符终止位是什么意思。
    题意理解:制表符终止位可以看成是Excel单元格之间的竖线。这道题可以理解为:从键盘依次输入字符序列,往Excel单元格中填(自己想象),一个单元格的宽度为N(也就是可容纳的字符个数),当在填充单元格时输入了制表符(也就是按下tab键时)就跳到下一个单元格的开头填,如果上一个单元格没有填满,则需要用空格将其填满;如果填满了单元格时都没有遇到制表符则自动跳到下一个单元格,从头开始填充。这里就是要求用空格来填充满单元格剩下的空间, 来达在填写Excel表格中到按下tab键时的效果。
    例如:
    假设单元格宽度为6,如果输入了 ‘abc’三个字符后,输入制表符(\t),那么就要用3个空格将其填满;
    如果输入了‘a’后输入制表符,则需要输入5个空格填满。
    一种特殊情况,如果在开头就输入制表符,则需要6个空格将其填满。

    所以关键是判断在当前单元格已输入了几个字符,用单元格宽度减去即可得到输入填充的空格数。
    代码如下:

    /* P25 练习1-20 ,编写程序detab:将输入的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。
    	制表符终止位可以看成是Excel每2个单元格之间的竖线。
    	这道题的可以理解为:从键盘输入字符,往Excel单元格中填,一个单元格宽度为N,当在填充单元格输入制表符(也就是按下tab键时)
    	就跳到下一个单元格开始填,如果填满了单元格都没有遇到制表符则自动跳到下一个单元格,开始填充。这里就是要求用空格来填充满单元格剩下的空间
    	来达到按下tab键时的效果。
    */
    
    #include <stdio.h>
    
    #define N 6		/* 每隔N列出现一个制表符终止位 */
    
    void space_replace_table(){
    	int c,cursor_pos,fill_num;
    	cursor_pos = 1;		/* 当前光标在单元格中处于第几列 */
    	fill_num = 0;		/* 要填充的空格数 */
    
    	while( (c=getchar()) != EOF){
    		if(c == '\t'){
    			if( cursor_pos > N)
    				cursor_pos %= N;			
    			fill_num = N - cursor_pos + 1;	/* 要填充的空格数 */
    			if( fill_num > N)
    			{
    				printf("Error: fill_num = %d more than N\n", fill_num);
    			}
    			while(fill_num > 0){
    				putchar(' ');
    				fill_num--;
    			}
    			putchar('|');		/* 在每一个单元格后面输出一条竖线 */
    			cursor_pos = 1;		/* 跳到下一个单元格开头 */
    		}else if(c == '\n'){
    			putchar('\n');
    			cursor_pos = 1;
    		}
    		else{
    			putchar(c);
    			cursor_pos++;
    			if( cursor_pos % N == 1)
    				putchar('|');
    		}
    	}
    }
    
    void main(){
    	space_replace_table();
    }
    

    效果如下:
    在这里插入图片描述

    展开全文
  • 源自《The C Programming Language》P25 pr1-20: 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设 制表符终止位的位置是固定的,比如每隔n列就会出现一个制表...
  • //编些程序detaba,将输入中的制表符替换为适当数目的空格,使空格充满到下一个制表符终止位的地方。 //假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位 #include #include #include ...
  • 源自《The C Programming Language》P25 pr1-20: 编写程序detab,将输入... 制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该是变量还是常量呢? 参考代码: main.c 1 #includ...
  • 练习 1-20 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。 代码块: #include &amp;amp;lt;stdio.h&amp;amp;gt; #include &amp;amp;lt;stdlib.h&...
  • 开始一点点测试,发现的制表符的特性,但是数学太差,没能总结出公式来! 上网查了一下原来有公式,才把这个程序搞定 #include <stdio.h> #define DETAB 8 //制表符默认长度 void main() { int c...
  • 1 #include <stdio.h> 2 #define TABINC 8 3 4 main() 5 { 6 int c, nb, pos; 7 nb = 0; 8 pos = 1; 9 while((c = getchar())!= EOF) 10 { 11 if(c =='\t') ...13 nb = TAB...
  • 制表符终止位,不太懂这个东西.google得知是空格代替制表符 1 #include <stdio.h> 2 #define TABINC 8 3 4 main() 5 { 6 int c, nb, nt, pos; 7 nb = 0; 8 nt = 0; 9 for(pos = 1; (c = ...
  • 这里有一个知识点:制表符终止位为8的整数倍。 依然在之前练习的基础上修改,将getline()函数改写为detab(),当有’\t’输入时进行字符替换。 测试结果与代码如下,有bug欢迎指正! 代码: #include <stdio.h>...
  •  假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该作为符号常量,等到学完向主程序传 递参数时,可设成变量。 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...
  •  假设制表符终止位的位置是固定的, 换句话说每隔n列就会出现一个制表符终止位. 2.描述  自己讲问题读了很多遍,没有懂什么意思.后来百度制表符,才明白其中意思  制表符:制表符(也叫制表位)的功能是在不使用...
  • 3 例如:指定下一个制表符终止位出想在输入长度100处, 4 则,当输入1+‘\t’,输出为1+99个‘*’。 5 1、获取输入内容 6 2、记录当前输入为第几个字符(每N个一循环进行计数) 7 3、当前输入为‘\t’ 8 ...
  • 思路:因为要保持字符之间的间隔不表,所以只有到达制表符终止位的空格串(星号串)才需要替换为’\t’ 测试结果与代码如下,有bug欢迎指正! 结果中的空格均为单个制表符,实现了将空格串替换为最少数量的制表符和...
  • 假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符 终止位 */ #include<stdio.h> #define stopbit 8 /* 制表符终止位 */ #define MAXLINE 1001 /* 允许的输入行的最大长度 */ int de...
  • r习题,将输入中的制表符替空格,使空格充满到下一个制表符终止位,假设每隔八列出现一个制表终止位:#include#define TABLEN 8void detab(int n);main(){int c;int pos=0;while((c = getchar()) != EOF ){pos=pos%...
  • 练习1-20:编写程序detab,将输入中的制表符替换成适当数目的空格,使得空格充满到下一个制表符终止位的地方,。假设制表符终止位的位置时固定的,比如每隔n列就会出现一个终止位。 这里要理解“制表符”和“制表...
  • 练习 1-20 编写程序 detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔 n 列就会出现一个制表符终止位。n 应该作为变量还是符号常量...
  • 练习1-20 编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位的位置是固定的,比如每隔n列就会出现一个制表符终止位。n应该是变量还是符号常量呢? ...
  • 编写程序detab

    2020-06-19 16:48:43
    编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方。假设制表符终止位是固定的,比如每间隔n列就会出现一个制表符终止位。n应该作为变量还是常量呢? 题意是说,我们每...
  • 题目就不写了,大概意思就是:尽量用制表符'\t'替换掉字符串中...举个例子,假设制表符终止位是4、8、12、16......已经已经输入了10个字符,然后按一下Tab键,那么光标会移动到位置12上,同学们新建一个文本文档试一...
  • 假设制表符终止位的位置与练习1-20 的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪一种替换字符比较好?题目分析 此习题要求将字符串中的空格键替换为最少的制表符和...
  • 练习1-21 编写程序entab,将空格串...当使用一个制表符或者一个空格都可以打到下一个制表符终止位时,选用哪一种替换字符比较好? 代码如下: #include <stdio.h> // 包含标准库的信息。 #define MAXL...
  • 练习1.20

    2013-06-21 14:33:06
    假设制表符的终止位是固定的, 比如每隔n列就会出现一个制表符终止位。n应该作为变量还是符号常量呢?   #include #define TABINC 8 int main(int argc, char *argv[]) { int c, nb, nt, pos; nb = 0;
  • 徐宝文,李志《c程序设计语言》翻译是“编写程序detab,将输入中的制表符替换成适当数目的空格,使空格充满到下一个制表符终止位的地方”。 制表符是将列分隔为固定的位宽(例如8),按下TAB键则光标跳到8的整数倍...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

制表符终止位