您的位置:首页 > 其它

【UVaOJ 409】Excuses, Excuses!

2013-08-03 21:16 183 查看
终于有一个做对了的程序了!!!!!献出了我暑假的第一次!!!

1.英语很重要啊! 

     Ito 伊藤(看来是个日本名字)

     subpoena  传讯

     jury 陪审团,评审委员会

     lame  无说服力的;【另一个重要意思】跛脚的

     goofy  愚笨的

2.问题:

    (1)终止输入(EOF);

    (2)存储关键字(keywords)和证据(excuses);

    (3)找出关键字最多的证据;

3.翠花上代码:

#include <stdio.h>
#include <string.h>
#define M 25                                                                     //定义常数(比k、e的范围大五)
char key[M][M],exc[M][75];                                                       //定义为外部变量方便在外部函数中使用
int countkey(char e[],int k)                                                     //(3)设计一个函数,数出证据中关键字的个数<count>
{
int i,j,count=0,m=0;
char temp[75];                            //用temp字符串读取并储存证据中的每一个单词(几个重要环节,m++,最后m='\0',strcmp函数比较)
for(i=0; i<strlen(e); i++)
{
if(e[i]>='A'&&e[i]<='Z') temp[m++]=e[i]+32;
else if(e[i]>='a'&&e[i]<='z') temp[m++]=e[i];
else
{
temp[m]='\0';
m=0;
for(j=0; j<k; j++)
if(strcmp(temp,key[j])==0) count++;
}
}
return count;
}
int main()
{
int n[M],k,e,i,j,num=1,maxn;
while(scanf("%d %d",&k,&e)==2)                               //(1)输入整形数据最后退出的方法
{
maxn=0;
getchar();                                               //为什么有这两句话?????
for(i=0; i<k; i++)
scanf("%s",&key[i]);
getchar();
for(i=0; i<e; i++)
fgets(exc[i],75,stdin);                              //(2)将输入的关键字和证据存储到这两个二维字符串数组中
for(j=0; j<e; j++)                                       //得到证据中关键字最多的数目maxn
{
n[j]=countkey(exc[j],k);
if(maxn<n[j]) maxn=n[j];
}
printf("Excuse Set #%d\n",num);                          //每个set有一个本句输出
for(j=0; j<e; j++)                                       //找到并输出关键字数为maxn的证据
{
if(n[j]==maxn)
{
printf("%s",exc[j]);
}
}
num++;
printf("\n");
}
return 0;
}

 4.经验:

      做题前把所有需要的数据的范围明确出来。有利于确立所定义的常数的值。

      

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: