计算机:已知X=50,Y=65,计算X+Y(采用二进制编码方法计算求和,结果转为十进制数)?

无符号数,即没有正负号的数,是数的绝对值,在其面前添上正负号,便成了有符号的数。计算机的数均存放在寄存器中,通常我们称寄存器的位数为机器字长,当存放有符号数的时候,需要占用以为存放符合位,所有,如若机器字长为16位,那么: - 无符号数可表示的范围为 0 — 2^(16) -1 - 有符号数可表示的范围为 -2^15 — 2^(15) - 1

15次方是因为符号位占用了一位。 那么计算机如何表示有符号数呢?我们规定,用0表示正号,用1表示负号,这样符号也就被数字化了,并规定放在有效数据之前,例如: +0.1011 在机器中表示为0(小数点位置) 在机器中表示为1,1100(小数点位置) 为了方便区分手写的数和将符号数字化的数,我们把前者称为真值,后者称为机器数。即 -1100(真值) -> 11100(机器数) 将符号数字化以后带来了新的问题,运算时,符号位是否参与运算,如果是,那么如何处理?为了处理好这些问题,于是就引入了原码,补码,反码和移码等编码方式。

原码,又称带符号的绝对值表示,符号位为0表示正,为1表示负。用大白话来讲,就是直接将数值部分写成二进制数然后前面添上0或者1,用来表示正负号。

其实上面的公式我们只需要了解即可,实际的转换很简单 比如

注意: 1. 若字长为n+1,那么原码整数的表示范围为:

2. 原码中0的表示方式有两种:

0的原码表示方法不唯一

计算机中存放的数值方式大多数是用补码存放,计算(尤其是减法做加法运算时)时也通常采用补码运算方式,因此要对补码非常敏感。

反码,通常用来由原码求补码或者由补码求原码的过渡环节。 我们先看看数学定义:

所以,*记住上面的表示范围就够了*,我们具体看看运算过程,取反操作就是将原码中的0换成1,1换成0.就完事了。

X反 = 1,0010(当为负数的时候,符号位不变,数值位执行取反操作)

对于0来说,反码的表示方式也有两种(0,000或者1,111),这就自己去写了。

  • 三种机器码的最高位均为符号位,符号位与数值位用逗号隔开
  • 当真值为正时,原码补码反码表示方式相同。
  • 当真值为负时,三者表现都不同,但是符号位都用1表示,补码可以用“原码求反(不含符号位)后加1”求得。而反码是原码除了符号位以外的部分都进行取反操作。
  • 其中0在移码和补码中的表示方式都是唯一的。

当真值用补码表示的时候,由于符号位与数值位一起编码,这与习惯上表示不同,我们很难从补码形式上直接判断真值的大小。但是如果对每个真值位(注意不包含符号位),都加上一个2^n(n为整数位),那么在数轴上,移码表示的范围恰好对应真值在数轴上移动2的n次方个单元。所以叫做移码。

它常常用来表示浮点数的阶数,因为它只能表示整数。 对于移码来说,0的表示是唯一的,假设字长为6位(含一个符号位)那么0的表示为:

1. 0 的表示方式唯一

2. 对于同一个真值,移码和补码相差一个符号位,且相反,例如:-11110 补码为1,00010,移码为:000010

3. 引入移码是为了直观的判断真值大小,所以移码大,真值就大

  1. 整型(int):即定点整数,在寄存器中一般用补码表示,其最高位代表符号位,一般是4个字节。具体的位数跟变异平台有关。
  2. 无符号整数(unsigned):无符号,即不考虑数据位,二进制码表示的数就是其值。一般用补码表示。
  3. 长整型和短整型(long short):用补码表示,这只是位数不同罢了(一个长一个短)。
  4. 单精度浮点数和双精度浮点数(float double):就是我们平时说的小数点会移动的小数,前面的32位,后面的是64位。

数据间的保留,当计算记过超出机器所能表示的范围的时候,就会发生“溢出现象”。此时面临一个问题,那么是丢掉前面的N位还是丢掉后面的N位呢?一般我们选择保留后面的N位,丢掉前面的N位,若丢掉后发现不能表示正确的结果,说明产生溢出,还有一种情况就是不受影响了。

强制类型转换实际上是位值不变,只是改变了解释这些位的方式。

当数据太大,用二进制不好表示的时候我们选择用16进制(在之前提到过),分别是0x,0x86a1,0xffff1,可以看出大字节转向小字节的转换的规则是:低位直接赋值(赋几位就看你的数据占几位,比如short占2字节,16位,一个16进制数代表4位2进制数),高位直接截断。

输出的数用16进制表示我就不说了,结论:从短字长到长字长的转换,相应的位值不变,向高位补充的数为符号位,所以-4321前面的16位都是1,因为它符号位是负号,如果是正号,那就变成0.

四、定点数及其加减运算

定点数:小数点固定在某一个位置的数,有纯小数和纯整数之分。 假设数据用原码表示,那么: 纯小数可以表示为

对于纯整数,可以表示为:

对比前面两幅图,只是小数点的位置不一样而已,在末尾表示整数,在内部表示小数。那么为什么表示整数的时候我们要减去一个1呢?我们回想一下原码的表示范围就会发现,原来是原码中0可以有两种不同的表示方式,因此减去一个重复的0.

定点数的运算主要包括,移位,加,减,乘,除运算。其中移位运算是基础,加减运算是重点,乘除运算过程繁杂,不大可能在考试中出现。

计算机中的定点数的小数点位置都是事先约定好的,所以二进制的小数点移动相当于乘上或者除以2的指数。就很像我们十进制中的移位:

那么类比到二进制来说,就是乘上或者除以2^n。 对于有符号数的移位,我们称为算术移位,移位运算也称移位操作。

  • 无论是正数还是负数,移位前后符号位不变
  • 真值为正的时候,左右移动均添0
  • 若真值为负,那么分下面三种情况: (1) 原码添0 (2) 补码左移添0,右移添1 (3) 反码添1

1. 对于正数而言:左移的时候最高位可能丢1,即把1移出去了,造成溢出。反之,右移有可能把最低位的1移出去,影响数据的精度。

2. 对于负数而言:原码与上述情况一致,因为都是添0,而反码的左移添加的是1,右移也是如此,因此均会造成0的丢失影响精度。对于补码来说做移高位丢0,右移丢1,精度都不对。

计算机中,加法减法的运算是最基本的运算,其中我们平时的计算中也可以知道的是,减法可以当做加法进行运算。比如: A - B = A +(-B); 由于我们前面说过,引入补码的原因就是为了方便计算,所以我们都采用补码来进行运算的。

其中 [-B]补 称为求补后的减数,由[B]补,连同符号位在内,每位取反,末位加1所得。

这里,我们可以明显的看到,在使用补码的运算中,符号位参与了编码并且一起参与了运算。因为符号位只有一位所以舍弃最高的一位。

(2)已知某机器字长为8位(含一位符号位),令A = 15,B =24, 求【A+B】补 和(A-B)。

考虑这样一个问题,机器字长仍为8位,其中A = -93,B = 45.按照计算规则,我们有:

很明显我们的计算过程是没有任何的问题的,但是问题出在我们把符号位参与了运算,我们根据常识知道结果为 -138 而138显然大于2^7 = 128.所以7位数值位不足以容纳超过128(不用减一因为补码表示的0唯一)的数。这种计算结果超过机器字长的现象我们称为溢出。

1. 肉眼观察法(做题好用) 这种往往看似很蠢的方式,却是最直观也是最有效的方法。就是通过对计算结果的大致估计来判断是否发生溢出。就比如上题,我们显然可以直接算出 -93-45 = -138,显然会发生溢出。对于一些判断溢出的方式往往这种方式最有效。

2. 一位符号位判断溢出(计算机中判断方式之一) 我们先看看溢出的必要条件是什么,同号相加,异号相减才有可能发生溢出。因此无论是做加法还是减法,只要实际参与操作的两个数(减法为【-B】补),符号相同,结果又与原操作数符号不同,即可以说明发生了溢出。

看下面一道例题: 设某机器字长为4位(含一位符号位) 当A = 5,B = 4时,有:

这个时候产生了两个符号位,我们舍去最高的符号位,剩下0为符号位。

3. 两位符号位判断溢出 两位符号位的补码,也称变形补码。即在原符号位的前面加多一位符号位,这个加上去的符号跟之前的符号位一样。

原理:当结果的2位符号位不同时(即01或者10),表示溢出,且高位(就是第一位)的符号位永远代表着真正的符号。 举个例题:

五、浮点数及其加减运算

相对于定点数,浮点数就是小数点可以浮动的数。通常用来表示数值范围相差很大的数(比如太阳的质量跟电子的质量相差)。 通常我们使用这样的表达式来表示浮点数:

其中,r表示底(因为是指数的形式,一般取2的n次方),E表示阶码(阶码可正可负)。M为位数(可正可负)。 当r = 10的时候,就是我们熟悉的科学计数法。在计算机中我们研究的是r = 2的时候。

规格化数与浮点数的规格化

为了提高数据的精确度以及便于比较浮点数的大小,在计算机中规定浮点数的尾数用纯小数表示。其中尾数最高位为1的浮点数称为规格化数。比如 N = 0.110101 X 2^10.尾数的最高位为1.所以称为规格化数。 为了提高浮点数的精确度,要求其尾数必须为规格化数,如果不是规格化数,那么就要修改阶码的值并同时左右移尾数的方法,使其变为规格化数。 根据尾数的移动位置,我们将规格化分为左规和右规(待会详细说)。我们先来看看一个十进制数的移动:

二进制的移动也是如此的。 因此我们得到这样的结论:

从图中我们可以看出至少这几点:

1. 对于原码而言,其规格化数的最高位一定是1

2. 对于补码而言,其规格化数的最高位一定与符号位相反

3. 对于正数,无论其是原码还是补码,规格化后的形式一样

4. 对于负数,补码的规格化数是原码规格化数的除了规格化位以外的全部取反

现代计算机的浮点数一般采用IEEE定制的国际标准,这种标准形式如下:

根据浮点数的位数的不同,常见的浮点数有三种,短浮点数(float),长浮点数(double),临时浮点数。具体形式如下:

考试中,最常出现的当属短浮点数(float)了,因为长浮点数位数较多且原理与短浮点数一致。

1. 最高位为符号位,占用一位的空间

2. 阶码为8位,以移码的方式存储,阶码表示的范围为[1 ~ (2^8) - 1],为什么不是0-255?因为全0用来表示无穷大,全0表示非规格化数。

3. 尾数数值位为23位,在这里采用了隐藏位策略,由于我们规定了尾数最高位为1,也就是说数值位的第一位总会是1,所以我们可以采用23位来表示24位的数(我们把最高位的数值位隐藏了起来)。即不在23位数值位中存储这个1(这部分内容经常考!!)

4. 偏置值,对于float数而言,偏置值为127((2^7) - 1,其中,全一表示无穷大,至于为什么是7次方不是8次方,回顾移码的定义),表示阶码的移动。在存储浮点数阶码之前,要将偏置值加到阶码的真值上。比如阶码为3,那么移码表示的阶码为: 127 + 3 = 130(80H)。

所以,规格化后,float数的真值为:

其中 s = 0代表正数,s = 1 代表负数。由我们刚刚讨论出来的各个字段的范围可以得到float浮点数的表示范围: 显然,当E = 1,M= 0 的时候,浮点数最小, 当 E = 254, M = 111111...(23个1).的时候,浮点数最大;

同定点数相同,浮点数的加减也采用补码的形式运算,不同的是,浮点数运算的过程较为麻烦。

1. 对阶 即小数点的位置对齐,此时两个浮点数的阶码相等。因此我们首先得得出两个浮点数相差几阶。由小阶转向大阶,具体操作是将数值部分右移一位, 此时阶码 +1。(这里面隐含着舍弃掉有效位的风险)

2. 尾数求和 对阶后就好办了,对阶完相当于小数点位置确定,直接进行定点数的加减。

3. 规格化 规格化,浮点数的规格化通常采用双符号位,前面我们已经说过双符号位这个概念了。

符号位和最高位相同时需要左规,溢出时需要右规   采用双符号位来计算

4. 舍入 在对阶和右规的过程中,尾数的低位有效位位很可能移丢(因为是小转大),这时候就会影响精度产生误差(注意,产生误差≠结果错误)。这样的溢出我们称为尾数溢出。因此必须对尾数进行舍入。常用的方法有:

  • 恒置“1”法:无论右移舍去的是谁,都在末尾添加1
  • 舍“0”入“1”法:右移过程中,尾数是0则舍去,是1,则尾数末尾加1.(存在尾数再次溢出的风险)

5. 溢出判断 判断浮点数的溢出,我们采用双符号法,但是与定点数有一点不同:当尾数之和出现01.XXXXXX或者10.XXXXXX的时候,并不能直接下结论溢出,应当再右规一次,才能判断是否真的溢出,且规后发现其阶码的符号位出现01或者10的时候,说明溢出

浮点数的加减运算(实例)

下面是一道2009年的408的考试真题:

我们先看看,首先第一步没得说,先写出X和Y的二进制表示(分数转二进制很好转,百度一下就行,有个百度经验,用我们平时的同底数幂相除来算,很是方便),注意含有两个符号位:

这一步我们发现这个时候X和Y的阶码已经相同(00,111)了。

这里注意,尾数右规是指尾数部分右规,那么尾数的符号位也是在尾数中的。

大端对齐模式:是指一个字节中的高位字节放在这个字节区域内的低地址处。

小端对齐模式:是指一个字节中的低位字节放在这个字节区域内的低地址处

将一个32位的16进制数0x存放在内存中(机器按字节编址)

实际上,小端模式就是从后面往前面存储的。

常用的进制转换数及一些技巧

算大的数可以用16进制数方便计算,十进制转二进制也可以转换为16进制再转换为2进制。

按边界对齐?简单的说,对于int型而言,起始地址为4的倍数;对于char类型而言,起始地址为任意字节皆可;对于short类型而言,起始地址为2的倍数;对于结构体而言,对齐方式为结构体内类型最大的字节量。

算式显然是 int = int +short 类型,一定存在强制类型转换,那么short ->int 需要添加扩展位,注意,机器中的数用补码表示的,所以结果用补码运算。过程如下:
图中虚线左边的是16进制数,右边是2进制数,由于答案是16进制数,我们便化为16进制数进行加减。
同时,特别注意,负数的补码,是除了符号位以外取反后加1  正数的补码等于原码等于反码

考点:强制类型转换,码制间的转换运算

因为机器中数据是用补码表示的,所以要用补码计算

 分析:短字节向长字节的转换,高位的扩展位变为对应的符号位

分析:无符号与有符号之间的相互转换,主要看对符号位的解释,将符号位当成符号就是有符号数,当成真值解释就是无符号数。机器中用补码表示数。

定点数基本运算及存储方式

这是一道表面考定点数补码的乘法的问题,但是学过的都知道,乘法的计算太啰嗦了,而且要记忆的东西步骤也极为麻烦,所以出在考试大题不大可能,出现在选择题更不可能,而这个题目,一开始就让我们计算四个数分别相乘的组合。老老实实做,那么做完你也应该快考完了。所以换个角度,直接判断是否溢出,将它们化为10进制真值,用结果看看能不能用8位表示。说白了还是考码制之间的转换。

 分析:关键词按字节编址,按边界对齐,小端方式。我们知道int是占用4个字节的,char1个字节,short为2个字节,加起来要7个字节,但是实际上是8个。因为它按边界对齐。我们注意到,按顺序short应该到D,但是D = 13,不是2的倍数,所以从E开始存储。

 分析:如果直接死脑筋算的话,很是麻烦,看看有没有好的办法,二进制数对2的乘除,就是移位操作,乘上一个2,左移。除去一个2,右移。实在忘记了,就举个10进制的例子:
20/10 = 2 //相当于把20右移了一位。这样就好办了:

有符号数移位时,都是按照补码的形式移位:

右移:最右边的一位舍弃,最左边补符号位。

左移:最左边的一位舍弃,最右边补0。

河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷六

(考试时间:75 分钟)

说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

1. C语言源程序文件的后缀是( )

2. 以下选项中不正确的实型常量是( )

3. 在C语言程序中,用关键字( )定义无符号型变量( )

4. C语言程序中可以对程序进行注释,注释部分可以用( )括起来

5. 若a、b都是int类型变量,( )不是正确的赋值语句

6. 若变量a,b,c已正确定义并赋值,符合C语言语法的表达式是( )

7. 若k是基本整型变量,则以下程序段的输出是( )

8. 为表示“a和b都大于0”,应使用的C语言表达式是( )

9. 已知字符‘b’的ASCII码为98,执行下列语句后输出为( )

10. 以下函数调用语句中,含有的实参个数是( )

11. 若变量已正确定义,表达式( )可以使指针PX指向变量X

12. 若变量已正确定义并且指针P已经指向某个变量X,则(*P)++相当于( )

14. 下列各语句定义了数组,( )是不正确的

16. 要调用字符函数时,在#include命令行中包括( )

17. 若变量已正确定义且K的值是4,计算表达式(j=k--)后,( )是正确的

19. 在C语言中,优先级最低的运算符是( )

B. 此说明语句不正确

C. 数组s中各元素都可得到初值,但其值不一定为0

D. 数组s中每个元素均可得到初值0

二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)

三、程序填空题(共3题,每空5分,共35分)

1. 读入n(n<=10)个整数并放入一个数组r中,再读入一个整数x,统计并输出x在数组r中出现的次数count,如果count>0,再输出x在r中所对应的最小下标(下标从0开始)。

2. 程序功能:输入一个整数,将每一位数字输出。

四、编程题(共3小题,每题15分 共45分)

1. 输入正整数m和n,如果m+n是素数,输出“Yes”,否则,输出“No”。要求定义并调用函数myfun(x)来判断x是否为质数,在下面空出的位置完成程序,不能定义新的变量,可不用已定义的某些变量。

2. 编写函数求两个整数的最大公约数和最小公倍数。在主函数中输入这两个整数并输出最大公约数和最小公倍数。

河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷七

(考试时间:75 分钟)

说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

1. 以下正确的C语言自定义标识符是( )

2. 在C语言中,错误的常数表示是( )

4. 设有以下程序段:

执行后输出的结果是( )

6. 设float x;,由键盘输入:12. 45,能正确读入数据的输入语句是( )

8. 以下叙述中正确的是( )

B. continue语句的作用是:使程序的执行流程跳出包含它的所有循环

C. break语句只能用在循环体内和switch语句体内

D. 在循环体内使用break语句和continue语句的作用相同

9. 在C语言中,下列运算符中结合性属于自右向左的是( )

A. 指向整型变量的指针数组

B. 指向4个整型变量的函数指针

C. 4个指向整型变量的指针变量

D. 指向具有4个整型元素的一维数组的指针

14. 在C语言中,下列错误的说法是( )

A. 函数可以递归调用

B. 不允许在函数中再定义函数

C. 递归程序不可能用非递归算法实现

D. 对于continue语句,可以用过改变程序的结构而不使用它

16. C语言结构体类型变量在程序执行期间( )

A. 所有成员一直驻留在内存中

B. 只有一个成员驻留在内存中

C. 部分成员驻留在内存中

D. 没有成员驻留在内存中

以下对结构变量s中成员num的非法引用是( )

18. 下列说法中正确的是( )

A. C语言的预处理命令只有宏定义和文件包含

B. 预处理命令只能出现在主函数之前

C. 所有预处理命令都是以符号“#”开头

D. 有些预处理命令不是在源程序编译之前处理

A. 代表函数的返回值 B. 指向函数的入口地址

C. 表示函数的类型 D. 表示函数返回值的类型

20. 下列属于文件包含的命令是( )

二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)

三、程序填空题(共3题,每空5分,共35分)

1. 对含有10个元素的数组a先按元素的存储次序倒序输入,再按其正序输入。

2. 学生成绩的字母等级和分数范围如下:

输入字母等级之后,输出相应的分数范围。

四、编程题(共3小题,每题15分 共45分)

1. 输入自变量x的值后,计算并输出y的值。

2. 用循环结构输入下列数字金字塔(共9行)。

3. 某重点大学的博士入学考试科目为外语和两门专业课,对于每个考生,输入各科考试成绩,并计算总分。

河北省普通高校专科接本科教育考试C语言程序设计模拟试卷八

(考试时间:75 分钟)

说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

2. 以下正确的叙述是( )

A. C语言中,main函数必须位于文件开头

B. C语言每行中只能写一条语句

C. C语言本身没有输入、输出语句

D.对一个C语言进行编译预处理时,可检查宏定义的语法错误

3. C语言程序中,若对函数类型未加显示说明,则函数的隐含类型为( )

4. C语言中,可以用来说明函数的是( )

5. C语言中最简单的数据类型包括( )

A. 整型、实型、逻辑型 B. 整型、实型、字符型

C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型

6. 请选出以下程序段的输出结果( )

10. 设c1、c2均是char类型变量,则不正确的函数调用为( )

11. 设有以下说明语句

则下面的叙述不正确的是( )

A. struct是结构体类型的关键字

C. stutype是用户定义的结构体类型名

D. a和b都是结构体成员名

12. 设有如下函数定义:

如果在主程序中用下面的语句调用上述函数,则输出结果为( )

13. 若有以下定义和语句:

则以下正确的叙述是( )

A. 以上两处的*p含义相同,都说明给指针变量p赋值

C. 语句”*p=r;”把变量r的值赋给指针变量p

D. 语句”*p=r;”取变量r的值放回r中

14. 字符’0’的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是( )

15. 在下列选项中,不正确的表达式是( )

16. 下面程序的功能是( )

A. 统计字符串中的单词个数 B. 统计字符串中的空格个数

C. 统计字符串中的字母个数 D. 统计字符串中的全部字符个数

17. 下列程序的输出结果是( )

18. 下列程序执行后的输出结果是( )

19. 下面程序输出数组中的最大值,由s指针指向该元素

则在if语句中的判断表达式应该是( )

20. 已知字母A的ASCII码为十进制的65,下面程序的输出是( )

二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)

3. 【程序】程序运行时,从键盘输入 C 

4. 【程序】程序运行时,从键盘输入 2 3 

三、程序填空题(共3题,每空5分,共35分)

1. 以下程序用来对从键盘输入的两个字符串进行比较,输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入两个字符串分别为abcdef和abceef,则输出为-1.请填空。

2. fun1函数的调用语句为fun1(&a,&b,&c);。它将3个整数按由大到小的顺序调整后依次放入a,b,c,三个变量中,a中放最大数,请填空。

四、编程题(共3小题,每题15分 共45分)

2. 两位数13和62具有很有趣的性质:把它们个位数字和十位数字对调,其乘积不变,即13*62=31*26。编程序求共有多少对这种性质的两位数(个位与十位相同的不在此列,如11、22,重复出现的不在此列,如13*62与62*13)。

河北省普通高校专科接本科教育考试C语言程序设计模拟试卷九

(考试时间:75 分钟)

说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

1. 以下定义语句中正确的是( )

2. 下列运算符中,优先级最高的是( )

程序运行后的输出结果是( )

程序运行后的输出结果是( )

6. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是( )

8. 对于以下的变量定义,不正确的表达式是( )

9. 不正确的赋值或赋初值的方式是( )

10. 设程序中不再定义新的变量,写出在函数main中可以使用的所有变量为( )

程序运行后的输出结果是( )

若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( )

13. s12和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是( )

14. 有以下定义和语句

15. 程序中对fun函数有如下说明

此说明的含义是:( )

B. fun函数的返回值可以是任意的数据类型

C. fun函数的返回值是无值型的指针类型

D. 指针fun指向一个函数,该函数无返回值

程序运行后的输出结果是( )

17. 有以下说明和定义语句

以下选项中引用结构体变量成员的表达式错误的是( )

18. 已定义ch为字符型变量,以下赋值语句中错误的是( )

程序运行后的输出结果是( )

二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)

三、程序填空题(共3题,每空5分,共35分)

1. 编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。

2. 有一行文字,要求删去某一个字符。此行文字和要删去的字符均由键盘输入,要删去的字符以字符形式输入(如输入a表示要删去所有的a字符)。

{ /*str1表示原来的一行文字,str2表示删除指定字符后的文字*/

四、编程题(共3小题,每题15分 共45分)

1. 有一分数序列求出这个数列的前20项之和。

2. 任意大于2的偶数可以分解为两个素数之和。请验证。

3. 编程,将十进制数转换成任意进制数。

河北省普通高校专科接本科教育考试C语言程序设计模拟试卷十

(考试时间:75 分钟)

说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。

一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)

3. 下列程序段不是死循环的是

4. 下面程序的运行结果是

5.下面四个选项中,均是正确的八进制数或十六进制数的选项是

6.一个C语言程序是由( ) 组成的。

A.一个主程序和若干子程序 B.函数

C.若干过程 D.若干子程序

9.以下选项中,与k=n++完全等价的表达式是

10.要把函数处理结果的两个数据返回给主调函数,下面方法中不正确的是

A.return 这两个数 B. 形参用两个元素的数组

C.形参用两个这种数据类型的指针 D. 用两个全局变量

11.以下程序的输出结果是

13. 以下程序段运行后变量a的值为

14. 若有以下定义:

则表达式a*b+d-c值的类型为

15. 对于整型变量x与赋值语句“x=x%2==0?1:0;”,不等价的if语句是

16. 与十六进制数BC等值的二进制数是

17. 以下程序输出的结果是

20. 以下叙述中不正确的是

A.在函数中,通过return语句返回数据值

B.在函数中,如果没有return语句则不返回值

C.在函数中,可以有多条return语句

D.在C语言中,调用函数不必在一条独立的语句中完成

二、程序阅读题(本大题共 5 小题,每小题 6 分,共 30 分。请将程序的运行结构填写在答题纸的相应位置上。)

三、程序填空题(本大题共 3 小题,每空 5 分,共 35 分。请将答案填写在答题纸的相应位置上。)

1.阅读以下程序并填空。以下程序的功能是使3×3矩阵行列互换

2.阅读以下程序并填空。该程序的功能是:从键盘输入两个整数进行比较,根据比较结果输出“num1=num2”或“num1>num2”或“num1<num2”。

四、编程题(本大题共 3 小题,每小题 15 分,共 45 分。请在答题纸的相应位置上作答。)

2.编写函数float fun(int n),功能是:通过形参n计算:,并作为函数值返回。



更多专升本模拟试题请点击查看>>

我要回帖

更多关于 已知某君消费两种商品X和Y 的文章

 

随机推荐