首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

打印全部汉字(趣味题)

2013-04-26 
打印所有汉字(趣味题)//char* pstr @//GB2312的汉字编码规则为:第一个字节的值在0xB0到0xF7之间,第//

打印所有汉字(趣味题)
//char* pstr = "@";
//GB2312的汉字编码规则为:第一个字节的值在0xB0到0xF7之间,第
//二个字节的值在0xA0到0xFE之间。
char pstr0[]={(char)0xB0,(char)0xA0,char(0)};
char pstr1[]={(char)0xA0,(char)0xFE,char(0)};

可以吗,全部打印
[解决办法]
对编码不了解,照你这么说好像通过循环移位相加就好了
[解决办法]

    for (short i = 0xB0; i != 0xF8; ++i)
    {
        for (short j = 0xA0; j != 0XFF; ++j)
        {
            printf("%c%c" ,i ,j);
        }
    }

[解决办法]
#include "stdafx.h"
#include <Windows.h>

int main()
{
char cTemp [3] = {0};
for ( BYTE byte_one = 0xB0 ; byte_one < 0xF7 ; ++byte_one )
{
for ( BYTE byte_two = 0xA0 ; byte_two < 0xFE ; ++byte_two )
{
cTemp[0] = byte_one;
cTemp[1] = byte_two;
printf( "%s " , cTemp );
}
}
return 0;
}
[解决办法]
=。=应该有点小问题。。自己想吧。。去吃饭了
[解决办法]
#pragma comment(lib,"gdi32")
#include <windows.h>
#include <stdio.h>

int main() {
    const DWORD uWidth = 18 + 17 * 256, uHeight = 18 + 17 * 128;

    PBITMAPINFO pbmi = (PBITMAPINFO) LocalAlloc (LPTR, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2);
    pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
    pbmi->bmiHeader.biWidth = uWidth;
    pbmi->bmiHeader.biHeight = uHeight;
    pbmi->bmiHeader.biPlanes = 1;
    pbmi->bmiHeader.biBitCount = 1;
    pbmi->bmiHeader.biSizeImage = ((uWidth + 31) & ~31) / 8 * uHeight;
    pbmi->bmiColors[0].rgbBlue = 0;
    pbmi->bmiColors[0].rgbGreen = 0;
    pbmi->bmiColors[0].rgbRed = 0;
    pbmi->bmiColors[1].rgbBlue = 255;
    pbmi->bmiColors[1].rgbGreen = 255;
    pbmi->bmiColors[1].rgbRed = 255;

    HDC hDC = CreateCompatibleDC (0);
    void * pvBits;
    HBITMAP hBitmap = CreateDIBSection (hDC, pbmi, 0, &pvBits, NULL, 0);
    SelectObject (hDC, hBitmap);
    HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体");


//  HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "宋体");
    SelectObject (hDC, hFont);
    BitBlt (hDC, 0, 0, uWidth, uHeight, NULL, 0, 0, WHITENESS);

    char c[4];
    int i, j;
    for (i = 128; i < 256; i++) {
        sprintf (c, "%02X", i);
        TextOut (hDC, 1, (i - 127) * 17 + 1, c, 2);
    }
    for (j = 0; j < 256; j++) {
        sprintf (c, "%02X", j);
        TextOut (hDC, (j + 1)* 17 + 1, 1, c, 2);
    }
    for (i = 128; i < 256; i++) {
        for (j = 0; j < 256; j++) {
            c[0] = (char) i;
            c[1] = (char) j;
            TextOut (hDC, (j + 1) * 17 + 1, (i - 127) * 17 + 1, c, 2);
        }
    }
    for (i = 0; i < 130; i++) {
        MoveToEx (hDC, 0, i * 17, NULL);
        LineTo (hDC, uWidth, i * 17);
    }
    for (j = 0; j < 258; j++) {
        MoveToEx (hDC, j * 17, 0, NULL);
        LineTo (hDC, j * 17, uHeight);
    }

    BITMAPFILEHEADER bmfh;
    bmfh.bfType = *(PWORD) "BM";
    bmfh.bfReserved1 = 0;
    bmfh.bfReserved2 = 0;
    bmfh.bfOffBits = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2;
    bmfh.bfSize = bmfh.bfOffBits + pbmi->bmiHeader.biSizeImage;

    HANDLE hFile = CreateFile ("goal.bmp", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
    if (hFile != INVALID_HANDLE_VALUE) {
        DWORD dwWritten;
        WriteFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwWritten, NULL);
        WriteFile (hFile, pbmi, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2, &dwWritten, NULL);
        WriteFile (hFile, pvBits, pbmi->bmiHeader.biSizeImage, &dwWritten, NULL);



        CloseHandle (hFile);
    }

    DeleteObject (hFont);
    DeleteObject (hBitmap);
    DeleteDC (hDC);
    LocalFree (pbmi);

    return 0;
}


编译链接运行,用PhotoShop查看goal.bmp
[解决办法]
#include "stdafx.h"
#include <Windows.h>

int main()
{
char cTemp [3] = {0};
for ( BYTE byte_one = 0xB0 ; byte_one < 0xF7 ; ++byte_one )
{
for ( BYTE byte_two = 0xA0 ; byte_two < 0xFE ; ++byte_two )
{
cTemp[0] = byte_one;
cTemp[1] = byte_two;
printf( "%c " , cTemp );
}
}
return 0;
}
[解决办法]
5楼正解!打印全部汉字(趣味题)
[解决办法]
#include <Windows.h>
#include <stdio.h>

int main()
{
char cTemp [3] = {0};
for ( BYTE byte_one = 0xB0 ; byte_one < 0xF7 ; ++byte_one )
{
for ( BYTE byte_two = 0xA0 ; byte_two < 0xFE ; ++byte_two )
{
cTemp[0] = byte_one;
cTemp[1] = byte_two;
printf( "%s " , cTemp );
}
}
return 0;
}

[解决办法]
9楼需要加一句
setlocale(LC_ALL,"chs");

热点排行