c语言-C语言入门问题求大神指点

问题描述

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

c语言-C语言入门问题求大神指点的相关文章

acm的c语言扫雷编程题目,求大神指点

问题描述 acm的c语言扫雷编程题目,求大神指点 解决方案 这是输出的部分,待会附上我的代码 解决方案二: 你是要找人代写,还是说代码需要debug? 解决方案三: 这是哪个acm平台呀,这个算法应该就是算临域,完后计数加加的吧 解决方案四: 问题出在最后和标准差个空格 #include #include #include int main(){ int c,b,i,j; int x=1; char a[1000][1000]; while(scanf("%d%d",&c,&a

c语言-C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0

问题描述 C++代码改成C语言代码,没学过C++好多看不懂啊(泪奔······)求大神指点,我用的VC6.0 代码如下, #include "winsock2.h" #include "Winsnmp.h" #include 这里是string以下都要用 < 和 > 括起来(不知为何不显示=,=) #include vector #include algorithm #include iostream #pragma comment(lib,"

c语言-C语言的一个程序,求大神

问题描述 C语言的一个程序,求大神 三.实验内容 1.实验题目:手动输入10个0~100之内的整数,按从小到大排列输出.: (1)要求 排序算法: 使数组从小到大排序的规则如下: ⑴ 设数组为a[0],a[1],-,a[n-1],构造i循环从0,1,-,n-2变化,构造j循环从i+1,i+2,-,n-1变化,即j>i. ⑵ 对于任何一个a[i],如果a[i]>a[j],表面前面有一个元素a[i]比它后面的元素a[j]大,a[i]应该在后面,a[j]应该在前面,交换a[i]与a[j]. ⑶ 对于

基础-请问一个C语言奇怪的问题,求大神

问题描述 请问一个C语言奇怪的问题,求大神 //加了所有需要的头文件intmain(int argc char **argv){ struct event timeout; struct timeval tv; struct event_base *base; int flags; //printf(""pathvar=%s""getenv(""PATH"")); 注释1#ifdef WIN32 WORD wVersionRe

fanbao-c语言里面的问题,求大神解决

问题描述 c语言里面的问题,求大神解决 请问一下,如果用c编写了一个闹钟,那么怎么在电脑上运行这个程序时出现的是一个时钟的样子? 解决方案 用MFC或者WIN32来做 解决方案二: 可以去学习下VC的界面编程

strcpy-c语言比较细致的问题.求大神帮我解答.

问题描述 c语言比较细致的问题.求大神帮我解答. #include#includeint main(){ int sum=0; char array[20][200]={""""}; int m=0n; float k=0; int k1=0i; scanf(""%d""&n); for(i=0;i { scanf(""%d""&sum); scanf("&qu

C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点

问题描述 C语言,寻找二维数组鞍点,代码个人测试正确, 但是wrong answer, 求大神指点 Description 给定一个海拔平面图,相当于一个二维数组,数组的每个元素表示一个点的海拔高度.请判断该图中是否存在鞍点,如果存在,则输出该鞍点的位置,即行.列坐标. 本题规定鞍点的定义为:该点的值在它所在的那行中是唯一最大的,且该点的值在它所在的那列中是唯一最小的. Input 输入有多个测试用例,如果把每个测试用例看作一个"块",那么,在一个"块"中: 第一行

不懂c语言基础的问题,求大神解答。

问题描述 不懂c语言基础的问题,求大神解答. for(j=0;j<=9;j++){ scanf(""%d""&i); a[j]=i;} 这样写为什么不行? 原代码:#includeint main(){ int a[10]ijz; printf(""请输入十个数值:""); for(j=0;j<=9;j++) scanf(""%d""&i); a[j]=i;

c语言-关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点

问题描述 关于C语言链表的一些问题,代码怎么都运行不成功跪求大神指点 下面代码主要实现链表的创建,插入,删除,并且能将两个年龄递增链表进行合并成递减链表 然而在插入和删除操作中gets函数无法起作用,strcmp函数也出现位置冲突报错..功力不足实在解决不了..跪求大神解答..(感觉自己写的东西除了上面两个错误应该还有,但是因为位置冲突问题就只能编译到那个地方无法进行下去..我肉眼实在找不出来.. #include<stdio.h> #include<stdlib.h> #incl