求助,用vc测试没错,却通不过学生作业系统。
“case in”文件内容:
I am a student .q=a-m. z = i - w. My school is SCAU. It is a beau-
tiful university. 123 123. I like it.I am a student. -1 = 1 - 2.
我是初学者,这是一道作业题,题目要求如下:
把case in文件中的单词按照出现个数以及字母表顺序排序,然后把前五个单词输出。
(未满五个单词则全部输出)
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <math.h>
int main()
{
int i,j,n,t,num,colum;
int count[10000]={0},flog[10000]={0};
char str[10000][20],temp[20],ch;
FILE *fp;
//读入单词并计数
fp=fopen("case.in","r");
for(i=0;i<10000;i++)
{
for(j=0;j<20;j++)
{
if((ch=fgetc(fp))!=EOF)
{
if('A'<=ch&&ch<='Z')
str[i][j]=ch+32;
else if('a'<=ch&&ch<='z')
str[i][j]=ch;
else if(ch==' ')
{str[i][j]='\0'; break;}
else if (ch=='-')
{ flog[i]=1;
colum=j;
str[i][j]='\0';
break;
}
else if(ch=='\n')
{
if(flog[i-1]==1)
{i--;j=colum-1;}
else
{str[i][j]='\0'; break;}
}
else
{str[i][j]='\0'; break;}
}
}
count[i]=1; //记录单词个数
for(j=0;j<i;j++)
if((strcmp(str[i],str[j])==0))
count[i]++;
if(ch==EOF)
break;
}
//排序
n=i;
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(count[j]<count[j+1])
{
strcpy(temp,str[j]); t=count[j];
strcpy(str[j],str[j+1]); count[j]=count[j+1];
strcpy(str[j+1],temp); count[j+1]=t;
}
else if(count[j]==count[j+1])
{
if((strcmp(str[j],str[j+1])>0))
{
strcpy(temp,str[j]); t=count[j];
strcpy(str[j],str[j+1]); count[j]=count[j+1];
strcpy(str[j+1],temp); count[j+1]=t;
}
}
}
}
//输出
for(i=0;i<=n;i++)
for(j=0;j<i;j++)
if((strcmp(str[i],str[j]))==0)
str[i][0]='\0';
num=n; //num 用于计算单词个数
for(i=0;i<=n;i++)
if(str[i][0]=='\0')
num--;
if(num>=5)
num=5;
for(i=0,j=0;j<num;i++)
{
if(str[i][0]!='\0')
{ printf("%s %d\n",str[i],count[i]); j++;}
}
return 0;
}