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

C小例题求解:输入字符数字转换成数字,怎么输出中文字

2012-02-29 
C小例题求解:输入字符数字转换成数字,如何输出中文字.例题1:#includestdio.h#include conio.hintmain(

C小例题求解:输入字符数字转换成数字,如何输出中文字.
例题1:
#include   <stdio.h>
#include <conio.h>
int   main(void)
{
  char   ch;
  printf( "输入字符,如何转换成数字\n ");
  printf( "请输入0~9的数字: ");
    ch=getche();
    //ch=ch- '0 ';       //这个减去一个字符 '0 '就转换成数字了
    ch=ch-0;   //直接减去一个数字,却不能转换   ??????????
      //还有别的转换方法吗??  
    printf( "\n你输入的是数字是%d\n ",ch);  
    system( "PAUSE ");        
    return   0;
}

这里是输入一个数字   字符,如何转换成数字了呢,我上面写了一种转换方法是书上看到的不知道原理,求解,还有没有别的转换方法呢。

例题2:
#include   <stdio.h>
#include   <conio.h>
int   main(void)
{  
    char   name[11];   //定义一个字符数组  
    int   str_num;   //计算字符长度  
    int   i;   //循环变量  
    printf( "如何输出中文字符\n ");  
    printf( "请输入中文字符串: ");  
    gets(name);
    //这里写个现实英文的
    str_num=strlen(name);   //计算字符长度
    printf( "一共输入了%d个字符\n ",str_num);
    for(i=0;i <str_num;i++)    
    {
          printf( "你输入了字符:%c\n ",name[i]);   //怎么输出中文呢,请指点下  
      }  
    system( "PAUSE ");        
    return   0;
}
我这里写的是输出字母可以,但我们知道中文是两个字符这因该怎么输出。
我试着把循环改为
    for(i=0;i <str_num;i+=2)    
    {
          printf( "你输入了字符:%s\n ",name[i]+name[i+1]);  
      }  
新手入门,望请谁解答下。


[解决办法]
1)
建议你查一下ASCII表,
字符  16进制  10进制
'0 ' 0x30 48
'1 ' 0x31 49
'2 ' 0x32 50
...
...
'9 ' 0x39 57
假入之前输入了字符 '2 '
ch=getche();之后,ch的值是 '2 '(即10进制的50)

所以 ch = ch - '0 ';等价于 ch = ch - 48; 即ch = 50 - 48
而 ch = ch - 0; 等价于 ch = '2 ' - 0; 即ch = 50 - 0

2)对于汉字,其ASCII码小于0
可以这样写:
#include <stdio.h>
#include <conio.h>
#include <dos.h>

int main(void)
{
char name[1000]; //定义一个字符数组
char s[3];
char *p = name;

int str_num; //计算字符长度
int i; //循环变量
printf( "如何输出中文字符\n ");
printf( "请输入中文字符串: ");
gets(name);

str_num=strlen(name); //计算字符长度


printf( "一共输入了%d个字符\n ",str_num);//汉字当做两个字符
i = 0;

while(*p)
{
if(*p > = 0)
{
//这是数字或字母等英文符号
printf( "你输入了字符:%c\n ",*p);


}
else
{
//这是汉字
//先将这个汉字拷贝到另外一个字符串s
s[0] = *p;
s[1] = *(p+1);
s[2] = 0;
printf( "你输入了字符:%s\n ",s); //输出这个汉字
p++; //汉字共要跳两个字符,所以这里先跳一个

}

p++; //跳一个字符
i++;
}
printf( "实际输入了%d个字符\n ",i);//汉字当作一个字符

system( "PAUSE ");
return 0;
}

热点排行