1、奇怪第一次交这个程序编译错误,第二次就AC了。
2、注意strcmp的比较是到\0为止,所以要把\n也写进去。(fgets读一行包括\n,并在末尾添加\0)
3、枚举是最简单的,LRJ说程序正确是最关键的,所以虽然代码有点弱智,但也无所谓好看不好看了。
4、题目考察ASCII码,有o的地方就是1,有空格的地方就是0,二进制转化为十进制,不难。
#include <stdio.h>
#include <string.h>
int factorial(int i);
int main(void)
{
char s[15]="";
int i,ch;
while(fgets(s,15,stdin)!=NULL)
{
ch=0;
if(strcmp("___________\n",s)==0) continue;
for(i=2;i<=9;i++)
{
if(i>=2&&i<=5&&s[i]=='o')
ch+=factorial(8-i);
else if(i>=7&&i<=9&&s[i]=='o')
ch+=factorial(9-i);
}
printf("%c",ch);
}
return 0;
}
int factorial(int i)
{
switch(i)
{
case 0:return 1;
case 1:return 2;
case 2:return 4;
case 3:return 8;
case 4:return 16;
case 5:return 32;
case 6:return 64;
}
}