简明现代魔法 -> C/C++ -> C 程序设计:字符统计

C 程序设计:字符统计

2010-02-16

问题:统计输入的字符数。

#include <stdio.h>

/* 统计输入的字符数 Version 1.0 */
main()
{
	long nc;
    
    nc = 0;
    while(getchar() != EOF)
    	++nc;
    printf("%ld\n", nc);
}

此字符统计程序使用 long 类型的变量存放计数值,为什么不使用 int 类型的变量呢?长整型 long 至少要占用 32 位存储单元。在某些机器上,int 类型的值可能只有 16 位存储单元的长度(即最大值为 32767),这样的话,相当小的输入都有可能使 int 类型的计数变量溢出。转换说明 %ld 则告诉 printf() 函数其对应的参数是 long 整型。

而使用 double 双精度浮点数则可以处理更大的数字。下面是使用 double 改写后的程序。

#include <stdio.h>

/* 统计输入的字符数 Version 2.0 */
main()
{
	double nc;
    
    for(nc = 0; getchar()!= EOF; ++nc)
    	;
    printf("%.0f\n", nc);
}

在这个程序中,for 循环的循环体是空的。这是因为程序的工作都在 ++nc 这条语句中完成了。但是 C 语言的语法规则要求 for 循环语句必须有一个循环体,因此用单独的分号代替。单独的分号称为空语句

为什么使用 ++nc 而不使用 nc++ 呢?这是因为,如果输入中不包含字符,那么第一次调用 getchar() 的时候,判断语句一开始就为假,程序的执行的结果为0,这是正确的结果。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们