2021年专升本c语言模拟题及答案与解析_第1页
2021年专升本c语言模拟题及答案与解析_第2页
2021年专升本c语言模拟题及答案与解析_第3页
2021年专升本c语言模拟题及答案与解析_第4页
2021年专升本c语言模拟题及答案与解析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021年湖北专升本c语言模拟题

一、单选(30分)

1、以下叙述中正确的是()

A、C语言函数可以嵌套调用,例如:fun(fun(x))

B、C语言程序是由过程和函数组成的

C、C语言函数不可以单独编译

D、C语言中除了main函数外,其他函数不可作为单独文件形

式存在

2、以下不合法的字符常量有()

A、'\\'B、'\"'C、'\18'D、'\xcc'

3、若变量均已正确定义并赋值,以下合法的c语言赋值语句是()

A、x=y==5B、x=n%2.5C、x+n=iD、x=5=4+l

4、表达式a+=a-=a=9的值是()

A、18B、9C、0D、-9

5、若a是数值类型,则逻辑表达式(a==l)||(a!=l)的值是()

A、1B、0C、2D、不知道a的值,不能确定

6、有以下程序:

Mian(){

intx=l,y=2,z=3;

if(x>y)if(y<z)

printf("%d”,++z);

else

printf("%d",++y);

printf("%d/n”,x++);

}

程序的运行结果是()

A、1B、41C、2D、331

7、以下数组定义中错误的是()

A、intx[][3]={0};

B、intx[2][3]={{1,2},{3,4},{5,6}};

C、intx[][3]={{1,2,3},{4,5,6}};

D、intx[2][3]={1,2,3,4,5,6};

8、如有定于语句intb=2,则表达式(b«2)/(3||b)的值是()

A、4B、8C、0D、2

9、若有定义语句inta[2][3],*p[3];则以下语句中正确的是()

A、p=aB、p[O]=aC^p[O]=&a[l][2]D、p[1]=&a

10、若有定义,inta=3,*p=&a,**q=&p,则下列叙述中错误的是()

A、q是指针变量,*q就是变量a

B、p是指针变量,p指向变量a

C、q指向变量p,所以*q指向变量a

D、*p与**q都代表变量a

二、填空(30分一题三个空每空一分,一题一个空每空三

分)

11、设C语言中,int类型数据占一个字节,则long类型数据占—

个字节,unsignedint类型数据占个字节。

12、合法标识符是由,,组成。

13、每个C语言程序且main函数。

14、对应scanf("a=%d,b=%d",&a,&b);语句的输入a为3,b为7

的键盘输入格式是—,

15、是具有一定功能的一个程序块,是C语言的基本组成单位。

16、函数调用可以做为一个函数的

17、若#definePAI3.14,则PAI称为

18、三种循环结构分别是、、.

19、*p为一级指针,存放的地址。

20、**p为二级指针,存放的地址。

三、补全程序(一空3分)

21、下面程序的功能是在a数组中查找与x值相等的元素所在位置,

请填空。

#include<stdio.h>

voidmain()

{inta[10]zxj;

printf("pleaseinputtennumers:\nn);

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

scanf(”%d”,&a[i]);

)

printf("pleaseinputthenumberyouwanttofindx:");

scanf("%d",_(1)_);

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

lf(_(2)_)

Break;

if(_G)_)

printf("thepostionofxis:%d\n,i);

else

printf("notbeenfoundx!\n");

})

22、下面程序可求出矩阵a的主对角线上的元素之和(行号和列号相等的元素),请填空使

程序完整。

#include"stdio.h"

#include"math.h"

main()

{inta[3][3]={1,3,5,7,9,11,13,15,17},sum=o,i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

if(—⑷_)

sum=sum+_(5)_;

printf("sum=%d\n",sum);

return0;

)

23、将输入的十进制正整数n通过函数Dec2Bin转化成二进制,并将转换结果输出。

#include<stdio.h>

voidDec2Bin(intm)

(

intbin[32]j;

for(j=0;m!=0;j++)

(

bin[j]=—(6)—;

m=m/2;

)

for(;j!=0;j-)

printf("%d",(7));

)

voidmain()

(

intn;

scanf("%d",&n);

Dec2Bin(n);

四、计算题(一题8分)

24、#include<stdio.h>

intfun(intx[],intn){

staticintsum=O,i;

for(i=0;i<n;i++)sum+=x[i];

returnsum;}

voidmain(){

inta[]={l,2,3,4,5},b[]={6,7,8,9},s=0;

s=fun(a,5)+fun(b,4);

printf("%d",s);}

程序运行结果o

25、#include<stdio.h>

voidfun(doublex,double*y,double*z){

0;*z=*z+x;}

main(){

doublea=2.5,b=9.0,*pa,*pb;

pa=&a;pb=&b;

fun(b-a,pa,pb);printf("%f\n",a);

}程序结果是;

26、#include<stdio.h>

Main(){

inta[3][3]={

{1,3,5},

{7,9,11},

{13,15,17)};

int(*p)[3]=a,i,j,n=O;

for(i=0;i<3;i++)

for(j=0;j<2;j++)

n+=*(*(p+i)+j);

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

)

程序运行的结果

五、编程题(一题15分)

27、输入一个不多于五位数的正整数,判断它是几位,并逆序输出

各位数字。

28、编写一个程序,将将两个字符串连接起来,不能使用strcat函

数。

29、一个数如果恰好等于它的因子之和,这个数被称为“完数"。求

1000以内的所有完数。

2021年专升本C语言答案与解析

一、单选

1、AC语言程序是由函数组成,所以B错。C语言函数可以单独进

行编程,所以C错。每个C程序中必须包含一个main函数,但不一

定是每个C程序文件都必须有,用于单独编写的某个函数也可以存储

为一个C程序文件,所以D错。

2、C转义字符中,八进制的表示形式为\ddd,但是八进制中不能包

含数字8,所以C不合法。

\,单引号039

\"双引号034

\\反斜杠092

\x开头的表示后面两位连在一起组成一个16进制的数字,这个数字

代表该字符的编码值,里就代表着一个编码为204的字符

3、AB项中运算符"%"的前后必须为整数,C项中不能将变量赋

值给表达式x+n,D项不能将表达式4+1赋值给常量5

4、CC语言中赋值语句从右向左解析

a=9

a-=(9)a=a-9=0a+=0

a=a+0=0

5、AC语言的逻辑运算符比较特别,它的操作数没有明确的数据类

型。前面为1是逻辑或者则逻辑值为1

6、Aelse总是与离他最近的if配对,所以第一个if语句的判断条

件不成立,不再执行第二个if语句和与第二个if语句配对的else

语句,而是直接执行打印x++的操作,打印x的值1以后再加1

7、B这里b应该是两个数组每个数组里面三个元素,而不是三个数

组各两个元素

8、B这里b<<2是b的二进制值向移动两位,10->1000,在转为二进

制就是8。3:lb的值是lo8/1为8o

9、Cp是一个指针数组,它有四个元素,每个都是一个指向int型

的指针。

a是一个二维数组,它的每个元素都是int型的。

A的错误是因为p是常量(数组名都是指针常量),不可以被赋值。

而且p和a的类型也不一致。

B错误,因为p[0]是一个int指针,也就是int*;而a是一个指向指

针的指针int**。

C选项中是a的一个元素,是一个int型值,&取了它的

地址,所以是正确的。

D错误,因为a作为数组名,不能取地址,即使能取,p[l]是

int*,

&a是int***,类型不对。

10、A指针变量p指向变量a,p的值是a的地址;指针变量q指向

变量P,q的值是P的地址,所以q是指针变量,q指向P,*q是变

量P,所以A错

二、填空

11、2、4、2

12、字母、数字、下划线

13、1个

14、a=3,b=7

15、函数(或函数体)

16、实参

17、符号常量

18、for循环、do-while循环、while循环

19、变量

20、一级指针

三、补全程序

21、&x、a[i]==x、i<10

22、i==j,a[i][j]

23、m%2、bin[j]

四、计算

24、60这里static是静态变量,所以保留了之前sum的值,sum

从第二次开始值是15。最后就是15+45=60。

25、1.500000指针pa指向a,指针pb指向b。将b-a、pa,pb传

给函数fun,此时x为6.5,y指向a,z指向b;*y=*yT.0,是将变

量a的值减去1.0赋给a,a为1.5,b为15.5,函数执行完后a的

值为1.5

26、48*(*(p+i)+j)表示一维数组p+i的第j个元素的内容程序是

求数组各行前两列的数字之和

五、编程题

27、ttinclude<stdio.h>

Intmain(){

longx;

inty,i=l;

printf(“输入一个不超过100000的整数”);

scanf("%ld”,&x);

if(x>99999||x<l){

printf(“超出计算范围”);

}else{

While(x!=0){

y=x%10;

prin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论