编写返回汉字拼音的第一个字母程序,送100分(续3)

bright5 2002-11-02 11:20:21
Public Function getHznm(hzStr As String) As String
'declare variable
Dim myHzm As Integer
Dim qm As Integer
Dim wm As Integer
Dim hznm As String
If Len(hzStr) > 1 Then
myHzm = Asc(Left(hzStr, 1))
Else
myHzm = Asc(hzStr)
End If
If myHzm >= 0 And myHzm < 256 Then
'字母
getHznm = hzStr
Else
'汉字
qm = (myHzm + 65536) \ 256
wm = (myHzm + 65536) Mod 256
'十进制到十六进制
getHznm = tento(qm, 16) & tento(wm, 16)
End If
End Function

'******自定义函数,对任意输入的汉字,可以得到它的拼音的第一个字母********
'//函数入口为汉字串,返回值为该汉字的第一个字母
Public Function getHzPy(hzStr As String) As String
'declare variable
Dim myHzm As Integer
Dim qm As Integer
Dim wm As Integer
Dim hznm As String
If Len(hzStr) > 1 Then
myHzm = Asc(Left(hzStr, 1))
Else
myHzm = Asc(hzStr)
End If
If myHzm >= 0 And myHzm < 256 Then
'字母
getHzPy = hzStr
Else
'汉字
qm = (myHzm + 65536) \ 256
wm = (myHzm + 65536) Mod 256
'十进制到十六进制
hznm = tento(qm, 16) & tento(wm, 16)
End If
If "B0A1" <= hznm And hznm <= "B0C4" Then
getHzPy = "A"
ElseIf "B0C5" <= hznm And hznm <= "B2C0" Then
getHzPy = "B"
ElseIf "B2C1" <= hznm And hznm <= "B4ED" Then
getHzPy = "C"
ElseIf "B4EE" <= hznm And hznm <= "B6E9" Then
getHzPy = "D"
ElseIf "B6EA" <= hznm And hznm <= "B7A1" Then
getHzPy = "E"
ElseIf "B7A2" <= hznm And hznm <= "B8C0" Then
getHzPy = "F"
ElseIf "B8C1" <= hznm And hznm <= "B9FD" Then
getHzPy = "G"
ElseIf "B9FE" <= hznm And hznm <= "BBF6" Then
getHzPy = "H"
ElseIf "BBF7" <= hznm And hznm <= "BFA5" Then
getHzPy = "J"
ElseIf "BFA6" <= hznm And hznm <= "C0AB" Then
getHzPy = "K"
ElseIf "C0AC" <= hznm And hznm <= "C2E7" Then
getHzPy = "L"
ElseIf "C2E8" <= hznm And hznm <= "C4C2" Then
getHzPy = "M"
ElseIf "C4C3" <= hznm And hznm <= "C5B5" Then
getHzPy = "N"
ElseIf "C5B6" <= hznm And hznm <= "C5BD" Then
getHzPy = "O"
ElseIf "C5BE" <= hznm And hznm <= "C6D9" Then
getHzPy = "P"
ElseIf "C6DA" <= hznm And hznm <= "C8BA" Then
getHzPy = "Q"
ElseIf "C8BB" <= hznm And hznm <= "C8F5" Then
getHzPy = "R"
ElseIf "C8F6" <= hznm And hznm <= "CBF9" Then
getHzPy = "S"
ElseIf "CBFA" <= hznm And hznm <= "CDD9" Then
getHzPy = "T"
ElseIf "CDDA" <= hznm And hznm <= "CEF3" Then
getHzPy = "W"
ElseIf "CEF4" <= hznm And hznm <= "D1B8" Then
getHzPy = "X"
ElseIf "D1B9" <= hznm And hznm <= "D4D0" Then
getHzPy = "Y"
ElseIf "D4D1" <= hznm And hznm <= "D7F9" Then
getHzPy = "Z"
Else
getHzPy = getpy(hzStr)
End If
End Function
'************************辅助函数,可以从十进制转换到任意进制**********************
'//入口为十进制数,要转换的进制,返回为该进制数
Public Function tento(m As Integer, n As Integer) As String
Dim q As Integer
Dim r As Integer
tento = ""
Dim bStr As String
Do
Call myDivide(m, n, q, r)
If r > 9 Then
bStr = Chr(55 + r)
Else
bStr = Str(r)
End If
tento = Trim(bStr) & tento
m = q
Loop While q <> 0
End Function
'************************辅助过程,得到任意两个数的商和余数***************************
Public Sub myDivide(num1 As Integer, num2 As Integer, q As Integer, r As Integer)
If num2 = 0 Then
MsgBox "非法除数", vbInformation, "信息"
Exit Sub
End If
If num1 / num2 >= 0 Then
q = Int(num1 / num2)
Else
q = Int(num1 / num2) + 1
End If
r = num1 Mod num2
End Sub


...全文
75 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
GoogleGeek 2002-11-03
  • 打赏
  • 举报
回复
void CHanZiDlg::OnButton1()
{
// TODO: Add your control notification handler code here

char ch;
CString str;
this->m_HanZiCtrl.GetWindowText(str);
ch=this->GetFirstCharacter((LPCTSTR)str);
str.Format("The first character is %c ",ch);
MessageBox(str,"psusong");


}

char CHanZiDlg::GetFirstCharacter(const char *str)
{
int temp1,temp2;
char getHzPy;

int len=strlen(str);
if(len>1)
{
temp1=*str+256;
temp2=*(str+1)+256;
}
else
{
getHzPy=*str;
return getHzPy;
}

int hznm=(temp1<<8)+temp2;
if( 0xB0A1 <= hznm&&hznm <= 0xB0C4 )
getHzPy = 'A';
else if(0xB0C5 <= hznm&& hznm <=0xB2C0)
getHzPy = 'B';
else if(0xB2C1 <= hznm &&hznm <= 0xB4ED)
getHzPy ='C';
else if(0xB4EE <= hznm &&hznm <= 0xB6E9)
getHzPy = 'D';
else if (0xB6EA <= hznm && hznm <= 0xB7A1)
getHzPy = 'E';
else if (0xB7A2 <= hznm && hznm <= 0xB8C0)
getHzPy = 'F';
else if (0xB8C1 <= hznm && hznm <= 0xB9FD)
getHzPy = 'G';
else if (0xB9FE<= hznm && hznm <= 0xBBF6)
getHzPy = 'H';
else if (0xBBF7<= hznm &&hznm <= 0xBFA5)
getHzPy ='J';
else if (0xBFA6 <= hznm && hznm <= 0xC0AB)
getHzPy = 'K';
else if (0xC0AC <= hznm && hznm <= 0xC2E7)
getHzPy = 'L';
else if (0xC2E8 <= hznm &&hznm <= 0xC4C2)
getHzPy = 'M';
else if (0xC4C3 <= hznm && hznm <= 0xC5B5)
getHzPy = 'N';
else if (0xC5B6 <= hznm &&hznm <= 0xC5BD)
getHzPy = 'O';
else if (0xC5BE<= hznm &&hznm <= 0xC6D9)
getHzPy ='P';
else if(0xC6DA <= hznm &&hznm <= 0xC8BA)
getHzPy = 'Q';
else if (0xC8BB <= hznm && hznm <= 0xC8F5)
getHzPy = 'R';
else if (0xC8F6 <= hznm &&hznm <= 0xCBF9)
getHzPy ='S';
else if (0xCBFA <= hznm &&hznm <= 0xCDD9)
getHzPy ='T';
else if (0xCDDA <= hznm && hznm <= 0xCEF3)
getHzPy = 'W';
else if (0xCEF4 <= hznm && hznm <= 0xD1B8)
getHzPy = 'X';
else if (0xD1B9 <= hznm && hznm <= 0xD4D0)
getHzPy = 'Y';
else if (0xD4D1 <= hznm &&hznm <= 0xD7F9)
getHzPy = 'Z';

return getHzPy;
}
bright5 2002-11-02
  • 打赏
  • 举报
回复
我是提问者,由于内容太长,写不下,全部内容请见:
编写返回汉字拼音的第一个字母程序,送100分http://expert.csdn.net/Expert/topic/1142/1142592.xml?temp=.3394434

编写返回汉字拼音的第一个字母程序,送100分(续1) http://expert.csdn.net/Expert/topic/1142/1142597.xml?temp=2.691287E-02

编写返回汉字拼音的第一个字母程序,送100分(续2)
http://expert.csdn.net/Expert/topic/1142/1142599.xml?temp=.7954218

编写返回汉字拼音的第一个字母程序,送100分(续3)http://expert.csdn.net/Expert/topic/1142/1142600.xml?temp=.2998468

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧