授人以渔,不授人以鱼。
// 打印九九乘数表 #include <locale.h> #include <stdio.h> #include <string.h> #include <conio.h> struct HzNumber { int code; wchar_t ch1; wchar_t ch2; }; const HzNumber hzNumber[] = { { 0, L'〇', L'零' }, { 1, L'一', L'壹' }, { 2, L'二', L'贰' }, { 3, L'三', L'叁' }, { 4, L'四', L'肆' }, { 5, L'五', L'伍' }, { 6, L'六', L'陆' }, { 7, L'七', L'柒'}, { 8, L'八', L'捌' }, { 9, L'九', L'玖' }, { 10, L'十', L'拾' }, { 100, L'百', L'佰' }, { 1000, L'千', L'仟' }, { 10000, L'万', L'万' } }; void Pause(void); wchar_t* PutNumber(int i, wchar_t* buffer, size_t count); void wmain(void) { setlocale(LC_ALL, "chs"); for (int y = 1; y < 10; ++y) { for (int x = 1; x <= y; ++x) { wchar_t str[10] = { L'\0' }; wchar_t buffer[5]; wcscat_s(str, sizeof(str) / sizeof(wchar_t), PutNumber(x, buffer, sizeof(buffer) / sizeof(wchar_t))); wcscat_s(str, sizeof(str) / sizeof(wchar_t), PutNumber(y, buffer, sizeof(buffer) / sizeof(wchar_t))); if (x * y < 10) { wcscat_s(str, sizeof(str) / sizeof(wchar_t), L"得"); } wcscat_s(str, sizeof(str) / sizeof(wchar_t), PutNumber(x * y, buffer, sizeof(buffer) / sizeof(wchar_t))); wprintf_s(L"%s", str); wprintf_s((wcslen(str) < 5) ? L" " : L" "); } putwchar(L'\n'); } Pause(); } void Pause(void) { wprintf_s(L"\n按任意键继续..."); _getwch(); } wchar_t* PutNumber(int i, wchar_t* buffer, size_t count) { if ((i / 10) != 0) { swprintf(buffer, count, L"%c%c", hzNumber[i / 10].ch1, hzNumber[10].ch1); size_t len = wcslen(buffer); if ((i % 10) != 0) { buffer[len] = hzNumber[i % 10].ch1; buffer[len+1] = L'\0'; } } else { swprintf(buffer, count, L"%c", hzNumber[i].ch1); } return buffer; }