程序设计上机(c语言)含源代码、结果截图、解题思路以及功能块描述!!完整版!!
原创!!!!!!!!转载说明出处!!!!!!
编写一个小程序,可以读入一个英文的文本文件,显示这个文件,并统计这个文件有多少个字符,多少个单词,多少个空白(空格、TAB),多少个段落,按照单词的长度进行统计。
注意:要先自己再桌面创建一个txt文本文件,往里添加英文文本保存,查询该文本文件路径,用于之后访问该文件时使用!
下面展示一些 内联代码片
。
#include <stdio.h>
#include <stdlib.h>
void main()
{
FILE *fp;
char ch,address[100];
int i,a,b,c,n;
i=a=b=c=n=0;
printf("文件名:");
scanf("%s",address);
fp=fopen(address,"r");
if(fp==NULL)
{
printf("can not open the file\n");
exit(0);
}
ch=fgetc(fp);
while (ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
rewind(fp);
ch=fgetc(fp);
while (ch!=EOF)
{
i++; //i统计字符数量
if(ch==' ') //a统计空格数量
a++;
ch=fgetc(fp);
}rewind(fp);
ch=fgetc(fp);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') //判断通篇里第一个字符是否为字母,若判断条件为真,直接b+1;
b++;
while (ch!=EOF)
{
if(!(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')) //b统计单词数量
{ ch=fgetc(fp);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
b++;
}
else ch=fgetc(fp);
}
rewind(fp);
ch=fgetc(fp);
while (ch!=EOF)
{
if(ch=='\n') //c统计段落数量
{
ch=fgetc(fp);
while(ch==' ')
{
ch=fgetc(fp);
if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') /* 每一段后面必须有回车+空格(可能不止一个)+
字母,该段才计数加一,致使最后一段无法在此处
被计数,因此在输出c的时候,应该再+1 */
c++;
}
}
else ch=fgetc(fp);
}
fclose(fp);
printf("空格有%d个,字符有%d个,单词有%d个,段落有%d段",a,i,b,c+1);
}
1.设计思路
用于保存英文文章的一定是一个文本文件,此处设计由用户键入文件存储路径,利用while语句将文件内容字符逐个输出。
统计则需定义一个变量ch来读取文本里的单个字符;利用while语句每读取一个字符,i变量加一用来统计字符数,读取字符的同时用if语句判断该字符是否为空白,判断条件为真时,a++用来统计空白字符数;
此时文件指针指到最后,统计单词和段落的时候,都需要重置文件指针位置–rewind(fp);
统计单词个数,用if语句判断通篇第一个字符是否为字母,条件为真时才b+1;用if语句判断字符是否为“非字母字符”,若是,则读取下一字符判断是否为字母(若是,则单词计数b++,若否,读取下一个字符), 若否,读取下一个字符;
统计段落个数,判断出现“回车+空格+字母”形式时,段落数量用c计数,用if语句判断字符是否为‘\n’,若是,读取下一个字符并用while语句找到空格,且该空格后面是字母,此时段落计数c++;但最后一个段落没有该形式,无法成功计数,所以再输出段落个数的时候,还要对c变量再加一,最后要关闭文件。
2.功能模块详述
将该英文文章显示输出。
可以由用户键入文件存储路径。
用ch保存从文件里读出的每一个字符并用i计数,判断字符是否为空白,如果判断条件为真,则用a计数。先判断通篇第一个字符是否为字母,如果条件为真,则b+1;判断字符是否为非字母字符,若是,则读取下一字符,若是,则单词计数加一。
每一段后面必须有回车+空格(可能不止一个)+字母,该段才计数加一,致使最后一段无法在此处被计数,因此在输出c的时候,应该再+1。
3、实验结果截图
标签:段落,单词,ch,读取,字符,空格,计数,fp,&& 来源: https://blog.csdn.net/weixin_48569452/article/details/115470546
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。