各位大大!请问要怎么随机生成汉字啊!
要实例!谢谢!!!

解决方案 »

  1.   

    随机生成汉字分两步进行,汉字是双字节
    高字节范围是 x1-x2(具体自己查)
    高字节范围是 y1-y2(具体自己查)
    1.随机产生两个索引
    srand(GetTickCount());
    nLowPart = rand()%(x2-x1+1) + x1;
    nHighPart = rand()%(y2-y1+1) + y1;
    2.拼接索引显示汉字
    unsigned char Chinese[3] = "??\0";
    Chinese[0] = nHighPart;
    Chinese[1] = nLowPart;
    printf("汉字为:%s\n",Chinese);
      

  2.   

    楼主,先看你要生成的汉字是什么编码的,如果是GB2312的话,我以前就做过汉字编码的程序.2字节,第1字节,从0xB0 ~ 0xF7,第二字节 0xa1 ~ 0xFE. 最后的0xF7A1 一段,最后有几个字是没有的.
    楼主只要生成 1 字节 0xB0~0xF6 ,2 字节 0xa1 ~ 0xFE,就够随机的了.
      

  3.   


    srand((unsigned)time(NULL));
    int iRange1 = 0xf7 - 0xb0;
    int iRange2 = 0xfe - 0xa1;
    for (int i=0;i<10;++i)
    {
    BYTE iCode1 = rand()%iRange1 + 0xb0;
    BYTE iCode2 = rand()%iRange2 + 0xa1;
    char ch[3] = {iCode1,iCode2,0};
    cout<<ch<<endl;
    }
    试过是可行的代码
      

  4.   


    #include <fstream>
    #include <iostream>
    using namespace std;int main(){
    int iRange1 = 0xf7 - 0xb0 + 1;
    int iRange2 = 0xfe - 0xa1 + 1;
    char ch[3];
    ofstream ofs("hanzi.txt");
    for (int i=0;i<iRange1;++i)
    {
    sprintf(ch,"%02d",i);
    ch[2] = ' ';
    ofs.write(ch,3);
    for (int j=1;j<=iRange2;++j)
    {
    ch[0] = i + 0xb0;
    ch[1] = j + 0xa0;
    ch[2] = ' ';
    ofs.write(ch,3);
    if ((j+1)%16 == 0)
    {
    ofs.write(&"\n",1);
    }
    }
    ch[0] = ch[1] = ch[2] = ' ';
    ofs.write(ch,3);
    ofs.write(&"\n\n",2);
    }
    ofs.close(); cout<<"hanzi create ok!,press and key to exit."<<endl;
    cin.get(); return 0;
    }
    写了一个生成全部 GB2312 汉字的程序,可以试试.知道汉字怎么编码,要生成随机就很容易了.
      

  5.   

    GB2312或GB2312-80是一个简体中文字符集的中国国家标准,全称为《信息交换用汉字编码字符集--基本集》,由中国国家标准总局发布,1981年5月1日实施。GB2312编码通行于大陆;新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB2312。  GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄罗斯语西里尔字母在内的682个全形字符。  GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖99.75%的使用频率。  对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB18030汉字字符集的出现。分区表示
      GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。    01-09区为特殊符号。 
        16-55区为一级汉字,按拼音排序。 
        56-87区为二级汉字,按部首/笔画排序。 
        10-15区及88-94区则未有编码。    举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。  字节结构
      在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。  每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。“高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。例如“啊”字在大多数程序中,会以0xB0A1储存。(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。