统计单词个数 C语言程序源代码
英文单词个数统计
英文单词个数统计摘要:一、背景介绍二、统计方法三、统计结果四、结果分析五、总结与建议正文:【一、背景介绍】随着全球化的发展,英语作为国际通用语言,在我国的教育领域中占据着举足轻重的地位。
英语学习者通常需要掌握大量的英文单词,以提高自己的英语水平。
然而,对于许多学习者来说,记忆大量单词成为了一个难题。
为了帮助学习者更好地掌握单词,本文将介绍一种英文单词个数统计方法。
【二、统计方法】英文单词个数统计的方法有很多种,这里我们以Python编程语言为例,介绍一种简单的统计方法。
首先,我们需要准备一份英文单词列表,然后利用Python的字符串操作函数,如split()和len(),对单词进行分割和计数。
最后,将得到的结果进行整理和汇总,即可得到英文单词的总个数。
【三、统计结果】经过统计,我们得到了以下结果:在所准备的英文单词列表中,总共有10,000个英文单词。
其中,最常见的10个英文单词分别为:a, the, and, in,to, of, on, for, with, by。
这10个单词在英文文章中的出现频率较高,对于学习者来说,应重点掌握。
【四、结果分析】通过统计结果,我们可以发现以下几点:首先,英文文章中出现频率较高的单词大多为常用介词和连词,这些词汇对于英语学习者来说具有较高的实用价值。
其次,英文单词的分布具有一定的规律性,例如,许多名词和动词都有对应的过去式、现在分词和过去分词等。
因此,学习者在记忆单词时,可以结合这些规律进行学习,提高学习效率。
【五、总结与建议】英文单词个数统计对于学习者来说具有一定的参考价值。
通过了解英文文章中单词的出现频率,学习者可以有针对性地进行单词记忆,提高自己的英语水平。
【C语言】对输入的字符串中C关键词的查找统计
【C语⾔】对输⼊的字符串中C关键词的查找统计完成对输⼊的字符串中C关键词的查找统计。
程序运⾏⽰例如下:本程序将为您统计C语⾔的关键字的个数,请输⼊,输⼊end结束输⼊:if do while while do break goto helloworld end您的输⼊中C语⾔关键字出现的次数统计如下:break : 1do : 2goto : 1if : 1while : 2输⼊格式:"本程序将为您统计C语⾔的关键字的个数,请输⼊,输⼊end结束输⼊:\n"输出格式:"您的输⼊中C语⾔关键字出现的次数统计如下:\n""%-10s: %6d\n"#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<string.h>#define MAX 32struct Count {char* name;int count;};int main() {char s[10] = { 0 };struct Count arr[MAX] = {"auto", 0,"break",0,"case",0,"char",0,"const", 0,"continue",0,"default",0,"do", 0,"double",0,"else",0,"enum",0,"float",0,"for",0,"goto",0,"if",0,"int",0,"long",0,"register",0,"while", 0,"reuturn",0,"short",0,"signed",0,"sizeof",0,"static", 0,"struct",0,"switch",0,"typedef",0,"union",0,"unsigned",0,"void", 0 ,"volatile",0,"while", 0,};int i;printf("本程序将为您统计C语⾔的关键字的个数,请输⼊,输⼊end结束输⼊:\n");while (strcmp(s, "end") != 0) {scanf("%s", s);for (i = 0; i < MAX-1; i++) {if (strcmp(s, arr[i].name) == 0) { // strcmp--字符串⽐较函数,如果两个字符串相等,返回值为0arr[i].count++;}}}printf("您的输⼊中C语⾔关键字出现的次数统计如下:\n");for (i = 0; i < MAX-1; i++) {if (arr[i].count != 0) {printf("%-10s: %6d\n", arr[i].name, arr[i].count);}}}⽅法⼀(推荐)#include <stdio.h>#include <ctype.h>#include <string.h>#define MAXWORD 80#define NKEYS (sizeof(keytab) / sizeof(struct key))struct key{char *word;int count;} keytab[] ={"auto", 0,"break", 0,"case", 0,"char", 0,"const", 0,"continue", 0,"default", 0,"do", 0,"double", 0,"else", 0,"enum", 0,"extern", 0,"float", 0,"for", 0,"goto", 0,"if", 0,"int", 0,"long", 0,"register", 0,"return", 0,"short", 0,"singed", 0,"sizeof", 0,"static", 0,"struct", 0,"switch", 0,"typedef", 0,"union", 0,"unsigned", 0,"void", 0,"volatile", 0,"while", 0} ;void getword(char *, int);int binsearch(char *, struct key *, int);int main(int argc, char *argv[]){int n;char word[MAXWORD];printf("本程序将为您统计C语⾔的关键字的个数,请输⼊,输⼊end结束输⼊:\n"); do{getword(word, MAXWORD);if (isalpha(word[0])){if ((n = binsearch(word, keytab, NKEYS)) >= 0){keytab[n].count++; //找到则对应次数+1}}}while (strcmp(word, "end") != 0);printf("您的输⼊中C语⾔关键字出现的次数统计如下:\n");for (n = 0; n < NKEYS; n++){if (keytab[n].count > 0){printf("%-10s: %6d\n", keytab[n].word, keytab[n].count); }}return0;}/* 折半查找:在tab[0]到tab[n-1]中查找word */int binsearch(char *word, struct key tab[], int n){int result;int low, high, mid;low = 0;high = n - 1;while (low <= high){mid = (low + high) / 2;if ((result = strcmp(word, tab[mid].word)) < 0){high = mid - 1;}else if (result > 0){low = mid + 1;}else{return mid;}}return -1;}/* getword:从输⼊中获取某个单词 */void getword(char *word, int lim){int c;void ungetch(int);char *w = word;while (isspace(c = getchar())){}if (c != EOF){*w = c;w++;}if (!isalpha(c)){*w = '\0';}for ( ; --lim > 0; w++){if (!isalnum(*w = getchar())){//读⼊的某个字符不是字母,则将它退还给输⼊缓冲区 ungetch(*w);break;}}*w = '\0';}⽅法⼆。
C语言 统计字符个数(指针)
时间限制:
1000毫秒
内存限制:
32768 K字节
总提次数:
689次
成功提交次数:
455次
判题规则:
严格比较
问题描述
输入一行字符,统计并输出其中数字字符、英文字母和其它字符的个数。
要求:
1、编写一函数void count(char *s,int *pdigit,int *pletter,int *pother),其中s为输入的字符串,*pdigit, *pletter,*pother分别表示字符串中数字、字母和其他字符的个数。
int dight=0;
int letter=0;
int other=0;
gets(s);
count(s,&dight,&letter,&other);
printf("%d %d %d \n",dight,letter,other);
return 0;
}
输入
输入1个字符串。
输出
输出数字、字母和其他字符的个数。每个数后有一空格。
输入样列
wenzhou university 1933
输出样例
4 17 2
出处
ymc
答案:
#include <stdio.h>
#include <string.h>
void count(char s[],int *pdight,int *pletter,int *pother)
{
int n;
int i;
n=strlen(s);
for(i=0;i<n;i++)
(完整版)C语言统计文件中的字符数、单词数以及总行数
C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;限制每行的字符数不能超过1000。
代码如下#include <stdio.h>#include <string.h>int *getCharNum(char *filename, int *totalNum);int main(){char filename[30];// totalNum[0]: 总行数totalNum[1]: 总字符数totalNum[2]: 总单词数int totalNum[3] = {0, 0, 0};printf("Input file name: ");scanf("%s", filename);if(getCharNum(filename, totalNum)){printf("Total: %d lines, %d words, %d chars\n", totalNum[0], totalNum[2], totalNum[1]);}else{printf("Error!\n");}return 0;}/*** 统计文件的字符数、单词数、行数** @param filename 文件名* @param totalNum 文件统计数据** @return 成功返回统计数据,否则返回NULL**/int *getCharNum(char *filename, int *totalNum){FILE *fp; // 指向文件的指针char buffer[1003]; //缓冲区,存储读取到的每行的内容int bufferLen; // 缓冲区中实际存储的内容的长度int i; // 当前读到缓冲区的第i个字符char c; // 读取到的字符int isLastBlank = 0; // 上个字符是否是空格int charNum = 0; // 当前行的字符数int wordNum = 0; // 当前行的单词数if( (fp=fopen(filename, "rb")) == NULL ){perror(filename);return NULL;}printf("line words chars\n");// 每次读取一行数据,保存到buffer,每行最多只能有1000个字符while(fgets(buffer, 1003, fp) != NULL){bufferLen = strlen(buffer);// 遍历缓冲区的内容for(i=0; i<bufferLen; i++){c = buffer[i];if( c==' ' || c=='\t'){ // 遇到空格!isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1isLastBlank = 1;}else if(c!='\n'&&c!='\r'){ // 忽略换行符charNum++; // 如果既不是换行符也不是空格,字符数加1isLastBlank = 0;}}!isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1isLastBlank = 1; // 每次换行重置为1// 一行结束,计算总字符数、总单词数、总行数totalNum[0]++; // 总行数totalNum[1] += charNum; // 总字符数totalNum[2] += wordNum; // 总单词数printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);// 置零,重新统计下一行charNum = 0;wordNum = 0;}return totalNum;}在D盘下创建文件demo.txt,并输入如下的内容:运行程序,输出结果为:上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。
程序设计基础-题库 (填空)
程序设计基础-题库1、C源程序的基本单位是___。
答案:函数;2、在C语言中,输入操作是由库函数___完成的,输出操作是由库函数___完成的。
答案: scanf;scanf();printf;printf();3、一个C源程序中,至少应该包含一个___。
答案:主函数;main函数;main();主函数main;4、C语言程序中,一个函数由两部分组成,分别是__和__。
答案:函数的首部;函数首部;函数体;函数头;函数的头;函数体;函数的首部;函数首部;函数头;函数的头;5、请写出以下表达式的值:10/4*3答案:6;6、已有定义int x;float y;且执行scanf("%3d%f",&x,&y);语句时,从第一列开始输入数据12345□678<CR>,则x的值为⑴ ,y的值为⑵ 。
答案:123;45.0;解析:读取数据格式中规定域宽时,系统仅读取指定宽度的数据。
7、以下程序的输出结果是()。
main(){int x=1,y=2;printf("x=%d y=%d *sum*=%d\n",x,y,x+y);printf("10 Squared is :%d\n",10*10);}答案:x=1 y=2 *sum*=310 Squared is :100;解析:8、假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。
请填空。
a+=( );b=a-( );a-=( );答案:b;b;b;解析:9、若x为int型变量,则执行以下语句后x的值为()。
x=7;x+=x-=x+x;答案:-14;解析:10、以下程序实现输出x,y,z三个数中的最大者。
请分析程序填空。
main(){int x=4,y=6,z=7;;int ____;if(____) u=x;else u=y;if (____) v=u;else v=z;printf("v=%d",v);}答案:u,v;x>y;u>z;解析:11、若运行时输入“16”,则以下程序的运行结果是________。
英文字符个数统计
英文字符个数统计
在计算机中,英文字符指的是英文字母、数字和标点符号。
统计英文字符个数可以用程序实现,具体操作如下:
1. 读入一段文本,保存在一个字符串变量中。
2. 遍历字符串中的每个字符,判断它是否为英文字符。
可以使用ASCII码进行判断,ASCII码表中,英文字母、数字和标点符号的编码范围分别是:
英文字母:65~90(大写字母)和97~122(小写字母)
数字:48~57
标点符号:33~47、58~64、91~96、123~126
可以用if语句结合ASCII码表进行判断,若字符的ASCII码在以上范围内,则它是英文字符。
3. 统计英文字符个数,可以定义一个计数器变量,每遇到一个英文字符,计数器加1。
4. 最后输出统计结果即可。
下面是一个简单的Python程序示例:
```python
text = input('请输入一段英文文本:')
count = 0
for ch in text:
if (ch >= 'A' and ch <= 'Z') or (ch >= 'a' and ch <= 'z') or (ch >= '0' and ch <= '9') or (ch in string.punctuation):
count += 1
print('英文字符个数为:', count)
```
需要注意的是,以上程序中需要用到Python标准库中的string.punctuation变量,它包含了所有标点符号的字符集。
C++统计中英文大小写字母、数字、空格及其他字符个数的方法
C++统计中英⽂⼤⼩写字母、数字、空格及其他字符个数的⽅法本⽂实例讲述了C++统计中英⽂⼤⼩写字母、数字、空格及其他字符个数的⽅法。
分享给⼤家供⼤家参考,具体如下:/** 作者:刘同宾* 完成⽇期:2012 年 11 ⽉ 28 ⽇* 版本号:v1.0* 输⼊描述:* 问题描述:有⼀篇⽂章,共有三⾏⽂字,每⾏有80个字符。
要求分别统计出其中英⽂⼤写字母、⼩写字母、数字、空格以及其他字符的个数。
* 程序输出:* 问题分析:略* 算法设计:略*/#include<iostream>using namespace std;int main(){int i,j,upper,lower,digit,space,other;char text[3][80];upper=lower=digit=space=other=0;for(i=0;i<3;i++){cout<<"请输⼊第"<<i+1<<"⾏(please input line):"<<endl;gets(text[i]); //这是啥情况。
for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z'){upper++;}else if(text[i][j]>='0'&&text[i][j]<='9'){digit++;}else if(text[i][j]>='a'&&text[i][j]<='z'){lower++;}else if(text[i][j]=' '){space++;}else{other++;}}}cout<<"⼤写字母个数为:"<<upper<<endl<<"⼩写字母个数为:"<<lower<<endl<<"数字个数为:"<<digit<<endl<<"空格个数为:"<<space<<endl<<"其他字符个数为:"<<other<<endl;return 0;}运⾏效果截图如下:希望本⽂所述对⼤家C++程序设计有所帮助。
C++程序测量一个字符串中的单词个数(多种方法)
#include<stdio.h>void main(){char str[81];int i,num=0,word=0;char c;cout>>"please input the string:\n";gets(str);for(i=0;(c=str[i])!='\0';i++){if(c==' ')word=0;else if(word==0){word=1;num++;}}cout>>"There are %d words in the line.\n">>num;}这个练习题不错,如果把空格换成非字符符号,可以用来统计文章中的单词数。
#include<stdio.h>#include<stdlib.h>int main(){char str[50];int word;int n=0;int i;printf("Input:");gets(str);for(i=0;i<50-1;i++){if(str[i]==' '){word=1;}if(word){n++;word=0;}}printf("Output: There are is %d in teh line.\n",n);system("pause");return 0;}给你个思路吧。
设定一个字符数组,或者直接用string对象,从键盘接收一个字符串到该字符数组或字符串对象中。
然后设一个变量i用以遍历字符串,如果遇到第i位是空格或者标点,则空格或标点数加1,并检查第i-1位是否为字母,如果i-1位是字母,说明刚刚遍历过去的是一个单词,则单词数加1,否则(i-1位不是字母)就继续往下走。
当然你还要设三个变量存储空格、标点和单词的数量。
c语言统计一个字符串中单词的个数
c语言统计一个字符串中单词的个数这个程序可以自动清除多余的空格。
#include "stdio.h"int count_word(char *str);void main(){char str1[80];int sum=0;puts("\n please enter a string");gets(str1);sum=count_word(str1);printf("there are %d words in this sentence",sum);}int count_word(char *str){int count,flag;char *p;count=0;flag=0;p=str;while(*p!='\0')/*当字符串没有到结尾的时候,重头到尾的循环*/{if(*p==' ')/*假如字符串遇到空格,就将flag清零,同时可以过滤掉多余的空格*/ flag=0;else if(flag==0)/*当字符串不是空格时,假如flag为0,那么计算器加1,既是遇到空格后的第一个字符时*/{flag=1;/*将flag标记回1,这样在遇到第一个字符后的字符时可以将他过滤掉,直到遇到空格时,在清零*/count++;}p++;}return count;}C语言编程题求教----输入一个字符统计其中的单词个数输入一串字符统计其中的单词个数。
*/各个单词间用空格隔开空格数可以是多个/* 例子:Input:Let's go to room 209count=5这是我做的程序:#include <stdio.h>int main(void){char ch;int c,m;printf("Input words:");c=1;while((ch=getchar())!='\n'){if(ch==' ')c++;}printf("count=%d\n",c);return 0;}但是如果是多个空格就要多统计出单词个数来。
汇编实验三报告 分类统计字符个数COUNT_CHAR
计算机学院计算机科学与技术专业8 班学号姓名协作者_________ 教师评定_________________实验题目实验用2.3分类统计字符个数COUNT_CHAR一、实验目的与要求学习用汇编语言编写与设计分支循环程序。
题目:分类统计字符个数COUNT_CHAR二、实验内容程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other 为名的存储单元中。
三、程序代码;******************************************Data segmentstring1 db 'Input your string:$'string2 db 'Digit:$'string3 db 'Letter:$'string4 db 'Other:$'Digit db 0Letter db 0Other db 0data ends;*******************************************prognam segment;-----------------------------------------------------------------main proc farassume cs:prognam,ds:datastart:push ds ;保留现场sub ax,axpush axmov ax,datamov ds,axlea dx,string1 ;输出string1mov ah,9int 21hmov c x,80L1:mov ah,1 ;输入字符int 21hcmp al,0dh ;若是回车则结束jz overcmp al,30h ;若小于30h(0)则others+1jb otherscmp al,39h ;若大于39h(9)则跳转L2继续比较ja L2jmp digits ;否则digits+1L2:cmp al,41h ;若小于41h(A)则others+1jb otherscmp al,5ah ;若大于5ah(Z)则跳转L3继续比较ja L3jmp letters ;否则letters+1L3:cmp al,61h ;若小于61h(a)则others+1jb otherscmp al,7ah ;若大于7ah(z)则others+1ja othersjmp letters ;否则letters+1digits:inc digitjmp over1others:inc otherjmp over1letters:inc letterjmp over1over1:loop L1over:call e ndlinelea dx,string2 ;输出string2mov ah,9int 21hsub ax,axmov al,digitcall displaycall e ndlinelea dx,string3 ;输出string3mov ah,9int 21hsub ax,axmov al,lettercall d isplaycall e ndlinelea dx,string4 ;输出string4mov ah,9int 21hsub ax,axmov al,othercall d isplayretmain endp;------------------------------------------------------------------------------ endline proc near ;输出回车与换行mov ah,2mov dl,0ahint 21hmov ah,2mov dl,0dhint 21hretendline endp;----------------------------------------------------------------------------------- display proc near ;输出结果mov dl,aladd dl,30h ;0的ascii码是30mov ah,2int 21hretdisplay endp;--------------------------------------------------------------------------------------- prognam ends;********************************************************* end s tart四、运行结果附录:由于这个实验一开始做错了题目,实验课上机检查是检查了该程序实验2.2查找匹配字符串程序代码:;---------------------------------------------newline macro ;回车换行的宏定义mov ah, 02hmov dl, 0dhint 21hmov ah, 02hmov dl, 0ahint 21hendm;------------------------------------------------data segmentmaxlenk db 8 ;关键字的最大长度factlenk db ? ;关键字的实际长度keyword db 8 dup(?) ;关键字的存储maxlens db 32 ;字符串的最大长度factlens db ? ;字符串的实际长度sentence db 32 dup(?) ;字符串的存储info1 db 'Enter Keyword:$'info2 db 'Enter Sentence:$'mess0 db 'Match at location:$'mess1 db 'No match.$'mess2 db ?,?,'H of the sentence.$'data ends;------------------------------------------------------stack segment stackstack ends;------------------------------------------------------code segment;------------------------------------------------------main proc farassume cs:code, ds:data, es:data, ss:stackstart:push dssub ax, axpush axmov ax, datamov ds, axmov es, axmov ah, 09h ;输出字符串信息lea dx, info1int 21hmov ah, 0ah ;输入关键字lea dx, maxlenkint 21hbegin:newlinemov ah, 09hlea dx, info2int 21hmov ah, 0ah ;输入字符串lea dx, maxlensint 21hnewlinelea si, keyword ;关键字的首地址赋予silea bx, sentence ;字符串的首地址赋予bxlea di, sentence ;字符串的首地址赋予dimov dl, 00h ;对dl清零cld ;方向标志位清零,字符串地址递增again:mov cl, factlenkrepz cmpsbjz matchmov al, factlenssub al, factlenkjs next1inc allea si, keywordinc bxmov di, bxinc dxcmp dl, aljl againnext1:lea dx, mess1mov ah, 09hint 21hjmp beginmatch:lea dx, mess0mov ah, 09hint 21hmov ax, bxlea bx, sentencesub ax, bxmov bx, 0001hadd ax, bxand ax, 00ffhxchg ax,bxmov ch, 2rotate:mov cl,4hrol bl,clmov al,bland al,0fhadd al,30hcmp al,3ahjl printadd al,7hprint:mov ah,02hmov dl,alint 21hdec chjnz rotatemov ah,09hlea dx,mess2int 21hjnl beginretmain endpcode endsend start运行结果:。
c语言统计字符个数while语句
C语言作为一门编程语言,具有统计字符个数的功能。
在C语言中,可以通过使用while语句来统计字符的个数。
下面将介绍如何在C语言中使用while语句来完成字符个数的统计。
1. 概述在C语言中,可以通过循环结构来实现对字符个数的统计。
而while 语句作为一种循环结构,可以通过不断地判断条件来实现字符个数的统计。
2. while语句的基本结构while语句的基本结构如下:```cwhile (condition){// 循环体}```其中,condition为判断条件,当条件满足时,执行循环体中的语句;当条件不满足时,退出循环。
3. 统计字符个数的实现在C语言中,可以通过while语句来统计字符的个数。
下面是一个简单的示例:```c#include <stdio.h>int main(){char str[] = "Hello, C language!";int count = 0;int i = 0;while (str[i] != '\0'){count++;i++;}printf("The number of characters in the string is: d\n", count);return 0;}```在上面的示例中,我们定义了一个字符串str,并初始化了count和i 两个变量。
然后通过while语句来遍历字符串str,并在每次循环中对count进行累加,直到遍历完整个字符串。
最后输出count的值,即字符个数。
4. 注意事项在使用while语句统计字符个数时,需要注意以下几点:- 需要对字符数组进行合理的初始化,确保字符串以'\0'结尾。
- 需要定义一个计数变量,用于累加字符个数。
- 需要定义一个索引变量,用于遍历字符串中的每个字符。
- 需要在循环体内对计数变量进行更新,确保字符个数的准确统计。
(完整版)C语言统计文件中的字符数、单词数以及总行数
C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括: 每行的字符数和单词数文件的总字符数、总单词数以及总行数空白字符(空格和tab缩进)不计入字符总数; 单词以空格为分隔;不考虑一个单词在两行的情况;限制每行的字符数不能超过1000。
代码如下#in elude <stdio.h> #in elude <stri ng.h>int *getCharNum(char *filename, int *totalNum);int mai n(){char file name[30];// totalNum[0]: 总行数totalNum[1]: 总字符数totalNum[2]:总单词数int totalNum[3] = {0, 0, 0};prin tf("I nput file n ame:");sca nf("%s", file name);if(getCharNum(filename, totalNum)){printf("Total: %d lines, %d words, %d chars'n", totalNum[0], totalNum[2], totalNum[1]);}else{prin tf("Error!\n");}return 0;}/***统计文件的字符数、单词数、行数* @param file name 文件名* @param totalNum 文件统计数据成功返回统计数据,否则返回NULL* @return**/int *getCharNum(char *file name, i nt *totalNum){FILE *fp; //指向文件的指针char buffer[1003]; //缓冲区,存储读取到的每行的内容int bufferLen; //缓冲区中实际存储的内容的长度int i; //当前读到缓冲区的第i个字符char c; //读取到的字符int isLastBlank = 0; //上个字符是否是空格int charNum = 0; //当前行的字符数int wordNum = 0; // 当前行的单词数if( (fp=fopen(filename, "rb")) == NULL ){perror(file name);return NULL;}prin tf("li ne words chars\n");//每次读取一行数据,保存到buffer,每行最多只能有1000个字符while(fgets(buffer, 1003, fp) != NULL){bufferLe n = strle n( buffer);//遍历缓冲区的内容for(i=0; i<bufferLe n; i++){c = buffer[i];if( c==' '|| c=='\t'){ // 遇到空格!isLastBlank && wordNum++; //如果上个字符不是空格,那么单词数加1isLastBla nk = 1;}else if(c!='\n'&&c!='\r'){ // 忽略换行符charNum++; //如果既不是换行符也不是空格,字符数加1isLastBla nk = 0;}}!isLastBlank && wordNum++; //如果最后一个字符不是空格,那么单词数加 1isLastBlank = 1; //每次换行重置为1// 一行结束,计算总字符数、总单词数、总行数totalNum[0]++; // 总行数totalNum[1] += charNum; // 总字符数totalNum[2] += wordNum; // 总单词数printf("% -7d%-7d%d\n", totalNum[0], wordNum, charNum);//置零,重新统计下一行charNum = 0;wordNum = 0;}return totalNum;}在D盘下创建文件demo.txt ,并输入如下的内容:I am Chin ese. I love my coun try.China has 960 square kilometers of territory.China has a populati on of 1.35 billio n.The capital of China is Beiji ng.By gunge2014-10-12运行程序,输出结果为:In put file n ame: d://demo.txt line words chars1 7 262 7 393 7 334 6 275 0 06 2 77 0 08 1 10Total: 8 lin es, 30 words, 142 chars上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。
C语言程序设计(PTA习题5-5使用函数统计指定数字的个数)
C语⾔程序设计(PTA习题5-5使⽤函数统计指定数字的个数)/*本题要求实现⼀个统计整数中指定数字的个数的简单函数*/#include <stdio.h>int CountDigit( int number, int digit ); //函数声明int main(){int number, digit;scanf("%d %d", &number, &digit);printf("Number of digit %d in %d: %d\n", digit, number, CountDigit(number, digit));return 0;}/* 你的代码将被嵌在这⾥ */int CountDigit( int number, int digit )//定义CountDigit这个计算数字个数的的函数{int i, number1;int n, count = 0;if(number!=0){if(number<0){number = -number; //将负数转为整数}else{while(number%10!=0){ //当number为个位数时退出循环i = number%10; //取出整数的个位数if(i==digit){ //判断是否为想要寻找的数字count++; //是的话count+1}number = number/10; //去掉最后⼀个数字}return count;}}else{ //如果这个整数为0,则0的个数为1count++; //count⾃增1return count;}}。
统计文本中单词的个数
江西理工大学软件学院计算机类课程实验报告课程名称:统计文本中单词个数班级:11软件会计4班姓名:黄健学号:11222122江西理工大学软件学院一、目录1、目录--------------------------------------------------------------22、实验目的--------------------------------------------------------33、实验要求--------------------------------------------------------34、实验仪器设备与材料-----------------------------------------35、实验原理--------------------------------------------------------46、实验步骤--------------------------------------------------------57、实验原始记录--------------------------------------------------68、实验数据分析计算结果--------------------------------------109、实验心得体会--------------------------------------------------1110、思考题----------------------------------------------------------12二:实验目的:一个文本可以看成是一个字符序列,在这个序列中,有效字符被空格分隔为一个个单词。
设计出一种算法来去统计出一个文本中单词的个数。
三:实验要求:1.被处理文本的内容可以由键盘读入2.可以读取任意文本内容,包括英文、汉字等3.设计算法统计文本中单词的个数4.分析算法的时间性能四:实验仪器设备和材料参考书籍电脑及其配件Microsoft Visulai C++ 6.0五:实验原理设计一个计数器count 统计文本中单词的个数。
c语言 统计单词
c语言统计单词在C语言中,统计单词的数量可以通过以下步骤完成:初始化计数器变量为0读取文本文件的每一行对于每一行,将每个单词拆分并检查是否为新单词(即之前未出现过的单词)如果是新单词,增加计数器变量返回计数器的值以下是一个简单的C语言程序,用于统计文本文件中的单词数量:c#include <stdio.h>#include <string.h>#include <ctype.h>#define MAX_WORDS 1000000 // 定义最大单词数#define MAX_WORD_LEN 100 // 定义最大单词长度int main() {FILE *file;char line[1000];char *word = malloc(MAX_WORD_LEN * sizeof(char));int count = 0;int i;int is_new_word = 1;char *words[MAX_WORDS];int num_words = 0;file = fopen("text.txt", "r"); // 打开文件if (file == NULL) {printf("无法打开文件\n");return -1;}while (fgets(line, sizeof(line), file)) { // 读取每一行for (i = 0; i < strlen(line); i++) { // 遍历每一行的每个字符if (isspace(line[i])) { // 如果遇到空格,表示一个单词结束is_new_word = 1; // 重置is_new_word标志为1,表示是新单词} else if (isalpha(line[i])) { // 如果遇到字母,检查是否为新单词if (is_new_word) { // 如果is_new_word为1,表示是新单词words[num_words] = malloc(MAX_WORD_LEN * sizeof(char)); // 为新单词分配内存空间strcpy(words[num_words], word); // 将当前单词复制到新分配的内存空间中num_words++; // 增加单词数量is_new_word = 0; // 重置is_new_word标志为0,表示不是新单词了} else { // 如果is_new_word为0,表示不是新单词,继续读取下一个字符到当前单词中word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾}} else { // 如果遇到其他字符,重置当前单词并继续读取下一个字符到当前单词中word[0] = '\0'; // 重置当前单词为空字符串word[strlen(word)] = line[i]; // 将当前字符添加到当前单词的末尾}}}fclose(file); // 关闭文件printf("总共的单词数量: %d\n", num_words); // 输出总单词数量for (i = 0; i < num_words; i++) { // 输出每个单词及其出现次数(这里只输出一次)printf("%s\n", words[i]);free(words[i]); // 释放内存空间}free(word); // 释放内存空间return 0;}。
5文本单词统计
实验五文本单词统计
一、目的和要求
1. 掌握字符串的基本概念与操作。
2. 掌握C语言的字符串库函数和文件操作函数。
二、实验内容
设计程序,统计并输出一篇英文文章(文本文件)中的各个单词出现的次数。
三、算法:
提示:
1) 循环每次从文件中读出一个字符,判断是否属于字母,如果属于字母则构造单词,否则拆分单词,然后进行单词统计。
2) 统计时需要构造一个“单词本”,其中每条数据包括该单词和其出现次数。
每次从文件中读出一个单词后,查找其是否在单词本中出现过。
如果出现过,对应单词的次数加1,否则向单词本添加该单词,初始化其次数为1。
可能用到的文件和字符串操作:
1)以只读方式打开D盘下的abc.txt文件,将文件指针保存在变量f中。
FILE* f = fopen("d:\\abc.txt", "r");
2)从f中读取一个字符,读取后f会自动移动到文件的下一个字符。
char c = fgetc(f);
3)判断文件是否读完。
c为从文件中读取的字符,EOF表示文件结束符,每个文件都有一个结束符,文件指针移动到最后时会读出。
c == EOF
4)关闭文件。
有始有终。
fclose(f);
5)判断两字符串是否相等。
strcmp结果等于0表示相等
strcmp(a, b) == 0
实验截图:。
统计单词数(find函数)
1、统计单词数(find函数)(stat.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能能快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在某篇文章中出现的次数和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。
【输入】输入文件名为stat.in,2行。
第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
【输出】输出文件名为stat.out。
只有一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中位置,位置从0开始);如果单词在文章中没有出现,则直接输出一个整数-1。
【数据范围】1≤单词长度≤10。
1≤文章长度≤1,000,000。
2、统计单词数(一个个字符对比)(stat1.cpp/c/pas)【问题描述】一般的文本编辑器都有查找单词的功能,该功能能快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在某篇文章中出现的次数和第一次出现的位置。
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例2)。
【输入】输入文件名为stat.in,2行。
第1行为一个字符串,其中只含字母,表示给定单词;第2行为一个字符串,其中只可能包含字母和空格,表示给定的文章。
【输出】输出文件名为stat.out。