统计字符个数的C语言程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

统计字符个数的C语言程序
输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

[题解分析]:统计程序的典型结构:
初值归零: int n=0; // n的取名最好与被统计的对象相关。

输入数据。

计数: 循环事件{ if ( 相关对象出现) n++; }
输出。

//当存在多项统计时,注意输出序列不要混乱。

//注解:因为统计是针对输入的,所以输入可以放在循环事件内。

也可以先输入保存,然后再循环一次,进行统计。

#include "stdafx.h"
#include <stdio.h>
void main()
{
char c; int nEng=0, nSp=0, nDig=0, nElse=0;
printf("请输入一行字符:\n");
while ((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z') nEng++;
else if (c>='0'&&c<='9') nDig++;
else if (c==' ') nSp++;
else nElse++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n", nEng, nSp, nDig, nElse);
}
//注解:while ((c=getchar())!='\n') 的意思是:先输入c=getchar(),然后判别c!='\n'。

这是输入嵌入循环的典型句法,是C语言特有的句式。

其他语言适合于分开写(虽然那样比较罗嗦)。

分开写的句法可以这样:
while (1) // 1表示永远是真。

while (1) 是永真循环,即无限循环。

实际靠break; 退出。

{
c=getchar();
if (c=='\n') break;
else if(c>='a'&&c<='z'||c>='A'&&c<='Z') nEng++;
else if (c>='0'&&c<='9') nDig++;
else if (c==' ') nSp++;
else nElse++;
}
另一种写法,将第一个字符的输入放在循环外面://自己模仿一遍流程
c=getchar(); //输入第一个字符
while (c!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z') nEng++;
else if (c>='0'&&c<='9') nDig++;
else if (c==' ') nSp++;
else nElse++;
c=getchar(); //输入下一个字符
}
//注解:空格的判别也可以写成c==32。

// 32是空格的ASCII码。

同理,回车、字母等,也可以用ASCII码表示。

改错题:
请改正下列程序中的错误,使程序能输出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void main()
{
int nEng, nSp, nDig, nElse; char c;
printf("请输入一行字符\n");
scanf("%c",&c);
while ((c=getchar()!='\n'))
{
if(c>'a'&&c<'z'||c>'A'&&c<'Z') nEng++;
else if (c>=0&&c<=9) nDig++;
else if (c=' ') nSp++;
else nElse++;
}
printf("字母数=%d,数字数=%d,空格数=%d,其它字符个数=%d\n", nEng, nSp, nDig, nElse);
}
程序填空题:
请补充函数main(),它的功能是:分别统计出其中大写字母、小写字母、空格、数字和其他字符的个数。

请勿改动主函数main()中的任何内容,仅在函数的横线上填写所需的若干语句或表达式。

#include <stdio.h>
void main()
{
char c; int d=0, x=0, k=0, s=0, q=0;
prinrf("请输入一行字符:\n");
while((______________)!='\n')
{
if (_____________________) d++;
else if(________________________) x++;
else if(c>='0'&&c<='9') s++;
else if(c==32) ___________;
else q++;
}
printf("大写字母数=%d,小写字母数=%d,数字数=%d,空格数=%d,其它字符个数=%d\n", __________________________________);
}
程序填空题:
请补充函数main(),它的功能是:将C:\CT each目录下的tst1.txt复制为tst2.txt,同时统计该文件含有几个大写字母、几个小写字母、几个空格、几个其他字符。

请勿改动主函数main()中的任何内容,仅在函数的横线上填写所需的若干语句或表达式。

#include <stdio.h>
void main()
{
FILE * fg,*fh; char c; int upr=0, lwr=0, sp=0, other=0;
fg=fopen("C:\\CT each\\ tst1.txt ",______);
fh=fopen("C:\\CT each\\ tst2.txt ",______);
while(!feof(fg))
{ c=fgetc(fg); fputc(c,fh);
if(c>=’A’&&c<=’Z’) __________
else if(c>=’a’&&c<=’z’) __________
else if(______________) sp++;
else other ++;
} fclose(fg); fclose(fh);
printf(“大小写字母、空格和其他字符分别为%d、%d、%d、%d个”,upr, lwr, sp, other);
}
//注解:本题为统计文件中的字符数,用途显然比统计输入一行字符重要得多。

//注解:本题也可改为不复制,仅仅统计tst1.txt中的字符数。

或者改为复制的过程中,将所有大写字母改为小写。

考虑一下如何修改这个程序。

程序设计题:
编写函数fun,它的功能是:输入一行字符,分别统计出其中大写字母和小写字母的个数。

请勿改动主函数main()中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include<stdio.h>
void fun( )
{
}
void main()
{
fun( );
}。

相关文档
最新文档