?? 單詞頻數統計.cpp
字號:
# include<stdio.h>
# include<string.h>
# include<stdlib.h>
# define M 1000
typedef struct
{
char data[20];
int sum;
}WORD;
WORD word[1000]; //用來存放單詞,并統計單詞的頻數
char stack[1000]; //臨時存放單詞,并起統計作用
int top=0; //棧頂指針
int num=1;
int Init(void) //初始化單詞數組
{
int i;
for(i=1;i<=M;i++)
word[i].sum=0;
return 0;
}
int check(char *p) //核查該單詞有無出現過
{
int i;
for(i=1;i<=num;i++)
{
if(strcmp(word[i].data,p)==0)
break;
}
if(i<=num)
return i;
else
return -1;
}
int TongJi(void) //用來對單詞進行統計
{
FILE *fp;
int i,flag;
char wd[1000];
if((fp=fopen("c:\\words.txt","rt"))==NULL)
{
printf("讀取文件失敗:\n");
exit(0);
}
while(!feof(fp))
{
do
{
fscanf(fp,"%c",&stack[top++]);
printf("%c",stack[top-1]);
}while(stack[top-1]!=' ');
if(stack[0]==' ') //開始讀入的是空格
continue;
i=0;
while(top!=0)
{
wd[i]=stack[--top];
i++;
}
wd[i]=0;
flag=check(wd);
if(flag>=0)
word[num].sum++;
else
{
num++;
strcpy(word[num].data,wd);
word[num].sum++;
}
}
return 0;
}
int print(void) //單詞頻數統計結果
{
int i,j,k;
char ch[100];
for(i=1;i<=num;i++)
{
//printf("%10s",word[i].data);
for(j=strlen(word[i].data),k=0;j>=0;j--,k++)
ch[k]=word[i].data[j-1];
ch[k]=0;
printf("%20s",ch);
printf("%6d\n",word[i].sum);
}
return 0;
}
int main(void)
{
Init(); //初始化
TongJi(); //單詞統計
print(); //統計結果輸出
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -