奇怪 为什么判断最高位为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