HDOJ 2030

统计给定文本文件中汉字的个数

汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。 
计算机中, 补码第一位是符号位, 1 表示为 负数, 
所以 汉字机内码的每个字节表示的十进制数都是负数
统计输入字符串含有几个汉字,只只需求出字符串中小于0的字符有几个,将它除以2就
得到答案  

 #include<stdio.h>
#include<string.h>
int main()
{
	int i,j,T;int cnt;
	char str[4096];
	scanf("%d%*c",&T);
	while(T--)
	{
		memset(str,0,sizeof(str));
		cnt=0;i=0;
		/*可能包含空格*/ 
		//scanf("%[^\n]",str);,可能与编译器有关,用它就WA啦 
		gets(str);
	//	puts(str);
		/*
		int len=strlen(str);
		printf("%d\n",len); 
		输入“我爱你”,输出6,所以最后需要除2
		*/ 
		/*
		不是'\n' ,且根据while循环性质,自增需要写在循环内部
		*/ 
		while(str[i]!='\0')
		{
			if(str[i]<0)
				cnt++;
				i++;
		}
		printf("%d\n",cnt>>1);
	}
	return 0;
}


/*
注意:\n是换行
\0是终结字符,例如一个字符串的终结。 所以用gets读入字符串时
用 while(str[i]!='\0')结尾 ,而用ch=getchar()时,要用'\n'结尾
*/   
原文地址:https://www.cnblogs.com/hxsyl/p/2560109.html