题目链接:http://www.bnuoj.com/bnuoj/contest_show.php?cid=615#problem/7763

我的思路:通过关注字符串最后一个字母寻求解题思路!

代码:

#include <stdio.h>
#include <string.h>
int count[5];//存储各种情况学生的数量
char word[100];//存字串
void f()
{
int n=strlen(word),i,j;
char name[100];//暂时存学生姓名
memset(name,0,sizeof(name));
for(j=0,i=0;i<n;i++)//分离出name
{
if((word[i]>=’a’&&word[i]<=’z’)||(word[i]>=’A’&&word[i]<=’Z’))
{
name[j]=word[i];
j++;
}
else
break;
}
if(strlen(name)==n)//absent
{
count[3]++;
return;
}
if(word[n-1]==’y’)//最后回答出来的
{
if(strlen(name)+2==n)//present
count[0]++;
else
count[1]++;//study at home
}
if(word[n-1]==’s’)//同上
{
if(strlen(name)+4==n)
count[0]++;
else
count[1]++;
}
if(word[n-1]==’n’||word[n-1]==’o’)//没回答出来
count[2]++;
}
int main()
{
int T,i,k,puile;
scanf(“%d”,&T);
getchar();
for(k=1;k<=T;k++)
{
scanf(“%d”,&puile);
getchar();
for(i=0;i<4;i++)
count[i]=0;
for(i=0;i<puile;i++)
{
memset(word,0,sizeof(word));
gets(word);
f();
}
printf(“Roll-call: %d\n”,k);
printf(“Present: %d out of %d\n”,count[0],puile);
printf(“Needs to study at home: %d out of %d\n”,count[1],puile);
printf(“Needs remedial work after school: %d out of %d\n”,count[2],puile);
printf(“Absent: %d out of %d\n”,count[3],puile);
}
return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation