奇怪 为什么判断最高位为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;
}
原文:http://www.cnblogs.com/ailx10/p/5335131.html