2022年湖北专升本C语言程序设计模拟题(1)

浏览次数:次 发布时间:2023-04-10

2022年湖北专升本C语言程序设计模拟题(1)

湖南专升本问答

第一章 C语言概述

湖南统招专升本集训营

1.1 选择题

*1.1一个C程序的执行是从 。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C)本程序的main函数开始,到本程序文件的最后一个函数结束

D)本程序文件的第一个函数开始,到本程序main函数结束

参考答案:A

参考分析:C语言总是从main函数开始,main函数结束。但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。

*1.2以下叙述正确的是 。

A)在C程序中,main函数必须位于程序的最前面

B)在C程序的每一行只能写一条语句

C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误

参考答案:C

参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。因此,如果注释中存在错误,系统是不可能发现的。另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。

1.3以下叙述不正确的是 。

A)一个C源程序可由一个或多个函数组成

B)一个C源程序必须包含一个main函数

C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面

参考答案:D

参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。

1.4 C语言规定:在一个源程序中,main函数的位置 。

A)必须在最开始 B)必须在系统调用的库函数的后面

C)可以任意 D)必须在最后

参考答案:C

*1.5一个C语言程序是由 。

A)一个主程序和若干个子程序组成 B)若干函数组成

C)若干过程组成 D)若干子程序组成

参考答案:B

参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。

1.2 填空题

1.6C源程序的基本单位是【 】。

参考答案:函数

1.7一个C源程序中至少应包括一个【 】。

参考答案:main()函数

1.8在一个C源程序中,注释部分两侧的分界符分别为【1】和【2】。

参考答案:【1】/* 【2】*/

1.9在C语言中,输入操作是由库函数【1】完成的,输出操作是由库函数【2】完成的。

参考答案:【1】scanf 【2】printf

第二章 数据类型、运算符与表达式

2.1 选择题

**2.1C语言中(以16位PC机为例),各数据类型的存储空间长度的排列顺序为 。

A)char

C)char

参考答案:A

分析:在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:char<=short<=int<=long<= float<=double,只有A符合16位PC机中的具体环境。

*2.2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为 。

x=(i=4,j=16,k=32)

A)4 B)16 C)32 D)52

参考答案:C

参考分析:逗号表达式的计算结果是最后一个表达式的值。k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。

**2.3假设所有变量均为整型,则表达式(a=2,b=5,a+b++,a+b)的值是 。

A)7 B)8 C)5 D)2

参考答案:B

参考分析:逗号表达式的计算结果是最后一个表达式的值。b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。

2.4下列四组选项中,均不是C语言关键字的选项是 。

A)define B)getc C)include D)while

IF char scanf go

type printf case pow

参考答案:A

参考分析:是关键字的有:char、case、while。

2.5下列四组选项中,均是C语言关键字的选项是 。

A)auto B)switch C)signed D)if

enum typedef union struct

include continue scanf type

参考答案:B

参考分析:不是关键字的:include、scanf、type

*2.6下面四个选项中,均是不合法的用户标识符的选项是 。

A)A B)float C)b-a D)_123

P_0 la0 goto temp

do _A int INT

参考答案:C

参考分析:合法的有:A、P_0、la0、_A、_123、temp、INT。

**2.7 C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 。

A)必须为字母 B)必须为下划线 C)必须为字母或下划线

D)可以是字母、数字和下划线中的任一种字符

参考答案:C

参考分析:教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。

*2.8 下面四个选项中,均是合法整型常量的选项是 。

A)160 B)-0xcdf C)-01 D)-0x48a

-0xffff 01a 986,012 2e5

011 0xe 0668 0x

参考答案:A

参考分析:不合法的B2,C2,C3,D2。解释:A2:-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:0x显然后面缺少数值,但在TC中是允许的。

*2.9下面四个选项中,均是不合法的整型常量的选项是 。

A)--0f1 B)-0Xcdf C)-018 D)-0x48eg

-0xffff 017 999 -068

0011 12,456 5e2 03f

参考答案:D

参考分析:不合法的A1,B3,C1,C3,D。解释:A1:--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常量前面允许不允许加上--号,是否可以负负得正,显然不可以,--在C中是自减运算,它只适用于变量;B1:0Xcdf X大写也可以!C3:5e2是个实型数。

*2.10下面四个选项中,均是不合法的浮点数的选项是 。

A)160. B)123 C)-.18 D)-e3

0.12 2e4.2 123e4 .234

e3 .e5 0.0 1e3

参考答案:B

参考分析:不合法的有A3,B,D1。部分解释:A1,D2:C语言中小数点前面或后面的0可以省略。但是不能只有小数点自身;A3,B3,D1:e的前后必须有合法数字。1.e2 .1e2合法,.e2不合法;B1:123是整型数,不是浮点数。

*2.11下面四个选项中,均是合法的浮点数的选项是 。

A)+1e+1 B)-.60 C)123e D)-e3

5e-9.4 12e-4 1.2e-.4 .8e-4

03e2 -8e5 +2e-1 5.e-0

参考答案:B

参考分析:不合法的有A2:阶码不能为小数;A3:浮点数的尾数及阶码不能用八进制数表示;C1:e后必须有整数,C2:阶码不能为小数;D1:缺少尾数。

*2.12下面四个选项中,均是合法转义符的选项是 。

A)'\'' B)'\' C)'\018' D)'\\0'

'\\' '\017' '\f' '\101'

'\n' '\"' 'xab' 'x1f'

参考答案:A

参考分析:"\"后面的数字,c总是按照八或十六进制解释。由于c支持扩展ASCII字符集,所以,八进制数范围在0~377,十六进制数范围在00~ff。

*2.13下面四个选项中,均是不合法的转义符的选项是 。

A)'\"' B)'\1011' C)'\011' D)'\abc'

'\\' '\' '\f' '\101'

'\xf' '\a' '\}' 'x1f'

参考答案:B

参考分析:不合法的有B1,B2,B3,C3,D1,D3;但B3和C3值得讨论,实际上,'\a'是一个转义字符(07 beep)。C中只有少数字母是转义字符,大多数字母不是。像'\c'就不是,它就是字符c自身,非转义字母加"\"也仅表示它本身。C3'\}'也表示自身。本题的命题人显然不知道'\a'也是转义字符。

*2.14下面正确的字符常量是 。

A)"c" B)'\\'' C)'W' D)""

参考答案:C

*2.15下面四个选项中,均是不正确的八进制或十六进制数的选项是 。

A)016 B)0abc C)010 D)0a12

0x8f 017 -0x11 7ff

018 0xa 0x16 -123

参考答案:D

参考分析:不正确的有A3:非法八进制数;B1、D1、D2:缺少x;D3是十进制数。

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

A)-10 B)0abc C)0010 D)0a12

0x8f -017 -0x11 -0x123

-011 0xc 0xf1 -0xa

参考答案:C

参考分析:不正确的有A1:这是十进制数;B1、D1:缺少x

2.17下面四个选项中,均是正确的数值常量或字符常量的选项是 。

A)0.0 B)"a" C)'3' D)+001

0f 3.9e-2.5 011 0xabcd

8.9e 1e1 0xFF00 2e2

'&' '\"' 0a 50.

参考答案:D

参考分析:不正确的有A2、C4:不是ox打头;A3:e后不是整数; B1是字符串;B2:2.5不是整数。

2.18下面不正确的字符串常量是 。

A)'abc' B)"12'12" C)"0" D)" "

参考答案:A

参考分析:与PASCAL不同,B)字符串内的单引号不需双写。C语言中,在不引起误解的情况下,双引号界定的字符串里的单引号可以不加转义标志"\",单引号界定的双引号字符也可以不加转义标志"\"。

2.19 对应以下各代数式中,若变量a和x均为double类型,则不正确的c语言表达式是 。

A) ex^2/2 exp(x*x/2)/sqr(2*3.14159)

√2π

B)½(ax+a+x/4a) 1.0/2.0*(a*x+(a+x)/(4*a))

C)√sinx2.5 sqrt((pow(sin(x*3.14159/180),2.5))

D)x2-e5 x*x-exp(5.0)

参考答案:C

2.20若有代数式3ae/bc,则不正确的C语言表达式是 。

A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3

参考答案:C

参考分析:注意表达式的计算顺序

2.21已知各变量的类型说明如下,则不符合C语言语法规定的表达式是 。

int k,a,b;

unsigned long w=5;

double x=1.42;

A)x%(-3) B)w+=-2 C)k=(a=2,b=3,a+b) D)a+=a-=(b=4)*(a=3)

参考答案:A

参考分析:不符合C语法规定的只有A,因为X为实型数。

2.22已知各变量说明如下,则符合C语言语法规定的表达式是 。

int i=8,k,a,b;

unsigned long w=5;

double x=1.42,y=5.2;

A)a+=a-=(b=4)*(a=3) B)a=a*3=2 C)x%(-3) D)y=float(i)

参考答案:A

参考分析:B)表达式不能出现在赋值号右侧;C)x是实型数,不能进行取余运算;D)应将float用括号扩起来(强制类型转换)。

*2.23以下不正确的叙述是 。

A)在C程序中,逗号运算符的优先级最低

B)在C程序中,APH和aph是两个不同的变量

C)若a和b类型相同,在计算表达式a=b后,b的值将放入a中,而b中的值不变

D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

参考答案:D

参考分析:整型变量可以输入实型数值,实型变量也可以输入整型数值

2.24以下正确的叙述是 。

A)在C程序中,每行只能写一条语句

B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C)在C程序中,无论是整数还是实数,都能被准确无误地表示

D)在C程序中,%是只能用于整数运算的运算符

参考答案:D

参考分析:注意它的描述,是只能用于整数运算,而不是整型数运算。

*2.25以下符合C语言语法的有赋值能力的表达式是 。

A)d=9+e+f=d+9 B)d=9+e,f=d+9

C)d=9+e,e++,d+9 D)d=9+e++=d+7

参考答案:B

参考分析:C不是赋值表达式,是逗号表达式,赋值仅是其中的一部分。严格说来,B也不是赋值表达式,它是由两个赋值表达式组成的逗号表达式。

**2.26已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2='A'+'6'-'3';后,c2的值为 。

A)D B)68 C)不确定的值 D)C

参考答案:A

参考分析:表达式中的各字符以各自的ASCII码参与运算。

*2.27在C语言中,要求运算数必须是整型(数)的运算符是 。

A)/ B)++ C)!= D)%

参考答案:D

参考分析:理论上++运算都是针对整型(含字符型)的,尽管现在很多系统提供了对实型变量的增量运算。

*2.28若以下变量均是整型,且num=sum=7;则计算表达式sUM=num++, sUM++,++num后sum的值为 。

A)7 B)8 C)0 D)10

参考答案:A

参考分析:注意sum和sUM不是一个变量(区分大小写)。

*2.29在C语言中,int、char和short三种类型数据在内存中所占用的字节数 。

A)由用户自己定义 B)均为两个字节

C)是任意的 D)由所用机器的字长决定

参考答案:D

参考分析:参考答案很明确地表明了,C语言中各种类型在内存中所占用的字节数由所用机器字长决定。通常在PC机中字符、整型、实型所占用的内存空间大小为1、2、4个字节。

2.30若有说明语句:char c='\72';则变量c 。

A)包含1个字符。 B)包含2个字符。

C)包含3个字符。 D)说明不合法,c的值不确定。

参考答案:A

参考分析:转义字符'\72'为字符':'。

2.31若有定义:int a=7; float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是 。

A)2.500000 B)2.750000 C)3.500000 D)0.000000

参考答案:A

参考分析:计算时要注意其结合性和优先级。

*2.32 sizeof(float)是 。

A)一个双精度型表达式 B)一个整型表达式

C)一种函数调用 D)一个不合法的表达式

参考答案:B

参考分析:算术表达式的类型由表达式计算结果的类型决定

*2.33设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为 。

A)int B)float C)double D)不确定

参考答案:C

参考分析:实型只要参与运算就自动转换为double型。

2.34下面四个选项中,均是非法常量的选项是 。

A)'as' B)'\\' C)-0x18 D)0xabc

-0fff '\01' 01177 '\0'

'\0xa' 12,456 0xf "a"

参考答案:A

参考分析:A3转义字符以十六进制描述时,前面不能加0。非法的还有B3

*2.35若有代数式√yx+log10y,则正确的C语言表达式是 。

A) sqrt(fabs(pow(y,x)+log10(y)))

B) sqrt(abs(pow(y,x)+log10(Y)))

C) sqrt(fabs(pow(x,y)+log10(y)))

D) sqrt(abs(pow(x,y)+log10(y)))

参考答案:A

参考分析:c语言中整型和实型的绝对值函数各自独立,为abs和fabs;pow为一系统函数pow(y,x)=>yx。

2.36 若有代数式|x3+lgx|,则正确的C语言表达式是 。

A)fabs(x*3+log10(x))

B)abs(pow(x,3)+log10(x))

C)abs(pow(x,3.0)+log10(x))

D)fabs(pow(x,3.0)+log10(x))

参考答案:D

参考分析:以上两题均未说明x,y的类型,从表达式的性质可分析隐含为实型,因此应使用fabs。

*2.37在C语言中,char型数据在内存中的存储形式是 。

A)补码 B)反码 C)原码 D)ASCII码

参考答案:D

参考分析:计算机系统不能存储字符本身,存储的是字符的ASCII码。

*2.38设变量n为float,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入的表达式是 。

A)n=(n*100+0.5)/100.0 B)m=n*100+0.5,n=m/100.0

C)n=n*100+0.5/100.0 D)n=(n/100+0.5)*100.0

参考答案:B

参考分析:m=n*100+0.5赋值过程中有实型转整型的自动转换。

2.39表达式18/4*sqrt(4.0)/8值的数据类型为 。

A)int B)float C)double D)不确定

参考答案:C

参考分析:表达式的类型由表达式结果的类型决定。

2.40设C语言中,一个int型数据在内存中占2个字节,则unsigned int型数据的取值范围为 。

A)0-255 B)0-32767 C)0-65535 D)0-2147483647

参考答案:C

参考分析:各种数据类型的取值范围是由其字长决定,字长确定的情况下,有符号数与无符号数的范围应当容易计算得知。

2.41设有说明:char w;int x;float y;double z;则表达式w*x+z-y值的数据类型为 。

A)float B)char C)int D)double

参考答案:D

参考分析:表达式的类型由表达式结果的类型决定。虽然本题各变量没有具体的变量值,由于参与运算的变量中z变量为double型,表达式计算的结果肯定为double型。

2.42若有以下定义,则能使值为3的表达式是 。

int k=7,x=12;

A)x%=k%=5 B)x%=k-k%5

C)x%=(k-k%5) D)(x%=k)-(k%=5)

参考答案:D

参考分析:A的值为0,B、C两个表达式相同,值为2,只有D的值为3。

2.43设以下变量均为int类型,则值不等于7的表达式是 。

A)x=y=6,x+y,x+1 B)x=y=6,x+y,y+1

C)x=6,x+1,y=6,x+y D)y=6,y+1,x=y,x+1

参考答案:C

参考分析:经计算可知,只有C的值为12,不为7。

2.2 填空题

2.44 在C语言中(以16位PC机为例),一个char型数据在内存中所占的字节数为【1】;一个int型数据在内存中所占的字节数为【2】。

参考答案:【1】1 【2】2

2.45 在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为【1】;一个double型数据在内存中所占的字节数为【2】。

参考答案:【1】4 【2】8

2.46 若有以下定义,int m=5,y=2;则计算表达式y+=y-=m*=y后y的值是【 】。

参考答案:-16

2.47 设C语言中,一个int型数据在内存中占2各字节,则int型数据的取值范围为【 】。

参考答案:-32768~32767

2.48 在C语言中的实型变量分为两种类型,它们是【1】和【2】。

参考答案:【1】float 【2】double

*2.49 C语言所提供的基本数据类型包括:单精度型、双精度型、【1】、【2】和【3】。

参考答案:字符型 整型 枚举

参考分析:基本类型又称简单类型,若分为四种则为字符、整型、实型和枚举,若分为五种,则将实型分为单精度型和双精度型两种。

*2.50 若s是int型变量,则表达式s%2+(s+1)%2的值为【 】。

参考答案:1

参考分析:无论s是奇数还是偶数表达式的值只能是1。

*2.51 若a是int型变量,则表达式(a=4*5,a*2),a+6的值为【 】。

参考答案:26

*2.52 若x和a均是整型变量,则计算表达式(1)后的x值为【1】,计算表达式(2)后x的值为【2】。

(1)x=(a=4,6*2)

(2)x=a=4,6*2

参考答案:【1】12 【2】4

2.53 若a、b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a的值为【1】,b的值为【2】,c的值为【3】。

参考答案:【1】6 【2】4 【3】2

2.54 若a是int 型变量,且a的初值为6,则计算表达式a+=a-=a*a后a的值为【 】。

参考答案:-60

2.55 若a是int型变量,则计算表达式a=25/3%3后a的值为【 】。

参考答案:2

2.56 若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为【1】,n的值为【2】。

参考答案:【1】10 【2】6

2.57 若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【 】。

参考答案:5.5

2.58 若有定义:int a=2,b=3;float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为【 】。

参考答案:3.5

2.59 若有定义:char c='\010';则变量c中包含的字符个数为【 】。

参考答案:1

2.60 若有定义:int x=3,y=2;float a=2.5,b=3.5;则表达式(x+y)%2+(int)a/(int)b的值为【 】。

参考答案:1

2.61 若有定义:int x=12,n=5;则计算表达式x%=(n%=2)后x的值为【 】。

参考答案:0

2.62 若有定义:int a,b;表达式a=2,b=5,a++,b++,a+b的值为【 】。

参考答案:9

2.63 C语言中的标识符只能由三种字符组成,它们是【1】、【2】和【3】。

参考答案:【1】字符 【2】数字 【3】下划线

*2.64 已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【 】。

参考答案:f

参考分析:表达式计算中取各个字符的ASCII码值进行计算,但ch的值是以计算结果为码值的字符。

2.65 把以下多项式写成只含七次乘法运算,其余皆为加、减运算的表达式为【 】。

参考答案:((((((5*x+3)*x-4)*x+2)*x+1)*x-6)*x+1)*x+10

2.66 若double x=3.0,y=2.0;则表达式pow(y,fabs(x))的值为【 】。

参考答案:8.0

2.67 若有定义:int e=1,f=4,g=2;float m=10.5,n=4.0,k;则计算表达式k=(e+f)/g+ sqrt((double)n)*1.2/g+m后k的值是【 】。

参考答案:13.7

2.68 表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))值的数据类型为( )。

参考答案:int型

*2.69 表达式pow(2.8,sqrt(double(x)))值的数据类型为【 】。

参考答案:double型

*2.70 假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数表达式是【 】。

参考答案:m/10%10*100+m/100*10+m%10

参考分析:数字各个位的分离可以先整除再取余,也可以先取余再整除。

第三章 最简单的C程序设计

3.1 选择题

3.1 putchar函数可以向终端输出一个 。

A)整型变量表达式 B)实型变量值

C)字符串 D)字符或字符型变量值

参考答案:D

参考分析:putchar函数的作用是输出一个字符,可以是常量或变量。

*3.2以下程序的输出结果是 。

printf("\n*s1=%15s*","chinabeijing");

printf("\n*s2=%-5s*","chi");

A)*s1=chinabeijing□□□* B)*s1=chinabeijing□□□*

*s2=**chi* *s2=chi□□*

C) *s1=□□chinabeijing* D) * s1=□□□chinabeijing*

*s2=□□chi* *s2=chi□□*

参考答案:D

参考分析:-:数据左齐,右补空格。

3.3 printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 【1】 ;如果字符串长度小于5,则输出按方式 【2】 。

A)从左起输出该字符串,右补空格 B)按原字符串长从左向右全部输出

C)右对齐输出该字符串,左补空格 D)输出错误信息

参考答案:【1】B 【2】C

*3.4已有定义int a=-2;和输出语句:printf("%8lx",a);以下正确的叙述是 。

A)整型变量的输出格式符只有%d一种

B)%x是格式符的一种,它可以适用于任何一种类型的数据

C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的

D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度

参考答案:D

参考分析:答案B基本上是正确的,但是%x不能正确的输出长整型数据。

*3.5以下C程序正确的运行结果是 。

main()

{ long y=-43456;

printf ("y=%-8ld\n",y);

printf ("y=%-08ld\n",y);

printf ("y=%08ld\n",y);

printf ("y=%+8ld\n",y);

}

A)y=□□-43456 B)y=-43456

y=-□□43456 y=-43456

y=-0043456 y=-0043456

y=-43456 y=+□-43456

C)y=-43456 D) y=□□-43456

y=-43456 y=-0043456

y=-0043456 y=00043456

y=□□-43456 y=+43456

参考答案:C

参考分析:0:数据左侧必须充满,给定数据不足时,前面补0。

+:数据前面显示符号位。

*3.6以下C程序正确运行的结果是 。

main()

{ int y=2456;

printf("y=%3o\n",y);

printf("y=%8o\n",y);

printf("y=%#8o\n",y);

}

A)y=□□□2456 B)y=□□□4630

y=□□□□□□□□2456 y=□□□□□□□□4630

y=########2456 y=########4630

C)y=2456 D)y=4630

y=□□□□2456 y=□□□□4630

y=□□□02456 y=□□□04630

参考答案:D

参考分析:#要求输出数据的类型特征符号。

3.7以下C程序正确的运行结果是 。

main()

{long y=23456;

printf("y=%3lx\n",y);

printf("y=%8lx\n",y);

printf("y=%#8lx\n",y);

}

A)y=5ba0 B)y=□□□5ba0

y=□□□□5ba0 y=□□□□□□□□5ba0

y=□□0x5ba0 y=□□0x5ba0

C)y=5ba0 D)y=5ba0

y=5ba0 y=□□□□5ba0

y=0x5ba0 y=####5ba0

参考答案:A

分析:长整型数据输出应当加修正字符l,如果不加l仅能输出数据的低两个字节,高字节数据不能输出。

*3.8 若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是 。

A)scanf("%d%lx,%le",&x,&y,&z);

B)scanf("%2d*%d%lf",&x,&y,&z);

C)scanf("%x%*d%o",&x,&y);

D)scanf("%x%o%6.2f",&x,&y,&z);

参考答案:D

参考分析:A)首先读第一个十进制数赋给变量x,读第二个长十六进制数赋给变量y(此时有自动赋值转换),再读入格式规定的第二和第三个数据间的间隔符号逗号,最后读入第三个double型数据赋给变量z。B)首先读入2个宽度的十进制数赋给变量x,再读入格式规定的第一和第二数据间的间隔符号星号,然后读入第二个十进制整数赋给变量y,然后读入第三个double型数据赋给变量z。C)读入第一个十六进制数赋给变量x,然后虚读一个十进制数不赋给任何变量,最后读入一个八进制数赋给变量y。D)%6.2f不符合格式规定,即不能规定读入数据的小数点后的数字位数。

*3.9 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 。

int a1,a2;char c1,c2;

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);

A)10A□20BB)10□A□20□B

C)10□A20BD)10A20□B

参考答案:A

*3.10 已有定义int x;float y;且执行scanf("%3d%f",&x,&y);语句时,从第一列开始输入数据12345□678,则x的值为 ⑴ ,y的值为 ⑵ 。

⑴ A)12345 B)123 C)45 D)345

⑵ A)无定值 B)45.0 C)678.0 D)123.0

参考答案:B B

参考分析:读取数据格式中规定域宽时,系统仅读取指定宽度的数据。

**3.11 已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是 。

int a1,a2;char c1,c2;

scanf("%d%d",&a1,&a2);

scanf("%c%c",&c1,&c2);

A)1020ABB)10□20AB

C)10□□20□□ABD)10□20AB

参考答案:D

参考分析:A)a1为1020,a2为随机值,c1为A,c2为B。B)a1为10,a2为20,c1为,c2为A。C)a1为10,a2为20,c1、c2均为□。

3.12 已有程序段和输入数据的形式,程序中输入语句的正确形式应当为 。

main()

{ int a;float f;

printf("Input number:");

(输入语句)

printf("\nf=%f,a=%d\n",f,a);

}

Input number:4.5□□2

A)scanf("%d,%f",&a,&f); B)scanf("%f,%d",&f,&a);

C)scnaf("%d%f",&a,&f); D)scanf("%f%d",&f,&a);

参考答案:D

3.13 根据定义和数据的输入方式,输入语句的正确形式为 。

已有定义:float f1,f2;

数据的输入方式:4.52

3.5

A)scanf("%f,%f",&f1,&f2); B)scanf("%f%f",&f1,&f2);

C)scanf("%3.2f %2.1f",&f1,&f2); D)scanf("%3.2f%2.1f",&f1,&f2);

参考答案:B

*3.14 阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为 。

main()

{int x,y,z;

scanf("%d%d%d",&x,&y,&z);

printf("x+y+z=%d\n",x+y+z);

}

A)x+y+z=48 B)x+y+z=35 C)x+z=35 D)不确定的值

参考答案:D

参考分析:由于提供数据的格式与规定格式不一致,变量y,z不能获取正确的数据,均为随机值,故三变量之和也是随机数。

3.15 根据题目中已给出的数据输入和输出形式,程序中输入输出语句的正确内容是 。

main()

{int x;float y;

printf("enter x,y:");

输入语句

输出语句

}

输入形式:enter x,y:2 3.4

输出形式:x+y=5.40

A)scanf("%d,%f",&x,&y); B)scanf("%d%f",&x,&y);

printf("\nx+y=%4.2f",x+y); printf("\nx+y=%4.2f",x+y);

C)scanf("%d%f",&x,&y); D)scanf("%d%3.1f",&x,&y);

printf("\nx+y=%6.1f",x+y); printf("\nx+y=%4.2f",x+y);

参考答案:B

3.16 以下说法正确的是 。

A)输入项可以为一个实型常量,如scanf("%f",3.5);

B)只有格式控制,没有输入项,也能进行正确输入,如scanf("a=%d , b=%d");

C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%4.2f",&f);

D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);

参考答案:D

*3.17 根据下面程序及数据的输入和输出形式,程序中输入语句的正确形式应该为 。

main()

{char ch1,ch2,ch3;

输入语句

printf("%c%c%c",ch1,ch2,ch3);

}

输入形式:A□B□C

输出形式:A□B

A)scanf("%c%c%c",&ch1,&ch2,&ch3);

B)scanf("%c,%c,%c",&ch1,&ch2,&ch3);

C)scanf("%c %c %c",&ch1,&ch2,&ch3);

D)scanf("%c%c",&ch1,&ch2,&ch3);

参考答案:A

参考分析:字符控制格式中有无空格对数据的读取有影响,B)ch1读取A,ch2和ch3为随机字符。C)三个变量分别为A、B、C。D)ch3为随机字符。

3.18 有输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是 。

A)132B)1,3,2

C)a=1□b=3□c=2D)a=1,b=3,c=2

参考答案:D

3.19 以下能正确地定义整型变量a,b和c并为其赋初值5的语句是 。

A)int a=b=c=5; B)int a,b,c=5; C)int a=5,b=5,c=5; D)a=b=c=5;

参考答案:C

*3.20已知ch是字符型变量,下面不正确的赋值语句是 。

A)ch='a+b'; B)ch='\0'; C)ch='7'+'9'; D)ch=5+9

参考答案:A

参考分析:B)为转义字符。C)为7和9两个字符ASCII码值之和的字符。D)为码值为14的字符(控制字符)。

3.21 已知ch是字符型变量,下面正确的赋值语句是 。

A)ch='123'; B)ch='\xff'; C)ch='\08'; D)ch="\";

参考答案:B

3.22 若有以下定义,则正确的赋值语句是 。

int a,b;float x;

A)a=1,b=2, B)b++; C)a=b=5 D)b=int(x);

参考答案:B

参考分析:这里强调的是赋值语句,请注意赋值表达式与赋值语句的区别。

3.23设x、y均为float型变量,则以下不合法的赋值语句为________。

A) ++x; B)y=(x%2)/10; C)x*=y+8 D)x=y=0

参考答案:B

*3.24 设x、y和z均为int型变量,则执行语句x=(y=(z=10)+5)-5;后,x、y和z的值是 。

A)x=10 B)x=10 C)x=10 D)x=10

y=15 y=10 y=10 y=5

z=10 z=10 z=15 z=10

参考答案:A

3.25 设有说明:double y=0.5,z=1.5;int x=10;则能够正确使用C语言库函数的赋值语句是 。

A)z=exp(y)+fabs(x);

B)y=log10(y)+pow(y);

C)z=sqrt(y-z);

D)x=(int)(atan2((double)x,y)+exp(y-0.2));

参考答案:D

参考分析:本题有些偏,其他选项错误的原因为A)fabs(x),x不是double型。B)pow(y)其格式原型为double pow(double y,double x)。C)y-z为负数。

3.2 填空题

*3.26以下程序的输出结果为( )。

main()

{short i;

i=-4;

printf("\ni:dec=%d, oct=%o, hex=%x, unsigned=%u\n",i,i,i,i);

}

参考答案:i:dec=-4, oct=177774, hex=fffc, unsigned=65532

*3.27 以下程序的输出结果为( )。

main()

{printf("*%f,%4.3f*\n",3.14,3.1415);

}

参考答案:*3.140000,3.142*

分析:不能输出的位会向前一位四舍五入输出。

3.28以下程序的输出结果为( )。

main()

{char c='x';

printf("c:dec=%d, oct=%o, hex=%x, ASCII=%c\n",c,c,c,c);

}

参考答案:c:dec=120, oct=170, hex=78, ASCII=x

*3.29 已有定义int d=-2;执行以下语句后的输出结果是( )。

printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);

printf("*d(4)=%o*d(5)=%7o*d(6)=%-7o*\n",d,d,d);

参考答案:*d(1)=-2*d(2)=□-2*d(3)=-2□*

*d(4)=177776*d(5)=□177776*d(6)=177776□*

3.30已有定义int d=-2;执行以下语句后的输出结果是( )。

printf("*d(1)=%d*d(2)=%3d*d(3)=%-3d*\n",d,d,d);

printf("*d(4)=%x*d(5)=%6x*d(6)=%-6x*\n",d,d,d);

参考答案:*d(1)=-2*d(2)=□-2*d(3)=-2□*

*d(4)=fffe*d(5)=□□fffe*d(6)=fffe□□*

*3.31已有定义float d1=3.5,d2=-3.5;执行以下语句后的输出结果是( )。

printf("*d(1)=%e*d(2)=%.4e*d(3)=%10.4e*\n",d1,d1,d1);

printf("*d(4)=%e*d(5)=%.6e*d(6)=%-12.5e*\n",d2,d2,d2);

参考答案:*d(1)=3.50000e+00*d(2)=3.500e+00*d(3)=□3.500e+00*

*d(4)=-3.50000e+00*d(5)=-3.50000e+00*d(6)=-3.5000e+00□*

参考分析:通过本题应注意%f和%e在规定小数点后位数的区别。%e小数位后面位数含e标志。

3.32 以下程序的输出结果是( )。

main()

{int x=1,y=2;

printf("x=%d y=%d *sum*=%d\n",x,y,x+y);

printf("10 Squared is :%d\n",10*10);

}

参考答案:x=1 y=2 *sum*=3

10 Squared is :100

*3.33 以下程序的输出结果是( )。

#include

main()

{int x=10;float pi=3.1416;

printf("(1)%d\n",x);

printf("(2)%6d\n",x);

printf("(3)%f\n",56.1);

printf("(4)%14f\n",pi);

printf("(5)%e\n",568.1);

printf("(6)%14e\n",pi);

printf("(7)%g\n",pi);

printf("(8)%12g\n",pi);

}

参考答案:(1)10

(2)□□□□10

(3)56.100000

(4) □□□□□□3.141600

(5)5.68100e+02

(6) □□□3.14160e+00

(7)3.1416

(8) □□□□□□3.1416

参考分析:采用g格式输出数据时,当数据<=10-5或>=107时,按指数方式输出(缺省正数11位,负数12位),否则按小数方式输出(缺省含小数点总宽度最多7位)。且不输出无意义的0(后面)和小数点。

3.34 以下程序的输出结果是( )。

#include

main()

{float a=123.456;double b=8765.4567;

printf("(1)%f\n",a);

printf("(2)%14.3f\n",a);

printf("(3)%6.4f\n",a);

printf("(4)%lf\n",b);

printf("(5)%14.3lf\n",b);

printf("(6)%8.4lf\n",b);

printf("(7)%.4lf\n",b);

}

参考答案:(1)123.456000

(2) □□□□□□□123.456

(3)123.4560

(4)8765.456700

(5) □□□□□□8765.456

(6)8765.4560

(7)8765.4560

*3.35 以下printf语句中*的作用是( ),输出结果是( )。

#include

main()

{int i=1;

printf("##%*d\n",i,i);

i++;

printf("##%*d\n",i,i);

i++;

printf("##%*d\n",i,i);

}

参考答案:

(1)可使同一或相同输出格式数据输出宽度得以改变(动态域宽控制)

(2)##1

##□2

##□□3

3.36 以下printf语句中的"-"的作用是( ),该程序的输出结果是( )。

#include

main()

{int x=12;double a=3.1415926;

printf("%6d##\n",x);

printf("%-6d##\n",x);

printf("%14.10lf##\n",a);

printf("%-14.10lf##\n",a);

}

参考答案:

(1)输出数据左对齐

(2) □□□□12##

12□□□□##

□□3.1415926000##

3.1415926000□□##

*3.37 以下程序的输出结果是( )。

#include

main()

{int a=325;double x=3.1415926;

printf("a=%+06d x=%+e\n",a,x);

}

参考答案:a=+00325 x=+3.14159e+00

*3.38以下程序的输出结果是( )。

#include

main()

{int a=252;

printf("a=%o a=%#o\n",a,a);

printf("a=%x a=%#x\n",a,a);

}

参考答案:a=374□□a=0374

a=fc□□a=0xfc

3.39以下程序的输出结果是( )。

int x=7281;

printf("(1)x=%3d,x=%6d,x=%o,x=%6x,x=%6u\n",x,x,x,x,x);

printf("(2)x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d\n",x,x,x,x,x);

printf("(3)x=%+3d,x=%+6d,x=%+08d\n",x,x,x);

printf("(4)x=%o,x=%#o\n",x,x);

printf("(5)x=%x,x=%#x\n",x,x);

参考答案:(1)x=7281,x=□□7281,x=□16161,x=□□1c71,x=□□7281

(2)x=7281,x=7281□□,x=$7281□□,x=$007281,x=%06d

(3)x=+7281,x=□+7281,x=+0007281

(4)x=16161,x=016161

(5)x=1c71,x=0x1c71

**3.40 假设变量a和b均为整型,以下语句可以不借助任何变量把a、b中的值进行交换。请填空。

a+=( );b=a-( );a-=( );

参考答案:b b b

3.41 假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前a=10、b=20、c=30,交换后a=20,b=30,c=10。请填空。

( );a=b;b=c;( );

参考答案:t=a c=t;

**3.42 设x、y和z都是int型变量,m为long型变量,则在16位微型机上执行下面赋值语句后,y值为( ),z值为( ),m值为( )。

y=(x=32767,x-1);

z=m=oxffff;

参考答案:32766、-1、65535

3.43 若x为int型变量,则执行以下语句后x的值为( )。

x=7;

x+=x-=x+x;

参考答案:-14

3.44 若a和b均为int型变量,则以下语句的功能是( )。

a+=b;b=a-b;a-=b;

参考答案:交换a、b变量的值

*3.45 在scanf函数调用语句中,可以在格式字符和%号之间加一星号,它的作用是( ),当输入以下数据:10□□20□□30□□40,下面语句的执行结果是( )。

int a1,a2,a3;

scanf("%d%*d%d%d",&a1,&a2,&a3);

参考答案:读入数据后不赋给相应的变量 把10给a1,把20不给任何变量,把30给a2,把40给a3

3.46有一输入函数scanf("%d",k);则不能使float类型变量k得到正确数值的原因是( )和( ),正确的语句应为( )。

参考答案:格式字符不正确 缺少&符号 scanf("%f",&k);

3.47 已有定义int a;float b,x;char c1,c2;为使a=3,b=6.5,x=12.6,c1='a',c2='A',正确的scanf函数调用语句是( ),输入数据的方式为( )。

参考答案:

scanf("%d%f%f%c1%c2",&a,&b,&x,&c1,&c2);

3□6.5□12.6aA

参考分析:该题目不好,读取数据语句和提供数据方式全部由做题者决定,这会出现各式各样的答案。

*3.48 若有以下定义和语句,为使变量c1得到字符'A',变量c2得到字符'B',正确的格式输入形式是( )。

char c1,c2;

scanf("%4c%4c",&c1,&c2);

参考答案:A□□□B□□□

参考分析:读取字符数据指定数据宽度时,系统读取第一个字符

*3.49 执行以下程序时,若从第一列开始输入数据,为使变量a=3,b=7,x=8.5, y=71.82, c1='A',c2='a',正确的数据输入形式是( )。

int a,b;float x,y;char c1,c2;

scanf("a=%d b=%d",&a,&b);

scanf("x=%f y=%f",&x,&y;

scanf("c1=%c c2=%c",&c1,&c2);

参考答案:a=3□b=7x=8.5□y=71.82c1=A□c2=a

*3.50 已有定义int i,j;float x;为将-10赋给i,12赋给j,410.34赋给x;则对应以下scanf函数调用语句的数据输入形式是( )。

scanf("%o%x%e",&i,&j,&x);

参考答案:-12□c□4.1034e2

参考分析:第一个数也可给17776,第二个数也可给0xc,第三个数也可给410.34。

以上就是关于2022年湖北专升本C语言程序设计模拟题(1)的全部内容了,如果你还有专升本相关的疑惑(如专升本报名、考试动态、院校招生简章、统考动态、湖南专升本院校、历年真题、考试大纲、专升本等相关信息),可以在文章下方留下你的联系方式,老师会第一时间联系到你,为你答疑解惑哦!


湖南专升本最新资料领取

部分内容来源于网络转载、学生投稿,如有侵权或对本站有任何意见、建议或者投诉,请联系邮箱(1296178999@qq.com)反馈。 未经本站授权,不得转载、摘编、复制或者建立镜像, 如有违反,本站将追究法律责任!


本文标签: 统招专升本全日制专升本统招

上一篇:2022年专升本英语虚拟语气模拟试题3                  下一篇:2022年湖北专升本C语言程序设计模拟题(2)

湖南3+2 统招专升本

一键查询