【C语言】练习1-21
2024-08-22 21:11:33
- 题目来源:《The C programming language》中的习题
- 练习1-21:编写程序entab,将空格串替换为最好数量的制表符和空格,但要保持单词之间的间隔不变。
思路:
对于制表符的作用我们已经在习题1-20中讲解了。
这里的题目是用最少的制表符和空格代替空格。这里也分为以下几种情况:
- 字符为空格时,判断当前空格的位置,如果当前位置对8取余不为零,则nb++;如果当前位置对8取余等于零,ntab++,pos++,并且要把nb变为0;
- 字符为换行时,把变量清空,即nb=0,ntab=0,pos=0
- 字符为普通字符时,首先根据ntab的值for循环输出\t;同样根据nb的值循环输出空格。然后判断当前字符若为\t,则位置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 = ;
ntab = ;
i = ;
j = ;
pos = ;
while((c=getchar()) != EOF){
if(c == ' '){
if(pos%ENTAB != ){
nb++;
}else{
ntab++;
nb = ;
}
pos++;
}else if(c == '\n'){
nb = ;
ntab = ;
i=;
j=;
pos = ;
putchar(c);
}else{
for(;i<ntab;i++){
putchar('\t');
}
for(;j<nb;j++){
putchar(' ');
}
if(c == '\t'){
pos += (ENTAB-pos%ENTAB)%ENTAB+;
}else{
pos++;
}
putchar(c);
nb = ;
ntab = ;
i = ;
j = ; }
}
}
最新文章
- 编写BinIoDemo.java的Java应用程序,程序完成的功能是:完成1.doc文件的复制,复制以后的文件的名称为自己的学号姓名.doc。
- yii框架中保存第三方登录信息
- PyDev+eclipse的编码问题
- 单例模式 GetInstance()
- 「JAVA」:Berkeley DB的JAVA连接
- BZOJ 1342: [Baltic2007]Sound静音问题( 单调队列 )
- Python的print中国输出对齐问题
- asp.net 获得客户端 mac 地址
- linux命令分块总结---多操作才是真理
- webservice第二篇【自定义webservice服务、soa、uddi概念、soap协议】
- Android基础知识02—安卓日志工具LogCat的五种方法
- 利用Form组件和ajax实现的注册
- CSS实现水平垂直同时居中的6种思路
- C语言程序设计--字符串与指针及数组与指针
- 如何用有NFC功能的手机微信给公交卡充值?入口在那里?
- Cisco ASA(8.4)端口映射设定(ASDM)
- sql server生成自动增长的字母数字字符串
- MapReduce (hive表SequenceFile的结果做输入)、MultipleOutputs和Reduce端迭代iterable的一些说明
- ios 开发之本地推送
- How many ways??---hdu2157(矩阵快速幂)
热门文章
- [Go] Returning Multiple Values from a Function in Go
- [Functional Programming] Running though a serial number prediction functions for tagging, pairing the result into object
- ASP入门(十七)-ASP #include
- Perl、PHP、Python、Java 和 Ruby 比较【转载+整理】
- ORACLE 执行计划
- Node.js 笔记(一) nodejs、npm、express安装
- Android 之 获取地理位置及监听
- flume-elasticsearch-sink indexName
- SSH协议
- oracle数据库,怎么给已有数据的表添加自增字段