汉字的机内码在计算机中占用两个字节,每个字节的最高位为1。
而计算机中每个字节的最高位表示符号位:1为负,0为正,
所以将汉字的每个字节单独表示成十进制数字的形式时为负数,
所以只要统计字符串中的负数的数量就行了,汉字的个数为负数的数量除以2.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char a[1024];
int n,m,s,i;
scanf("%d",&n);
getchar();
while(n--)
{
gets(a);
m = strlen(a);
for(s=i=0;i<m;i++)
{
if(a[i] < 0)
s++;
}
printf("%d\n",s/2);
}
return 0;
}