| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 572 人关注过本帖
标题:新手求助 感激不尽
只看楼主 加入收藏
junbin_23102
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2011-1-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
新手求助 感激不尽
求一段 用C语言写的 代码 用来统计一段文章中(英文中文混合的文章)的汉字    
搜索更多相关主题的帖子: C语言 英文 汉字 中文 文章 
2011-01-25 12:04
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
忽悠人是没有用滴
是金子始终会发光滴
怀才不遇只能是一个神话
瓜熟蒂落永远是对滴
2011-01-25 12:06
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:5 
可以吧,只要非a~z或A~Z就统计,标点符号你是否要统计

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-01-25 12:49
junbin_23102
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2011-1-25
收藏
得分:0 
回复 3楼 A13433758072
就是要把汉字和标点符号 区分开来
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char ch[1024],*p;
    int i,j,n,x;
    scanf("%d",&n);
    getchar();
    for(;n>0;n--)
    {
      x=0;
      gets(ch);
      p=ch;
      j=strlen(ch);
      for(i=0;i<j;i++)
      {
        if((unsigned char)*(p+i)>0x80)
        {
           i++;
           x++;              
        }      
      }
      printf("%d\n",x);      
    }
    system("pause");
   return 0;   
}
怎么区分呢?
2011-01-25 13:26
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
汉字的内码范围为 B0A0~F7A0,中文标点符号内码分布在
A1??的范围内,只要区分高字节的不同,就可以区分开汉字和标点了。
看看这个,增加个判断就行

帮人《---》帮己
2011-01-25 15:41
Amy_huyier
Rank: 4
等 级:业余侠客
帖 子:46
专家分:265
注 册:2011-1-24
收藏
得分:0 
统计汉字应该用unicode编码.
2011-01-25 16:19
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:15 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char ch[1024],*p;
    int i,j,n,x;
    scanf("%d",&n);
    getchar();
    for(;n>0;n--)
    {
      x=0;
      gets(ch);
      p=ch;
      j=strlen(ch);

      i=0;
      while(i<j)
      {
        if((unsigned char)*(p+i)>0x80 )//是汉字
            if((unsigned char)*(p+i)>=0xa1&&(unsigned char)*(p+i)<=0xa3)//是全角标点
                i+=2;//直接跳过
            else
            {
                i+=2;
                x++;             
            }
        else
            i++;
      }
      printf("%d\n",x);      
    }
    system("pause");

    /*char a[200]={,。‘?÷“};

    int i=0;
    for(i=0;i<6;i++)
        ;//printf("%x,",a[i]);
    printf("\n");*/



   return 0;   
}
对于中文标点符号自己测的高字节在0xa1和0xa3,并不全面,以后在补充下

帮人《---》帮己
2011-01-26 15:23
cacker
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-01-26 21:52
快速回复:新手求助 感激不尽
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024828 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved