| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:帮忙看下这段小代码的一行是什么意思?谢谢了。
只看楼主 加入收藏
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
结帖率:69.23%
收藏
已结贴  问题点数:20 回复次数:3 
帮忙看下这段小代码的一行是什么意思?谢谢了。
题目要求是:
 请编写程序,将输入中的制表位替换成数目适当的空格,使空格充满到下一个制表位结束的地方
#include<stdio.h>
#define TABINC 8
int main()
{
   int c,nb,pos;
   nb=0;
   pos=1;
   while((c=getchar())!=EOF)
   {
       if(c=='\t')
       {
           nb=TABINC-(pos-1)%TABINC; ///-----这一行//
           while(nb>0){
                 putchar(' ');
                 ++pos;
                 --nb;
           }
       }else if(c=='\n'){
             putchar(c);
             pos=1;
       }else {
              putchar(c);
              ++pos;
       }
   }
   return 0;
}
这一段代码是《c程序设计语言》(第二版)第一章最后的练习里面的代码
解答:假设每隔TABINC个位置就会出现一个制表位,在这里定义为8
   变量pos是程序在文本行中的当前位置
  当遇到制表符,程序将计算出,到达下一个制表位需要的空格数,这一数值是
   nb=TABINC-(pos-1)%TABINC;
这是怎么计算的
2015-08-16 15:08
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:7 
nb=TABINC-(pos-1)%TABINC;这个就是计算下一个输出位置

一片落叶掉进了回忆的流年。
2015-08-16 19:51
实际应用
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:89
专家分:341
注 册:2015-5-30
收藏
得分:7 
假如现在输了5个字符,又按了tab,
上面的式子算出3
接下来输出3个空格
2015-08-16 20:23
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
"pos=1; " --- 这什么人嘛,竟然从1开始计数,故意给自己找麻烦
按照非脑残人类的做法,从0开始计数,公式就变为  nb = 8 - pos%8;
pos%8 就是当前位置超出tab位的距离,8-pos%8 就是到达下一个tab位的距离
2015-08-17 09:24
快速回复:帮忙看下这段小代码的一行是什么意思?谢谢了。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012711 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved