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'结尾 */
作者:火星十一郎
本文版权归作者火星十一郎所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.