首页 > 编程语言 >C程序设计语言(第2版·新版)练习题1-21

C程序设计语言(第2版·新版)练习题1-21

时间:2024-09-08 17:49:58浏览次数:16  
标签:练习题 21 int ++ char WIDTH TAB 程序设计 buf

练习1-21 编写函数entab,将空格串替换为最少数量的制表符和空格,但要保持单词之间的间隔不变。

#include <stdio.h>

#define TAB_WIDTH (8)

int replace_tail_space_with_tab(char *buf, int n)
{
    int i = n;
    
    if (n != TAB_WIDTH || buf[n - 1] != ' ') {
        return n;
    }
    while (--i >= 0) {
        if (buf[i] != ' ') {
            break;
        }
    }
    buf[++i] = '\t';
    return i + 1;
}
int main(int argc, char *argv[])
{
    (void)argc;
    (void)argv;

    int c;
    char buf[TAB_WIDTH];
    int i = 0;
    int n;

    while((c = getchar()) != EOF) {
        if (c == '\n' || c == '\t' || (i + 1) % TAB_WIDTH == 0) {
            buf[i++] = c;
            n = replace_tail_space_with_tab(buf, i);
            for (int j = 0; j < n; j++) {
                putchar(buf[j]);
            }
            i = 0;
        }
        else {
            buf[i++] = c;
        }

    }
    return 0;
}

运行结果:

标签:练习题,21,int,++,char,WIDTH,TAB,程序设计,buf
From: https://blog.csdn.net/VincentKCSDN/article/details/142030403

相关文章

  • 大二上 C++高级程序设计笔记(1) 栈和c++对c的补充 20240908
    Q1:什么是static类的储存变量?A1:在C++中,static关键字可以用于类成员变量和成员函数,以改变其作用域和生命周期。当static用于类的成员变量时,它具有以下特性:全局唯一性:静态成员变量不属于任何特定的对象实例,而是属于类本身。这意味着无论创建多少个类的对象,静态成员变量都只有......
  • C语言--选择结构、循环结构练习题
    1.考虑到多重循环对程序效率的影响,以下哪种实现效率较高?为什么?(a)循环次数大的放在外层,循环次数小的放在内层;(b)循环次数小的放在外层,循环次数大的放在内层;答:(b);因为循环次数小的放在外层,当cpu处理完内层循环后从缓冲区拿取外层循环数据的次数会减少,在cpu内处理数据的时间......
  • C语言练习题--一维、二维字符串数组
    1.下列对C语言字符数组的描述中错误的是(D) A.字符数组可以存放字符串B.字符数组中的字符串可以整体输入、输出C.不可以用关系运算符对字符数组中的字符串进行比较D.可以在赋值语句中通过赋值运算符"="对字符数组整体赋值分析:D只能逐个字符进行复制或者利用字......
  • LOJ4218 「IOI2024」尼罗河船运 题解
    题目描述有\(n\)件手工艺品,第\(i\)件重量为\(w_i\),有参数\(a_i\)和\(b_i\)。每艘船最多可以运输两件手工艺品:如果只运输第\(i\)件,重量没有要求,代价为\(a_i\)。如果同时运输第\(i\)和第\(j\)件,要求\(|w_i-w_j|\leD\),代价\(b_i+b_j\)。\(q\)次询问,给......
  • 31:Python面向对象的程序设计
    一、面向对象的程序设计什么是面向对象的程序设计及为什么要有它面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。优点是:复杂度的问题流程化,进而简单化(一个复杂的问题,分成一......
  • 中国农作物分布地图(2015-2021年)
    中国是世界人口最多的国家,在全球谷物生产方面排名第一。通过多样化作物种类的多熟制种植,可以显著增加农作物产量,并减少相关的环境影响。全球约12%的农田实行多熟制,其中34%的水稻地采用多熟制系统。中国用仅占全球7%的耕地养活了世界20%的人口。中国约三分之一的农田种植多熟作物,这......
  • 【2024潇湘夜雨】WIN11_PWK_21H2.22000.3147软件选装纯净特别版9.08
    【系统简介】=============================================================1.本次更新母盘来自WIN11_PWK_21H2.22000.3147(专业工作站版).2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为2......
  • 【优秀程序设计】【good-practice】聚合系统如何实现通道侧回调的业务结果通知?
    §.短信平台(聚合系统)的回调-业务说明我司短信平台聚合了朗宇、漫道、华信等多家短信服务商通道,并输出统一的接口能力供业务系统使用。本文以短信平台(sms)为例。来说一下各短信通道回调sms的代码实现。注:下文提到的”短信服务商“、”短信通道“、”通道“表示相同概念。  ......
  • 20240907_221939 公共基础 列表
    20240826_222457公共基础算法的概念_13127233的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1184633920240826_222637公共基础算法的特征_13127233的技术博客_51CTO博客https://blog.51cto.com/u_13137233/1184637520240826_222817公共基础算法设计基本方法_13......
  • Java 21的Preferences API的笔记
    JavaCoreLibrariesPreferencesAPI多用户环境下,应用程序保存配置参数的一种API,目前支持用户和系统两类配置。在现有的项目中,目前没有使用过本API。ComparingthePreferencesAPItoOtherMechanisms通常,应用的开发者还可以使用PropertiesAPI或者JNDIAPI。UsageNotes......