文档库 最新最全的文档下载
当前位置:文档库 › 专升本C语言程序设计模拟试卷学习资料

专升本C语言程序设计模拟试卷学习资料

专升本C语言程序设计模拟试卷学习资料
专升本C语言程序设计模拟试卷学习资料

计算机科学与技术专业《基础知识》模拟试卷(考试时间150分钟,满分300分,共三部分)第一部分 C语言程序设计(共100分)

一、单项选择题(本大题共30小题,每小题2分,共60分)

1. 下列各选项中,均是合法有效的标识符的是【】

A. 3day

B.lower

C.day_3

D.ab

Sum _days abcde student_name

_of lotus_1_2_3 default M.D.john

2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是

A.A%2==1

B.!(A%2==0)

C.!(A%2)

D.A%2

3. 下列程序的输出结果是【】

#include

void main()

{

int x=1,y=0,a=0,b=0;

switch(x)

{

case 1:

switch(y)

{

case 0: a++; break;

case 1: b++; break;

}

case 2: a++;b++; break;

case 3: a++;b++; break;

}

printf(“%d,%d\n”,a,b);

}

A.1,1

B.2,1

C.1,0

D.2,2

4. 以下关于switch语句和break语句的描述中,只有正确的是【】

A.在switch语句中必须使用break语句

B.在switch语句中,可以根据需要使用或不使用break语句

C.break语句只能用于switch语句中

D.break语句是switch语句的一部分

5. 下面程序的输出是【】。

main()

{

int x=0x23;

printf(“%d\n”,- -x);

}

A.18

B.19

C.34

D.35

6. 下列函数的输出结果是【】

#include

int f1(int xb)

{

extern int xa;

return (xa * xb);

}

void main(void)

{

extern int xb;

int xa=5;

printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa));

return 0;

}

int xa=3,xb=4;

A. 3,4,12

B. 5,4,20

C. 5,4,15

D. 3,4,15

7. c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是

A. 地址传递

B. 由实参传给形参,再由形参传回给实参

C. 单向值传递

D. 由用户指定传递方式

8. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其原因是【】void main()

{

int *p,a;

p=&a;

scanf(“%d”,*p);

……

}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

9. 下列程序段的输出结果是【】。

int x=3;

do

{

printf(“%2d\n”,x-=2);

}while (!(――x))

A. 1

B. 1 -2

C. 3 0

D. 是死循环

10. 若有语句:int a=4, *p=&a;下面均代表地址的一组选项是【】。

A. a,p,&*a

B. *&a,&a,*p

C. &a,p,&*p

D. *&p,*p,&a

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

main()

{ int i;

int a[3][3]={1,2,3,4,5,6,7,8,9};

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

printf("%d ",a[2-i][i]);

}

A)1 5 9

B)7 5 3

C)3 5 7

D)5 9 1

12. 下面函数的功能是

char *fun(char *str1,char*str2)

{while((*str1)&&(*str2++=*str1++));

return str2;

}

A)求字符串的长度

B)比较两个字符串的大小

C)将字符串str1复制到字符串str2中

D)将字符串str1接续到字符串str2中

13. 下面函数调用语句含有实参的个数为

func((exp1,exp2),(exp3,exp4,exp5));

A)1 B)2 C)4 D)5

13. 下面程序段的运行结果是

char *s="abcde";

s+=2;printf("%d",s);

A)cde

B)字符′c′

C)字符′c′的地址

D)无确定的输出结果

14. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是

void print_value(int *x)

{printf("%d\n",++*x);}

A)23

B)24

C)25

D)26

15. 当顺利执行了文件关闭操作时,fclose函数的返回值是

A)-1

B)TRUE

C)0

D)1

16. 设有如下定义

char *s[2]={ "abcd","ABCD"};

则下列说法错误的是

A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址

B)s是指针数组名,它含有两个元素分别指向字符型一维数组

C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素

D)s数组的两个元素中分别存放了字符′a′和′A′的地址17. 以下不能对二维数组a进行正确初始化的语句是

A)int a[2][3]={0};

B)int a[][3]={{1,2},{0}};

C)int a[2][3]={{1,2},{3,4},{5,6}};

D)int a[][3]={1,2,3,4,5,6};

18. 有以下程序

struct STU

{ char num[10]; float score[3]; };

main()

{struct STU s[3]={{"20021",90,95,85},

{"20022",95,80,75},

{ "20023",100,95,90},

},*p=s;

int i; float sum=0;

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

sum=sum+p->score[i];

printf("%6.2f\n",sum);

}

程序运行后的输出结果是

A)260.00

B)270.00

C)280.00

D)285.00

19. 若有说明:int a[10];则对a数组元素的正确引用是

A)a[10]

B)a[3,5]

C)a(5)

D)a[10-10]

20. 下面程序段中,输出*的个数是

char *s="\ta\018bc";

for(;*s!=′\0′;s++)printf("*");

A)9

B)5

C)6

D)7

21.设有如下函数

fun (float x)

{

printf("\n%d",x*x);}

则函数的类型是

A)与参数x的类型相同

B)是void

C)是int型

D)无法确定

22. 有如下定义

#define D 2

int x=5;float y=3.83;

char c=′D′;

则下面选项中错误的是

A)x++;

B)y++;

C)c++;

D)D++;

23. 以下程序段的执行结果为

#define PLUS(X,Y)X+Y

main()

{ int x=1,y=2,z=3,sum;

sum=PLUS(x+y,z)*PLUS(y,z);

printf("SUM=%d",sum);

}

A)SUM=9

B)SUM=12

C)SUM=18

D)SUM=28

24. C语言规定,函数返回值的类型是由

A)return语句中的表达式类型所决定

B)调用该函数时的主调函数类型所决定

C)调用该函数时系统临时决定

D)在定义该函数时所指定的函数类型所决定25. 下列程序的运行结果是

void fun(int *a,int *b)

{ int *k;

k=a;a=b;b=k;

}

main()

{ int a=2004, b=9,*x=&a,*y=&b;

fun(x,y);

printf("%d%d",a,b);

}

A)2004 9

B)9 2004

C)0 0

D)编译时出错

26. 下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:

876 675 896 101 301 401 980 431 451 777

#include

#include

int fun(int *s, int t, int *k)

{ int i;

*k=0;

for(i=0;i if(s[*k]return s[*k];

}

main()

{

int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;

clrscr();

fun(a, 10, &k);

printf("%d, %d\n ", k, a[k]);

}

则输出结果为

A)7,431

B)6

C)980

D)6,980

27.下面程序应能对两个整型变量的值进行交换。以下正确的说法是

main()

{int a=10,b=20;

printf("(1)a=%d,b=%d\n",a,b);

swap(&a,&b);

printf("(2)a=%d,b=%d\n",a,b);

}

swap(int p,int q)

{int t;

t=p;p=q;q=t;

}

A)该程序完全正确

B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可

C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可

D)以上说法都不对

28. 有以下程序

#include

main()

{ char *p,*q;

p=(char *)malloc(sizeof(char)*20); q=p;

scanf("%s %s",p,q); printf("%s %s\n",p,q);

}

若从键盘输入:abc def<回车>,则输出结果是

A)def def

B)abc def

C)abc d

D)d d

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

int f()

{ static int i=0;

int s=1;

s+=i; i++;

return s;

}

main()

{ int i,a=0;

for(i=0;i<5;i++)a+=f();

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

相关文档