A. C語言 單詞檢索程序
=====================================
問題補充:二樓的是死循環運行不了啊
=====================================
實在抱歉,之前疏忽了,現在已經改好了,再試一下吧:)
=====================================
問題補充:二樓的幸苦了,仔細看了一下你的,好像有點出入,不是自己輸入文章,是打開已有文章。還得麻煩你稍稍修改下。謝謝哈
=====================================
根據你的要求,又改了一版,現在已經改好了,再試一下吧:)
給:
#include<stdio.h>
#include<string.h>
#define MAX_size 1000
int flag=1,degree=0;
void Index(char str[],char word[],int position[])
{
int i,len_str,len_word,pos_str,pos_word,k=0,word_number=0;//word_number代表短文中單詞的個數
len_word=strlen(word);
len_str=strlen(str);
for(i=0;i<len_str;i++)
{
while(str[i]==' '||str[i]==','||str[i]=='.')
i++;
word_number++; //單詞個數加一
for(pos_str=i,pos_word=0;pos_str<len_str && pos_word<len_word;pos_str++,pos_word++)
{
if(str[pos_str]!=word[pos_word])
break;
}
if(pos_word==len_word && (str[pos_str]=='\0'|| str[pos_str]==' '||str[pos_str]==','||str[pos_str]=='.')) //表明找到相等的單詞
{
position[k++]=word_number;
degree++; //相等的次數加1
flag=0;
}
else
{
while(str[pos_str]!=' '&&str[pos_str]==','&&str[pos_str]=='.'&& pos_str<len_str)
pos_str++;
}
i=pos_str;
}
}
void main()
{
char str[MAX_size],word[20],ch;
int position[100],i;
int k=0;
FILE *fp;
if((fp=fopen("a.txt","r"))!=NULL)
{
while(1)
{
ch=fgetc(fp);
if(ch==EOF) break;
str[k]=ch;
k++;
}
}
printf("請輸入要檢索的單詞: \n");
gets(word);
Index(str,word,position);
if(flag)
printf("您輸入的單詞不在短文中。\n");
else
{
printf("您輸入的單詞在短文中,它共出現 %-d 次\n",degree);
printf("出現的位置為: \n");
for(i=0;i<degree;i++)
printf("第%-2d個單詞\n",position[i]);
}
fclose(fp);
}
B. 提取英文句子中的單詞並排序輸出 c語言
#include<stdio.h>
#include<string.h>
intGetWords(char*sentence,char*words[]);
voidSortStrings(char*strs[],intcount);
intmain()
{
charstr[200];
intnWords=0;
char*words[20];
inti;
printf("inputastring:");
gets(str);
nWords=GetWords(str,words);
SortStrings(words,nWords);
puts("output:");
for(i=0;i<nWords;i++)
{
puts(words[i]);
}
return0;
}
intGetWords(char*sentence,char*words[])
{
/******start******/
inti=0;
char*p;
p=strtok(sentence,",.");
while(p!=NULL)
{
words[i]=p;
i++;
p=strtok(NULL,",.");
}
returni;
/******end******/
}
voidSortStrings(char*strs[],intcount)
{
/******start******/
char*p;
inti,j,k;
for(i=0;i<count;i++){
for(j=i+1;j<count;j++)
{
if(strcmp(strs[i],strs[j])>0)
{
p=strs[i];
strs[i]=strs[j];
strs[j]=p;
}
}
}
/******end******/
}
C. 用C語言編程,如何查找一段文字(有英有漢)中的某些英文單詞,並統計其數量
//search.c
#include <stdio.h>
#include <conio.h>
main()
{
FILE*fp;
char key[20],ch;
int i,l,num=0;
if((fp=fopen("d:\\word.dat","w+"))==NULL)
{ printf("can not open file");
getch();
exit(0);
}
printf("輸入文章(按#鍵結束)_\n ");
do{
ch=getchar();
fputc(ch,fp);
}while(ch!='#');
getchar();
printf("\n輸入要查詢的關鍵字_ ");
gets(key);
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
if(ch==key[0])
{
l=strlen(key);
for(i=1;i<l;i++)
{
ch=fgetc(fp);
if(ch!=key[i]) break;
}
num++;
}
ch=fgetc(fp);
}
printf("共計: %d (%s)\n",num,key);
getch();
}
D. c語言 寫一個函數,找出一個英文句子中最長的單詞
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#defineN100
char*maxlenword(charstatement[],charmaxword[]){
inti=0,j;
charword[N];
maxword[0]='