练习1-8 编写一个统计空格、制表符与换行符个数的程序

来源:互联网 发布:foxit reader linux 编辑:程序博客网 时间:2024/06/08 23:53
/*时间:2017/8/2地点:工程北629功能:统计空格、制表符、行数思想:计算机输入的一般是:数字,字符,空白符,特殊符号  使用系统函数getchar*/#include<stdio.h>int main(){int blanks, tabs, newlines;  //行数用\n的个数统计,且注意特殊的情况(以EOF结束的情况)int c;int done = 0;    //设置标志位int lastchar = 0;blanks = 0;tabs = 0;newlines = 0;printf("请输入字符:\n");while(done == 0){c = getchar();if(c == ' ')++blanks;if(c == '\t')++tabs;if(c == '\n')++newlines;if(c == EOF){if(lastchar != '\n')  //特别注意:含有文件结束符的行也是一行。{++newlines;   }done = 1;  }lastchar = c;}printf("Blanks: %d\nTabs: %d\nLines: %d\n", blanks, tabs, newlines);return 0;}/*int main(void)//我的方法{int c;int ns, nt, ne;ns = 0;nt = 0;ne = 0;while((c = getchar()) != EOF){if(c == ' ')++ns;if(c == '\t')++nt;if(c == '\n')++ne;}printf("ns = %d  nt = %d  ne = %d\n",ns, nt, ne);    return 0;}*//*在Vc++6.0中的输出结果是:----------------------------请输入字符:nicosmos^ZBlanks: 0Tabs: 0Lines: 1Press any key to continue请输入字符:nicosmos nicosmos^ZBlanks: 1Tabs: 0Lines: 1Press any key to continue请输入字符:nicosmos        nicosmos^ZBlanks: 0Tabs: 1Lines: 1Press any key to continue请输入字符:nicosmos nicosmos  nicosmos     nicosmos12345678 nicosmos  nicosmosnicosmos^ZBlanks: 6Tabs: 1Lines: 3Press any key to continue请输入字符:nicosmos nicosmos  nicosmosnicosmos        nicosmosnicosmos nicosmos nicosmoms^Z//注意这种输入^ZBlanks: 5Tabs: 1Lines: 3Press any key to continue请输入字符://注意这里的输入是1个空格^ZBlanks: 1Tabs: 0Lines: 1Press any key to continue请输入字符://注意这里的输入是1个换行符^ZBlanks: 0Tabs: 0Lines: 1Press any key to continue请输入字符://注意这里的输入是1个制表符^ZBlanks: 0Tabs: 2Lines: 1Press any key to continue----------------------------总结:我的方法存在1.5.3节例题会出现的不严谨,统计行数的时候会出现小问题。     注意:应该按照常人的思维输入,输入遵守规则,一旦输入了文件结束符Ctrl+Z就不要再输入内容*/


阅读全文
0 0
原创粉丝点击