问题描述
- C语言入门问题求大神指点
- #include
#define TABINC 8 //tab increment size
//replace strings of blanks with tabs and blanks
int main(void)
{
int c nb nt pos;nb = 0; //number of blanksnt = 0; //number of tabsfor (pos = 1; (c = getchar()) != EOF; pos++){ if (c == ' ') { if (pos % TABINC != 0) nb++; else { nb = 0; nt++; } } else { for (; nt > 0; nt--) putchar(' '); if (c == ' ') nb = 0; else { for (; nb > 0; nb--) putchar(' '); } putchar(c); if (c == ' ') pos = 0; else if (c == ' ') pos = pos + (TABINC - (pos - 1) % TABINC) - 1; } } return 0;
}
这是一道课后习题的答案代码,我想问的是最后一句
pos = pos + (TABINC - (pos - 1) % TABINC) - 1;
这个为什么要减1,我想的答案是
pos = pos + (TABINC-pos%TABINC);
我代入了几个数字答案都是相同的,只是减1有什么作用我不懂。
麻烦各位大神提点一下,谢谢。
解决方案
哥们你的for循环输入一个字符怎么可能会等于EOF
解决方案二:
最后化简出来的式子应该相等吧
解决方案三:
pos = pos + (TABINC - (pos - 1) % TABINC) - 1;
这个为什么要减1,我想的答案是
pos = pos + (TABINC-pos%TABINC);
pos = 16 时
pos = pos + (TABINC - (pos - 1) % TABINC) - 1; 与
pos = pos + (TABINC-pos%TABINC);
相等吗?
希望对你有帮助.
解决方案四:
C语言程序设计入门
时间: 2024-08-31 21:08:00