#include<stdio.h>
#include<string.h>
#define MAX_size 1000
int flag=1,degree=0;
void change(char s[])
{
int i;
for(i=0;i<=1000;i++)
{
if(s[i]>='A'&&s[i]<='Z')
{
s[i]+=32;
}
}
}
void Index(char str[],char word[],int position[])
{
int i,len_str,len_word,pos_str,pos_word,k=0,word_number=0;
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++;
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("d:\\temp.txt","r"))!=NULL)
{
while(1)
{
ch=fgetc(fp);
if(ch==EOF) break;
str[k]=ch;
k++;
}
}
change(str);
printf("请输入要检索的单词: \n");
gets(word);
change(word);
Index(str,word,position);
if(flag)
printf("您输入的单词不在短文中。\n");
else
{
printf("您输入的单词在短文中,它共出现 %-d 次\n",degree);
}
fclose(fp);
}
我们课程设计答辩要用,帮我每个部分讲一下逻辑作用吧,谢谢了,要是好的话可以加分
int flag=1,degree=0;
比如这句就讲下输入的这两个值代表什么这样
课程设计题目是这样的:在一篇文章中查找某个单词出现的次数
要求: 输入:一个文本文件和需要查找的单词 输出:单词出现的次数提示: 最好输出以文件方式,显示在屏幕上也可
可行程序网上我找到了,就是到时候答辩我要能讲出各部分的逻辑作用
我们老师给我的修改要求是运行之后可以先把文档内容显示在界面上,然后加上搜索完提问是否继续搜索,关闭,或者继续搜索的循环,谢谢了
追答#include
#include
#define MAX_size 2000
int Index(char str[],char word[]) {
int i,j,k,sum = 0;
for(i = 0;str[i];i++) {
if(str[i] == word[0]) { /* 只要当前字符与word中的相同,则继续核对其他字符。 */
k = i;
j = 0;
while((str[k] == word[j]) && (str[k] && word[j])) { /* 核对整个单词 */
++k; ++j;
}
/* 比较到word末尾后,则该单词出现次数增1. */
if(word[j] == '\0' && (str[k] > 'z' || str[k] < 'a')) {
++sum;
i = k;
}
}
}
return sum;
}
int main() {
char str[MAX_size],word[20],ch;
int i = 0,sum = 0,k,an;
FILE *fp;
if((fp = fopen("F:\\VC\\example.txt","r")) == NULL) {
printf("打开文件出错!\n");
exit(1);
}
while((str[i] = fgetc(fp)) != EOF) {
putchar(str[i]);
++i;
}
fclose(fp);
str[i] = '\0';
putchar('\n');
do {
printf("请输入要检索的单词: ");
gets(word);
k = 0;
sum = Index(str,word);
if(sum == 0) printf("您输入的单词不在短文中。\n");
else printf("您输入的单词%s在短文中,它共出现 %-d 次\n",word,sum);
printf("继续请输入1,其他结束。\n");
printf("请选择 : ");
scanf("%d",&an);
}while(an == 1);
getchar();
return 0;
}