杭电ACM-2030

题目:

2030题

代码:

#include<stdio.h>
int main()
{
    int n,i,k,cnt;
    char a[1000];
    while(~scanf("%d",&n))
    {
        getchar();
        for(i=0;i<n;i++)
        {
            cnt=0;
            gets(a);
            for(k=0;a[k]!='\0';k++)
            {
                if(a[k]<0)
                    cnt++;
            }
            printf("%d\n",cnt/2);
        }
    }
    return 0;
}

注意:
对于汉字机内码的问题:

1.一个汉字在字符串中是以两个负的字符形式存储,所以本题只要把字符串中负字符的个数找出来,再除以2 就OK了。

2.汉字机内码在计算机的表达方式的描述是,使用二个字节,每个字节最高位一位为1。 
计算机中, 补码第一位是符号位, 1 表示为 负数, 所以 汉字机内码的每个字节表示的十进制数都是负数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容