精华内容
下载资源
问答
  • C语言数组输入汉字

    千次阅读 2018-12-20 13:43:55
    #include<stdio.h> int main() { char name[4]={"刘备&...%s&am
    #include<stdio.h>
    int main()
    {
    	char name[7]={"刘备"};
    	printf("%s",name); 
     } 
    
    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼以下是我本人通过实例得出的结论,没有参照任何参考书。可能有不对的地方。哪里不对,情各位大虾指正。在说明之前,本人编写了一个小代码。#include#includeintmain(){...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    以下是我本人通过实例得出的结论,没有参照任何参考书。可能有不对的地方。

    哪里不对,情各位大虾指正。

    在说明之前,本人编写了一个小代码。

    #include

    #include

    int main()

    {

    char a[10];

    strcpy(a,"你好吗");

    for(int i=0;i<10;i++)

    printf("%X  ",(unsigned char)a[i]);

    printf("\n");

    puts(a);

    printf("\n");

    return 0;

    }

    大家可以调试运行一下。

    输出结果是。

    C4  E3  BA  C3  C2  F0  0  CC  CC  CC

    你好吗

    Press any key to continue

    字符串a中存放了3个汉字,每个char是占用一个字节。

    在C语言中汉字采用的是gb2312编码,每个汉字占两个字节。

    printf("%X  ",(unsigned char)a[i]);

    输出了每个char地址存放的数据的16进制码。

    两个char地址存放一个汉字。

    所以

    你=====C4  E3

    好=====BA  C3

    吗=====C2  F0

    最后由于是一个字符串。在该字符串的结尾又另外存放了一个\0,表示字符串结束。

    程序开头声明了char a[10];十个字符空间。

    对于没有存放数据的3个char空间默认存放了CC。

    a[0]表示的是“你”的gb2312编码的高八位

    a[1]表示的是“你”的gb2312编码的低八位

    a[2]表示的是“好”的gb2312编码的高八位

    a[3]表示的是“好”的gb2312编码的低八位

    a[4]表示的是“吗”的gb2312编码的高八位

    a[5]表示的是“吗”的gb2312编码的低八位

    a[0]表示的是“\0”的gb2312编码的ASCCII编码

    其实gb2312兼容是ASCII编码。对于英文字符和中文字符同时具有的字符串。

    请看下面这个例子。

    #include

    #include

    int main()

    {

    char a[20];

    strcpy(a,"你好吗mylove");

    for(int i=0;i<20;i++)

    printf("%X  ",(unsigned char)a[i]);

    printf("\n");

    puts(a);

    printf("\n");

    return 0;

    }

    输出结果

    C4  E3  BA  C3  C2  F0  6D  79  6C  6F  76  65  0  CC  CC  CC  CC  CC  CC  CC

    你好吗mylove

    从输出结果中我们可以看出总共使用了13个字节。

    其中“你好吗”占用6个字节

    “mylove”占用6个字节。

    字符串结束符占用1个字节。。

    这样大家对C语言中汉字的存储是不是很清晰的了解了呢?

    下面看C语言中汉字的输入。

    在头文件#include

    中的gets()可以实现汉字的输入。同样是gb2312码的输入。gb2312兼容了ASCII编码。

    好了,就写这些了。我的QQ号 791808990

    换用大家来交流。

    展开全文
  • 该楼层疑似违规已被系统折叠... 下面看C语言汉字输入。 在头文件#include 中的gets()可以实现汉字输入。同样是gb2312码的输入。gb2312兼容了ASCII编码。 好了,就写这些了。我的QQ号 791808990 换用大家来交流。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    以下是我本人通过实例得出的结论,没有参照任何参考书。可能有不对的地方。

    哪里不对,情各位大虾指正。

    在说明之前,本人编写了一个小代码。

    #include

    #include

    int main()

    {

    char a[10];

    strcpy(a,"你好吗");

    for(int i=0;i<10;i++)

    printf("%X  ",(unsigned char)a[i]);

    printf("\n");

    puts(a);

    printf("\n");

    return 0;

    }

    大家可以调试运行一下。

    输出结果是。

    C4  E3  BA  C3  C2  F0  0  CC  CC  CC

    你好吗

    Press any key to continue

    字符串a中存放了3个汉字,每个char是占用一个字节。

    在C语言中汉字采用的是gb2312编码,每个汉字占两个字节。

    printf("%X  ",(unsigned char)a[i]);

    输出了每个char地址存放的数据的16进制码。

    两个char地址存放一个汉字。

    所以

    你=====C4  E3

    好=====BA  C3

    吗=====C2  F0

    最后由于是一个字符串。在该字符串的结尾又另外存放了一个\0,表示字符串结束。

    程序开头声明了char a[10];十个字符空间。

    对于没有存放数据的3个char空间默认存放了CC。

    a[0]表示的是“你”的gb2312编码的高八位

    a[1]表示的是“你”的gb2312编码的低八位

    a[2]表示的是“好”的gb2312编码的高八位

    a[3]表示的是“好”的gb2312编码的低八位

    a[4]表示的是“吗”的gb2312编码的高八位

    a[5]表示的是“吗”的gb2312编码的低八位

    a[0]表示的是“\0”的gb2312编码的ASCCII编码

    其实gb2312兼容是ASCII编码。对于英文字符和中文字符同时具有的字符串。

    请看下面这个例子。

    #include

    #include

    int main()

    {

    char a[20];

    strcpy(a,"你好吗mylove");

    for(int i=0;i<20;i++)

    printf("%X  ",(unsigned char)a[i]);

    printf("\n");

    puts(a);

    printf("\n");

    return 0;

    }

    输出结果

    C4  E3  BA  C3  C2  F0  6D  79  6C  6F  76  65  0  CC  CC  CC  CC  CC  CC  CC

    你好吗mylove

    从输出结果中我们可以看出总共使用了13个字节。

    其中“你好吗”占用6个字节

    “mylove”占用6个字节。

    字符串结束符占用1个字节。。

    这样大家对C语言中汉字的存储是不是很清晰的了解了呢?

    下面看C语言中汉字的输入。

    在头文件#include

    中的gets()可以实现汉字的输入。同样是gb2312码的输入。gb2312兼容了ASCII编码。

    好了,就写这些了。我的QQ号 791808990

    换用大家来交流。

    展开全文
  • ; margin-right:0pt">输入一个正整数,为总汉字数。再输入一串汉字。统计各汉字出现次数并输出。</p>
  • 前几天看到一道统计输入文本中的文字的数目的题,一开始以为是统计英文,后来才发现是统计中文汉字的数目(毕竟统计英文字母这种事,咱也会),原题如下: 题目上有两个要求:输入、统计 以C语言为例: 要求一:...

    前几天看到一道统计输入文本中的文字的数目的题,一开始以为是统计英文,后来才发现是统计中文汉字的数目(毕竟统计英文字母这种事,咱也会),原题如下:

    在这里插入图片描述

    题目上有两个要求:输入统计

    以C语言为例:

    要求一:输入一页文字(so easy , man),采用数组存储,fgets()函数输入。

    要求二:其实统计数字和空格很简单,因为数字和空格都可以由一个字节来表示,如果这个字节的ASCII码在数字的ASCII码范围中或者等于空格,结果就很明确了。

    关键是统计文字。

    我们平时使用的是全角字符,大家都知道,半角字符几乎都能用一个ASCII码表示,但是汉字却不能,它需要使用两个或者多个字节才能正确表示。一个汉字跟全角字符在内存中存储的时候占两个字节,强行把这每一个字节当ASCII码来看的话,它的值是大于128的(但是对于计算机来说,最高位是符号位,也就是说,这个字节的ASCII码会被计算机解释成负数,这个可以用来判断是不是全角字符),也就是说每个字节的最高位是1,落在了扩展的ASCII码表上。GBK编码和这种处理方式类似,它也是采用两个字节来存储,所以判断汉字的时候,可以用这个全角字符的GB码(国标码)来判断。

    GB码相关资料:https://www.cnblogs.com/winnxm/archive/2009/12/15/1625088.html

    ​ https://segmentfault.com/a/1190000023809482

    判断是否存在全角字符:

    ​ 如上述,两个字节的ASCII码小于0,则存在。

    if(char[0] < 0 && char[1] < 0)

    判断是否为汉字

    ​ 一个全角字符的GB码等于高位和低位的ASCII码(两个二进制数,正值)连接在一起的数值。

    ​ 即GBcode = (unsigned char) char[0] * 256 + (unsigned char) char[1]

    ​ 对照GB2312简体中文编码表,汉字的GB码大于0xB0A0,所以

    if(GBcode > 0xB0A0)zhNum++;

    判断是否有全角的特殊符号,就可以用GB码小于0xB0A0(或者对应GB2312表查找对应的范围)

    源码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define Max 2048 //Assuming that the text is a maximum of 2048 bytes
    int main(){
        int zhNum=0,figNum=0,spNum=0;//They are the number of Chinese characters, Numbers and Spaces.
        char txt[Max];
        printf("Please enter the text:\n");//Prompt the user to input the text
        fgets(txt,Max,stdin);
        for(int i=0;i<strlen(txt);i++){
            if(txt[i]<0&&txt[i+1]<0){
                int GBK=(unsigned char)txt[i]*256+(unsigned char)txt[i];
                if(GBK>0xB0A0)
                    zhNum++;
                i++;//Because the full Angle character takes up two bytes, it goes straight to the next byte's next byte judgment
            }
            else if(txt[i]>='0'&&txt[i]<='9')figNum++;
            else if(txt[i]==' ')spNum++;
        }
        printf("Chinese characters' number is %d.\nThe number of figure is %d.\nThe number of spaces is %d.\n",zhNum,figNum,spNum);
        return 0;
    }
    
    展开全文
  • 这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。最早的程序就是0和1的数字,不是中文也不是英文。以前的程序员,每天写程序就是在一条长长的纸带上打孔表示0和1。...
  • c语言输入系统 -- 全拼汉字输入

    千次阅读 2007-05-18 03:54:00
    若要转贴或使用本文章介绍的技术,请在你发布的文章或作品中注明出处。 这个是很久以前的一个作品,可能很多...这里我是做了简单的全拼输入法,每次只能输入一个文字,且不具有联想功能(有兴趣的朋友可以去实现这样的
  • 请问:C语言中可以输入中文吗?要怎样转换啊?
  • 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~ Sample Input 2 WaHaHa! ...
  • C中的汉字用“机内码”,一个汉字两字节,最高位都是1,所以可以用下列代码求得一个字符串里汉字的个数: #include&lt;stdio.h&gt; #include&lt;string.h&gt; int main() { char s[1000]; int cn,i,...
  • char str[]={ 0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x02,0x80,0x04,0x60,0x1A,0x1E,0xE1,0x08,0x1F,0xE0,0x00,0x40,0x02,0x80,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x...
  • C语言 scanf 设置为%d却输入汉字出现循环问题解决 我们小伙伴在学习C语言时可能会遇到这样的问题:scanf("%d",&n);然后不小心输入了汉字,结果就不对了,出现循环,有些编译器可能还会直接崩溃,所以我查阅资料发现...
  • 我在学习C语言的时候用的TURBOC2可是不能显示汉字通过网上了解到可以在UCDOS下显示汉字但是每次使用TC的时候就要在DOS环境下通过命令先找到UCDOS然后加载汉字显示程序再调用BURBOC2中的TC每次使用带有五笔等汉字...
  • 不太清楚汉字在计算机中是如何存储的,想知道例如微软的智能ABC以及搜狗输入法是怎样实现拼音拼写下的汉字输入
  • 学习过C语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中...
  • 编写程序,根据用户的中文输入,在屏幕上输出相应的汉字点阵(用户一次输入一个汉字),如图 17.1 所示。要求程序能以正常、斜体、加宽、加高四种不同的方式显示汉字点阵,并能设置汉字点阵的字符图案。 第一部分:...
  • 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。  [Hint:]从汉字机内码的特点考虑~    Sample Input 2 WaHaHa!...
  • C语言ASCII码转汉字方法

    千次阅读 多人点赞 2019-03-03 19:54:44
    在运行至下图的效果之后,输入任意字符就会进入一个一直输出心的无限循环中,但是其颜色会与之前输出的不一样。  在弄懂怎么样设置控制台字符颜色之后,我就对“我喜欢你”这几个汉字起了兴趣,代码中明明没有...
  • 学习过C语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中...
  • 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~ Sample Input 2 ...
  • 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~ Sample Input 2 ...
  • 汉字倒序输出(C语言)

    2021-01-01 12:04:49
    我们知道一个汉字是两个字符,我们也会字符的输入输出,但用字符而不是字符串输出汉字你试过吗? 接下来我演示一下: #include<stdio.h> int main() { char Chinese[99]; int i; gets(Chinese);//字符串...
  • c语言从字符串逐个输出汉字 #include <wchar.h> #include <locale.h> //scanf、printf都只能输入、输出不加L的窄字符 //输入、输出宽字符串可以使用 <wchar.h> 头文件中的wscanf、wprintf 函数,...
  • C语言程序中处理汉字(修正版)

    千次阅读 2012-10-25 10:00:48
    学习过C语言的人也许有时会遇到这样一个问题:如何用变量存储汉字以及对这些变量进行操作。目前许多C语言参考书中都没涉及到这个问题,程序中多为处理英文变量和英文字符串,涉及到汉字的情况也大都是在printf语句中...
  • 例如我想打印“你好” 该怎么打印前提是不输入汉字用ascll打印 谢谢大神们
  • 最近在完成数据结构作业,在代码过程中经常遇到一些小问题,比如在输出字符串数组时,在一串自己想要的字符后面经常会出现一些不知名的汉字乱码。 (这段代码是去除字符数组里面重复数组元素) #include "header....
  • hdu2030 汉字统计(C语言

    千次阅读 2017-07-26 22:07:17
    输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。   Output 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 [Hint:]从汉字机内码的特点考虑~   Sample Input 2 W
  • #include<stdio.h> int main(void) ... printf("请输入一个或多个汉字:"); scanf("%s",BM); for(len=0;BM[len]!='\0';len++); for(i=0;i<len;i++) printf("BM[%d]=%x\n",i,BM[i]); //输入"向",

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

c语言输入汉字

c语言 订阅