原罪都是自己太菜 下载的数据在洛谷IDE跑也和答案一样但过不了 实在找不到问题 这次加了注释希望大家帮忙看看。。。
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<ctype.h>
char word[10];
char text[1000000];
int count;
int p;
int h;
int all;
int n;
int count1;
int m;
int main(){
scanf("%s",word);
getchar();
getchar();
gets(text);
for(m=0;text[m]==' ';m++){
count1++;
}//统计字头前空格数
for(; m < sizeof(text); m++){
(text[m]==' ')?(h++):1;
}//统计单词数
char list[h+1][100];
int k[h+1];
memset(list,0,(h+1)*100);
for(int i = 0; i < sizeof(word); i++){
word[i] = tolower(word[i]);
}
for(int i = 0; text[i]!='\0'; i++){
text[i] = tolower(text[i]);
}//全转小写
while(text[p]==' '){
p++;
}//排掉空格准备下一步分割
for(int i=0;i<h+1;i++){
for(int j=0;text[p]!=' '&&text[p]!='\0';j++){
list[i][j]=text[p];
p++;
}
p++;
}//分割单词在二维list数组的每个小部分
for(int i=0;i<h+1;i++){
(strcmp(list[i],word)==0)?(k[count]=i,count++):(1);
}//与word比较是否一致,同时利用k数组记录第一个单词出现的位置,count记录出现次数
if(count==0){
printf("-1");
exit(0);
}
printf("%d",count);
for(n=0;n<k[0];n++){
all+=strlen(list[n]);
}
printf(" %d",count1+all+n);//行头空格数加 之前的单词数加 单词间空格数
return 0;
}