2030

 

奇怪 为什么判断最高位为1 不能进行和0x80进行位运算呢?

原来是0x80存储不是一个Byte 强制转换一下就可以了

巧妙运用%*c 和 getchar()组合的场合

注意这个char c

之前因为没有用字符接收getchar()导致后面又一次getchar()读取其他数据了

 

 

#include <stdio.h>

int main(void)
{
    int n,i,count;
    char c;
    while(scanf("%d%*c",&n))
    {
        for(i = 0;i < n;i++)
        {
            count = 0;
            for(;(c = getchar())!= '\n';)
            {
               if(c & (char)0x80 != 0)
                 count++;
            }

            printf("%d\n",count/2);
        }
    }
    return 0;
}

 

参考答案

#include <stdio.h>
#include <string.h>

int main(void)
{
    int n;
    int count;
    char c;

    scanf("%d%*c", &n);

    while (n--)
    {
        count = 0;

        while ((c = getchar()) != '\n')
        {
            if (c < 0)
                count++;
        }

        printf("%d\n", count / 2);
    }

    return 0;
}

  

posted @ 2016-03-29 22:30  ailx10  阅读(207)  评论(0编辑  收藏  举报