第4章第1章基础知识1基础简介.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第4章第1章基础知识1基础简介.docx》由会员分享,可在线阅读,更多相关《第4章第1章基础知识1基础简介.docx(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第4章第1章基础知识1.1基础简介蓝桥比赛中,前几题往往会考查学生的基础知识,基础知识包含的内容很多,这里 选择几个知识点介绍。一、计算机中数据的表示计算机中数据分为数值型数据和非数值型数据。计算机中的数字、字母、符号等信息都必须转换成二进制数据保存在计算机中。这 样才能被计算机识别。能够进行算术运算得到明确数值概念的信息称为计算机数值数据,其余如字符、文 字、图像、声音等均为非数值数据。1 .数值类型数据的表示计算机中常用的进制包括十进制、八进制、十六进制和二进制。十进制以正常数字1-9开头,八进制以数字0开头,十六进制以0x(或0X)开头, 二进制不能在C语言中直接书写,部分编译器支持以0
2、b或0B开头的二进制数据表示。 例如:int a=12, b=012, c=0xl2;printf (%d %d %d,a, b, c);输出结果:12 10 18上述输出结果为十进制输出,数据要想以八进制或者十六进制的形式输出,需要改 变输出控制符,如下所示:printf (,z%d %o %x,a, b, c);输出结果:12 12 12那如何表示二进制数据呢?常用的方法就是采用字符数组的方式,下面例子实现了 如何将一个十进制数转换成二进制数并存储在字符数组中:while (num0) 辗转取余arr n+=num % 2+O;num/=2;).非数值类型数据非数值类型数据也是以二进制数据
3、形式保存在计算机中。最简单的就是字符数据, 其采用的编码是ASCH编码。ASCII码也是以整数形式存储在计算机中的,这个整数为 编码,常用的编码和字符对应如下:F号编码字符备注10NUL (NULL)多用于字符串结束标志213CR回车键3480其它字符广9的编码是依次是4957将一段字符转换成整数存放到一个变量中,常用的方法是: int chnum(char str)465A大写字母BZ的编码依次是6690597a小写字母bz的编码依次是98122int i, n, num=O;for(i=0;stri!= 0 ;i+)if (stri=, O &stri=,9)num=num*10+stri
4、O;return num;)另外,汉字的表示是采用国家标准的汉字字符集GB2312-80,对收录字符进行分区 管理:字库分成94个区,每个区有94个汉字(按位编排),每一个汉字在字库中有确 定的区和位编号,即所谓的两个字节表示的区位码,区位码第一个字节表示区号,第二 个字节表示位号,由区位码即可获取汉字在字库中的地址。GB2312内码范围:A1A1-FEFE, 其中汉字的编码范围是B0A1-F7FE,第一字节0xB0-0xF7,对应区号16-87;第二个字 节OxAl-OxFE,对应位号01-94。例:“啊”是GB2312中的第一个汉字,区位码是1601。 下面代码实现了汉字十六进制和十进制区
5、位码的计算:char a5;strcpy (a,“啊);printf Cz%XH%XHn,z, (unsigned char)aO, (unsigned char)al);int b=(unsigned char)a0*256+(unsigned char)a1;printf(%d,b);输出结果:B0HA1H45217每个汉字在字库中以点阵字模形式存储,一般为16X16点阵形式。每个点用一个 二进制位表示,存1的点,可以在屏幕上显示一个亮点,存0的点则不显示,存字的 16*16点阵信息在显示器上显示,即可出现对应汉字。二、进制转换不同进制的转换方式很多,基本上分为三类:十进制转其它进制,其它
6、进制转十进 制,其它进制之间的相互转换。这里以十进制转其它进制为例,介绍一下进制转换的思 想。十进制整数转换为其它进制(以2进制为例,其它进制都类似),采用方法是: 除2取余,逆排序法。具体做法是:用2去除十进制整数,可以得到一个商和余数; 再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把所有余 数按逆序排列,也就是把先得到的余数作为二进制数的低位有效位,后得到的余数作为 二进制数的高位有效位,依次排列起来。这就是所谓“除2取余,逆序排列”。十进制转换成其它n进制的方法也是类似,可以称之为“除n取余,逆排序。具 体十进制转换成n进制的案例程序如下:char Hex16二
7、0, 1, 2,A, B, C, D, E, F;scanf (d,&num); 十进制数scanf (姒; 要转换的进制2、16doresulti+=num%jz;num二num/jz;while(num!=O);for(i-; i=0; i-)输出结果printf (%c, Hex result i);三、闰年计算地球绕太阳的运行周期为365天5小时48分46秒(合365. 24219天),即一回归 年(tropical year)。公历的平年只有365天,比回归年短约0. 2422天,每四年累积 约一天,把这一天加于2月末(即2月29日),使当年的时间长度变为366天(广12 月分别为3
8、1天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30 天、31天),这一年就是闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078 天,经过400年就会多出大约3天来,因此,每400年中要减少3个闰年。闰年的计算, 归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。利用逻辑表达式表示:year%4=0 & year%100!=0year%400=0而对于每月天数的表示,由于也没有规律性,所以常用的表示方式是利用数组来表 示。如:int days13 = 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
9、;四、文件操作在程序中,经常会遇到需要读取的数据量比较大的情况,如果用键盘输入,则输入 时间较长,这时就需要用到文件操作了。常用的文件操作分成以下四步:一是打开文件;二是判断文件打开是否成功;三是 读取(写入)文件;四是关闭文件。例如:FILE *fp;fp=fopen(D:,r);if(fp=NULL)(printf (,zfail to open! n/z);return 0;while(!feof (fp)chi+=fgetc(fp);fclose (fp);由于程序竞赛中,往往只需要从文件中读入程序数据即可,为了简化读入过程,读 取文件数据最常用的方法就是文件重定向技术。常用的方式是使
10、用freopenO函数,其 声明为:FILE *freopen (const char ilename, const char *mode, FILE *stream);重定向技术的使用方法如下:将输入重定向到文件,后面的输入语句直接到文件中读取数据freopen(,r,stdin);将输出重定向到文件,后面的输出语句直接将数据输出到文件中freopen (,w,stdout);从文件中读取数据,存入变量中int a, b;scanf(%d %d, &a,&b);printf (%dn,a+b);关闭文件fclose (stdin);fclose (stdout);1.2购物单(2017试题A
11、)【题目描述】小明刚刚找到工作,老板人很好,只是老板夫人很爱购物。老板忙的时候经常让小明帮 忙到商场代为购物。小明很厌烦,但又不好推辞。这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折优惠的。小明也有个怪癖,不到万不得已,从不刷卡,直接现金搞定。现在小明很心烦,请你帮他计算一下,需要从取款机上取多少现金,才能搞定这次购物。取款机只能提供100元面额的纸币。小明想尽可能少取些现金,够用就行了。你的任务是计算出,小明最少需要取多少现金。以下是让人头疼的购物单,为了保护隐私,物品名称被隐藏了。180.9088折10. 2565折56. 149 折104. 659折100.3088折29
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础知识 基础 简介
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内