(头歌)C语言程序设计-----------第3章 基本数据类型及数据的输入输出

本文介绍了C语言中字符型和整型的通用性,包括ASCII码的大小规则和汉字编码标准,如GB2312。此外,还讲解了转义字符的使用,以及浮点数的输入与输出。通过示例代码展示了如何进行浮点数转换和格式化输入输出。
摘要由CSDN通过智能技术生成

第1关:数值与字符的通用性实验

任务描述

本关任务:了解C语言中字符型和整型的通用性

相关知识

为了完成本关任务,你需要掌握了解和掌握以下知识

ASCII表

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

大小规则

常见ASCII码的大小规则:09<AZ<a~z。 数字比字母要小。如 “7”<“F”; 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ; 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ; 同个字母的大写字母比小写字母要小32。如“A”<“a” 。 几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。

汉字编码

目前的文字编码标准主要有 ASCII、GB2312、GBK、Unicode等。ASCII 编码是最简单的西文编码方案。GB2312、GBK、GB18030 是汉字字符编码方案的国家标准。ISO/IEC 10646 和 Unicode 都是全球字符编码的国际标准。 ######GB2312-80 标准 GB2312-80 是 1980 年制定的中国汉字编码国家标准。共收录 7445 个字符,其中汉字 6763 个。GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为 1。具体办法是:收集了 7445 个字符组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为“区位码”。区位输入法就是通过输入区位码实现汉字输入的。将区号和位号分别加上 20H,得到的 4 位十六进制整数称为国标码,编码范围为 0x2121~0x7E7E。为了兼容标准 ASCII 码,给国标码的每个字节加 80H,形成的编码称为机内码,简称内码,是汉字在机器中实际的存储代码GB2312-80 标准的内码范围是 0xA1A1~0xFEFE。 ######GBK 编码标准 《汉字内码扩展规范》(GBK) 于1995年制定,兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码,编码空间为 0x8140~0xFEFE,共有 23940 个码位,其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。GBK向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。ISO 10646 是国际标准化组织ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的Unicode编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1)。

换行符

格式化输出语句,代码"\n"(new line),输出时将切换一行。

编程要求

根据提示,在右侧编辑器补充代码,输出字母p-Q的数值大小,理解英文姓名排序方法。

测试说明

输出结果,并换行,使光标移动至下一行。

 代码如下:


/**

    2020年2月9日

    这里是文档注释,你可以添加程序相关的功能、编者、时间等信息

*/

// 程序需要借用的标准头文件

#include <stdio.h>//插入标准化输入输出头文件

//主程序

int main()

{

    //请在此输入需要执行的代码

    char a='p',b='Q';

    a=a-b;

    printf("%d\n",a);// C11 即2011版标准要求所有的函数均需要返回

    return 0;

}


第2关:转义字符实验

任务描述

本关任务:了解并掌握转义字符的使用

相关知识

为了完成本关任务,你需要掌握了解和掌握以下知识

ASCII表

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。

大小规则

常见ASCII码的大小规则:09<AZ<a~z。 数字比字母要小。如 “7”<“F”; 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ; 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ; 同个字母的大写字母比小写字母要小32。如“A”<“a” 。 几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。

转义字符

字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。

转义字符以\或者\x开头,以\开头表示后跟八进制形式的编码值,以\x开头表示后跟十六进制形式的编码值。对于转义字符来说,只能使用八进制或者十六进制。

字符 1、2、3、a、b、c 对应的 ASCII 码的八进制形式分别是 61、62、63、141、142、143,十六进制形式分别是 31、32、33、61、62、63。下面的例子演示了转义字符的用法: '''java char a = '\61'; //字符1 char b = '\141'; //字符a char c = '\x31'; //字符1 char d = '\x61'; //字符a char *str1 = "\x31\x32\x33\x61\x62\x63"; //字符串"123abc" char *str2 = "\61\62\63\141\142\143"; //字符串"123abc" char *str3 = "The string is: \61\62\63\x61\x62\x63" //混用八进制和十六进制形式 ''' 转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串中可以同时使用八进制形式和十六进制形式。 转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限: 八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177; 十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\7f。 超出范围的转义字符的行为是未定义的,有的编译器会将编码值直接输出,有的编译器会报错。

对于 ASCII 编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,甚至无法从键盘输入,只能用转义字符的形式来表示。不过,直接使用 ASCII 码记忆不方便,也不容易理解,所以,针对常用的控制字符,C语言又定义了简写方式,完整的列表如下:

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT)009
\v垂直制表(VT)011
'单引号039
"双引号034
\反斜杠092

编程要求

根据提示,在右侧编辑器补充代码,将字母和数字结果间隔一个TAB位分行显示出来,注意换行。

测试说明

输出结果,并换行,使光标移动至下一行。

代码如下


/**

    2020年2月9日

    这里是文档注释,你可以添加程序相关的功能、编者、时间等信息

*/

// 程序需要借用的标准头文件

#include <stdio.h>//插入标准化输入输出头文件

//主程序

int main()

{

    //请在此输入需要执行的代码

    char a='X',b='Y',c='Z';

    int x=3,y=4,z=5;

    printf("%c\t%c\t%c\n",a,b,c);

    printf("%d\t%d\t%d",x,y,z); // C11 即2011版标准要求所有的函数均需要返回

    return 0;

}


第3关:浮点数实验

任务描述

本关任务:理解并掌握浮点数的使用。

相关知识

为了完成本关任务,你需要掌握了解和掌握以下知识

格式化输入

C语言有多个函数可以从键盘获得用户输入,它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。 getchar()、getche()、getch():这三个函数都用于输入单个字符。 gets():获取一行数据,并作为字符串处理。 #####参数详解 |格式化符号|参数详解| |---|---| |%a| 浮点数、十六进制数字和p-记数法(C99)| |%A|    浮点数、十六进制数字和p-记法(C99)| |%c|     一个字符(char)| |%C| 一个ISO宽字符| |%d|    有符号十进制整数(int)(%e    浮点数、e-记数法| |%E|    浮点数、E-记数法| |%f|     单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数)| |%g|    根据数值不同自动选择%f或%e.| |%G|    根据数值不同自动选择%f或%e.| |%i| 有符号十进制数(与%d相同)| |%o|    无符号八进制整数| |%p|    指针| |%s|     对应字符串char(%S对应宽字符串WCAHR(%u无符号十进制整数(unsigned int)| |%x|    使用十六进制数字0f的无符号十六进制整数 | |%X|    使用十六进制数字0f的无符号十六进制整数| |%%|    打印一个百分号|

实例解析

'''java float a,b,c; scanf("%d%d%d",&a,&b,&c); ''' 然后输入3 4 5(注意:默认情况下,中间允许以回车键,空格或TAB键间隔),则分别将3,4,5赋值给a,b,c,即:a=3,b=4,c=5,注意&符号表示取地址,是Scanf中必须注意的使用技巧。

浮点数的输出

编程要求

根据提示,在右侧编辑器补充代码,完成美国标准华氏度与国际标准摄氏度之间的转换:c=5(f-32)/9,并保留小数点后两位数字。

测试说明

输出结果,并换行,使光标移动至下一行。

代码如下


/**

    2020年2月9日

    这里是文档注释,你可以添加程序相关的功能、编者、时间等信息

*/

// 程序需要借用的标准头文件

#include <stdio.h>//插入标准化输入输出头文件

//主程序

int main(){

    //请在此输入需要执行的代码

    float Fahrenheit,Celsius;

    scanf("%f",&Fahrenheit);

    Celsius=5.0*(Fahrenheit-32)/9.0;

    printf("%.2f\n",Celsius);// C11 即2011版标准要求所有的函数均需要返回

    return 0;

}


第4关:数值类型综合实验

任务描述

本关任务:理解并掌握整数、浮点数的使用。

相关知识

为了完成本关任务,你需要掌握了解和掌握以下知识

格式化输入

C语言有多个函数可以从键盘获得用户输入,

它们分别是: scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。

getchar()、getche()、getch():这三个函数都用于输入单个字符。

gets():获取一行数据,并作为字符串处理。

#####参数详解 |格式化符号|参数详解|

|---|---|

|%a|         浮点数、十六进制数字和p-记数法(C99)|

|%A|   浮点数、十六进制数字和p-记法(C99)|

|%c|    一个字符(char)| |%C| 一个ISO宽字符|

|%d|    有符号十进制整数(int)(%e浮点数、e-记数法|

|%E|    浮点数、E-记数法|

|%f|   单精度浮点数(默认float)、十进制记数法(%.nf这里n表示精确到小数位后n位.十进制计数)|

|%g|    根据数值不同自动选择%f或%e.|

|%G|    根据数值不同自动选择%f或%e.|

|%i|           有符号十进制数(与%d相同)|

|%o|     无符号八进制整数|

|%p|     指针|

|%s|    对应字符串char(%S对应宽字符串WCAHR(%u无符号十进制整数(unsigned int)| |%x|   使用十六进制数字0f的无符号十六进制整数 |

|%X|   使用十六进制数字0f的无符号十六进制整数|

|%%|   打印一个百分号|

实例解析

'''java float a,b,c; scanf("%d%d%d",&a,&b,&c); ''' 然后输入3 4 5(注意:默认情况下,中间允许以回车键,空格或TAB键间隔),则分别将3,4,5赋值给a,b,c,即:a=3,b=4,c=5,注意&符号表示取地址,是Scanf中必须注意的使用技巧。

浮点数的输出

编程要求

根据提示,在右侧编辑器补充代码,要求输入学生的数学、英语和计算机课程的成绩(整数型)后,能够计算并给出该生3门课程的平均分(精确到小数点后1位)。

测试说明

输出结果“当数学成绩是87分,英语成绩是72分,计算机成绩是93分时,平均成绩为84.0分。”,并换行,使光标移动至下一行。

代码如下


/**

    2020年2月9日

    这里是文档注释,你可以添加程序相关的功能、编者、时间等信息

*/

// 程序需要借用的标准头文件

#include <stdio.h>//插入标准化输入输出头文件

//主程序

int main()

{

    //请在此输入需要执行的代码

    int mathScore,englishScore,computerScore;

    float average;

    printf("请输入数学、英语、计算机课程成绩:\n");

    scanf("%d%d%d",&mathScore,&englishScore,&computerScore);

    average=(mathScore+englishScore+computerScore)/3.0;

    printf("当数学成绩是%d分,英语成绩是%d分,计算机成绩是%d分时,平均成绩为%4.1f分。\n",mathScore,englishScore,computerScore,average);

    // C11 即2011版标准要求所有的函数均需要返回

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失棉的羊 .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值