往年长春工程学院C语言程序设计专升本测试卷(八套试卷)及答案_第1页
往年长春工程学院C语言程序设计专升本测试卷(八套试卷)及答案_第2页
往年长春工程学院C语言程序设计专升本测试卷(八套试卷)及答案_第3页
往年长春工程学院C语言程序设计专升本测试卷(八套试卷)及答案_第4页
往年长春工程学院C语言程序设计专升本测试卷(八套试卷)及答案_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

长春工程学院

C语言程序设计专升本测试卷(一)

总分:100分考试时间:90分钟

注意事项:

>题目包括三大部分,单项选择题,判断题,编程题,请按要求在规定时间内作答。

>考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。

一、单项选择题(每小题2分,共40分)

1、以下说法错误的是O

A、C语言中的常量是指在程序运行过程中经常被用到的变量

B、C语言中的常量是指在程序运行过程中其值不能被改变的量

C、C语言中的常量可以用一个符号名来代表

D、C语言中的常量可以用宏来定义

【答案】A

【解析】C语言中的常量是指在程序运行过程中其值不能被改变的量,它可以用

宏来定义,用一个符号名代表,选项A错误,选项BCD正确,本题答案A

2、下列()是合法标识符。

A、_book

B、5files

C、+static

Ds-3.14159

【答案】A

3、经过以下语句定义后,表达式z+=x>y?++x:++y的值为。

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

A、2

B、3

C、6

D、5

【答案】C

4、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,

这个选项是。

A、k%2

B、k%2=l

C、(k%2)!=0

D、!k%2==l

【答案】D

5^下列while循环的次数是owhile(inti=0)i―;

A、0

B、1

C、5

D、无限

【答案】A

6、与实际参数为实型数组名相对应的形式参数不可以定义为o

A、floata[];

B、float*a;

C、floata;

D、float(*a)[3];

【答案】c

7、设有定义:floata=2,b=4,h=3;以下c语言表达式与代数式l/2(a+b)计算结果不相符

的是。

A、(a+*h/2

B、(l/2)*(a+*h

C、(a+*h*l/2

D、h/2*(a+

【答案】D

【解析】“*”的运算优先级高于“/”的运算优先级,因此,在选项D)中,

计算结果为0.25O

8、以下程序的输出结果是ocharch[5]={'a','b','\0','c','\0'};

printf("%s",ch);

A、a

B、b

C、ab

D、abc

【答案】c

【解析】字符串总是以''0'作为串的结束符。有了'\0'标志后,就不必再用字

符数组的长度来判断字符串的长度了。

9、下面关于指针的说法中错误的是。

A、在指针定义的同时可以对其进行初始化

B、指针根据其所指向变量的类型的不同,所占用内存大小也不同

C、指针中存放的是内存单元的地址

I)、相同类型的指针之间可以相互赋值

【答案】B

【解析】指针是一种用来存放其他变量地址的数据类型,它的声明形式为:(类

型〉+〈变量名〉,可以在声明的时候对其进行初始化。由于其存放的是内存单

元的地址,所以大小一般都是4个字节。

10、以下正确的字符串常量是«

A、

B、'abc'

C、OlympicGames

D、,A,

【答案】A

1k以下程序的运行结果是O

#include<stdio.h>

main()

(

inta[]={l,2,3,4,5,6,7,8,9,10,ll,12);

int*p=a+5,*q=null;

♦q=8(p+5);

printf(H%d%d\nw,*p,*q);

}

A、运行后报错

B、66

C、611

D、55

【答案】A

【解析】本题的考查点是通过指针引用数组元素。程序中没有给q分配存储单

元,只是给它赋了一个NULL,所以程序的运行结果是:611NULLpointer

assignment,也就是运行后报错。

12、以下程序的输出结果是—

#include<stdio.h>

intm=13;

intfun(intx,inty){

intnp2;

return(x*y-m);

}

main()

(

inta=7,b=6;

printf(H%dw,fun(a,b)/m);

A、1

B、3

C、7

D、10

【答案】B

【解析】本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变

量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而

在fun函数内m的应该等于2,main中的m为13,所以返回值为7X6-2=40,

而fun(a,b)/m值为40/13=3。

13、结构化程序设计主要强调的是o

A、程序的规模

B、程序的易读性

C、程序的执行效率

I)、程序的可移植性

【答案】B

14、以下正确的说法是。

A、定义函数时,形参的类型说明可以放在函数体内

B、return后边的值不能为表达式

C、如果函数值的类型与返回值类型不一致,以函数值类型为准

D、如果形参与实参类型不一致,以实参类型为准

【答案】C

【解析】选项A)中定义函数时,形参的类型说明应该放在形参表列内说明。老

版本C语言中,对形参类型的声明是放在函数定义的第2行,也就是不在第1

行的括号内指定形参的类型,而在括号外单独指定。选项B)中return后面的

值可以是一个表达式。选项D)中实参与形参的类型应相同或赋值兼容。如果实

参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,

以形参类型为准。

15、以下程序的输出结果是o

#include<stdio.h>

#defineFUDGE(y)2.84+y

#dofinePR(a)printf("%d°,(int)(a))

#definePRINT1(a)PR(a);putchar('\n')

main()

(

intx=2;

PRINT1(FUDGE(5)*x);

)

A、11

B、12

C、13

D、15

【答案】B

16、运行下面程序时,若从键盘输入数据为"123",则输出结果是.

#include"stdio.h"

voidmain()

(

intnum,i,j,k,place;

scanf(',%d'r,&num);

if(num>99)place=3;

elseif(num>9)place=2;

elseplace=l;

i=num/100;

j=(num-i*100)/10;

k=(num-i*100-j*10);

switch(place)

case3:printf(H%d%d%d\nw,k,j,i);

break;

case2:printf(M%d%d\nM,k,j);

break;

case1:printf(',%d\n'r,k);

}

)

A、123

B、1,2,3

C、321

D、3,2,1

【答案】c

17、当定义一个结构体变量时,系统分配给它的内存是

A、各成员所需内存量的总和

B、结构中第一个成员所需内存量

C、结构中最后一个成员所需内存量

D、成员中占内存量最大者所需的容量

【答案】A

18、阅读下面的程序

#include<stdio.h>

voidmain()

(

inti,j,m,n;

i=8;

j=10;

m=++i;

n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

}

程序的运行结果是.

A、8,10,8,10

B、9,11,8,10

C、9,11,9,10

D、9,10,9,11

【答案】C

19、有语句charstrl[10],str2[10]={Pchinan};

则能将字符串china赋给数组strl的正确语句是。

A、strl={nchinaw);

B、strcpy(strl,str2);

C、strl=str2;

D、strcpy(str2,strl);

【答案】B

20、下列选项中属于c语言构造类型的是。

A、指针类型

B、空类型

C、枚举类型

D、数组类型

【答案】D

【解析】构造类型数据是由基本类型数据按一定规则组成的。C语言中的构造

类型数据只有3种,它们是数组类型、结构体类型和共用体类型。故应该选择

Do

二、判断题(每小题2分,共20分)

()1、在标准c语言中,数组的下标必须是常量,不允许是表达式。

【答案】错误

()2、变量被定义后,它不仅有一个确定的地址值,而且还会有一个确定的本身值。

【答案】错误

()3、文件指针和位置指针都是随着文件的读写操作在不断改变。

【答案】错误

()4、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使

用复合语句。

【答案】错误

()5、使用strcpy(字符数组,字符串)函数时,字符数组长度没有限制。

【答案】错误

()6、c程序是从函数开始执行的。

【答案】正确

()7、数组定义后,数组名的值是一个地址,可以被修改。

【答案】错误

()8、若函数的返回值与return表达式类型不一致时,以return表达式类型为准。

【答案】错误

()9、若有说明语句char*p="itismine"则p变量中存放的是整个字符串

【答案】错误

()10、c程序的执行是从程序文件的第一个函数开始,到最后一个函数结束。()

【答案】错误

三、编程题(每小题分,共40分)

1、编写程序:输入一个圆半径r,当r>=0时,计算并输出圆的面积和周

长,否则,输出提示信息。(本题10分)

【答案】^include<stdio.h>

#definePI3.14

intmain(void)

……..

doubler,area,girth;

printf(,fpleaseinputr:\nn);

scanf(H%lf\&r);

if(r>=0)

{area=PI*r*r;

girth=2*PI*r;

printf(,ftheareais%.2f\n,f,area);

printf(Hthegirthis%.2f\n",girth);}

else

printf(HInputerror!\n,f);

return0;

2、编写程序:从键盘上输入两个正整数x,y,求它们的最大公约数

例如:如果从键盘上输入24,36,程序的输出应为:maxis:12()(本题14

分)

【答案】itinclude<math.h>

#include<conio.h>

Sinclude<stdio.h>

main()

(

intx,y,t,i;

printf("pleaseentertwonumbers:");

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

if(x<y)

(

t=x;

x=y;

y=t;

)

t=x%y;

while(t)

(

x=y;

y=t;

t=x%y;

)

printf("maxis:%d",y);

)

3、有以下学生信息,使用结构体数组存储这些信息

structstudent{

intnum;〃学号

intcomputer;〃计算机成绩

}sL5]={{101,75},{103,80},{104,85},{106,90});

再输入一条新记录,插入到结构体数组中,让5条记录按计算机成绩升序有

序。

【输入形式】2个数据都使用空格分隔

【输出形式】分五行输出数据,每行数据均使用空格分隔

【输入样例】10288

【输出样例】每行数据均使用一个空格分隔,分五行输出

10175

10380

10485

10288

10690(本题16分)

【答案】#include<stdio.h>

#include<stdlib.h>

structstudent

(

intnum;〃学号

intcomputer;〃计算机成绩

}s[5]={{101,75},{103,80},{104,85},{106,90}},tamp;

intmain()

|

inti,j;

scanf("%d%d",&s[4].num,&sL4Lcomputer);

■fo.r(.i.=.1.;.i.<..5;i++.)—

for(j=0;j<5-i;j++)

(

if(s[j].computer>s[j+1].computer)

(

tamp=s[j];

s[j]=s[j+l];

s[j+l]=tamp;

)

)

)

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

printf("%d%d\n",s[j].num,s[j].computer);

长春工程学院

C语言程序设计专升本测试卷(二)

总分:100分考试时间:90分钟

注意事项:

>题目包括三大部分,单项选择题,判断题,编程题,请按要求在规定时间内作答。

>考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。

一、单项选择题(每小题2分,共40分)

1、在C语言中,要求参加运算的数必须时整数的运算符是________O

A、/

B、*

C、%

D、=

【答案】C

2、下面四个选项中,均是不合法的用户标识符的选项是o

A、AP_0do

B、floatlaO_A

C、b-agotoint

D、_123tempint

【答案】C

3、设a为int型变量,执行下列赋值语句后,a的取值分别为()

a=125.534;a=20.0/3;a=20%3;a=(int)125%521%4;a=5<<2;

A、125,6.666666,2,1,1

B、125,6,2,1,1

C、125.534,6.666666,2,1,20

D、125,6,2,1,20

【答案】D

4、若a和b均是整型变量并已正确赋值,正确的switch语句是。

A、switch(a+b);...

B、switch(a+b*3.0)...

C、switcha...

D、switch(a%b)

【答案】D

【解析】【命题目的】考查switch语句的用法。

【解题要点】switch后的括号部分只能返回这几种类型的值:int,byte,

short和charo

【错解分析】选项A)switch(a+b);中多了一个匕”号,注意观察。选项

B)switch(a+b*3.0)中括号的值不能为浮点型。选项C)switcha中switch后

的判断部分必须用括号括起来。

5、定义如下变量:intn=10;则下列循环的输出结果是.

while(n>7)

printf(',%d\n^,,n);

}

A、10

9

8

B、9

8

7

C、10

9

8

7

D、9

8

7

6

【答案】B

6、若定义语句:intb[]={1,2,3,4,5},*p=b;

则表达式*p++的值是_______o

A、1

B、2

C、b[0]的地址

D、b[l]的地址

【答案】A

7、若有定义charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为。

A、float

B、char

C、int

D、double

【答案】D

8、有以下程序

#include<string.h>

main()

(

charp[]={'a','b','c'),q[10]={,a','b','c');

printf("%d%d\n",strlen(p),strlen(q));

}

以下叙述中正确的是。

A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D、由于p和q数组中都没有字符串结束符,故长度都不能确定

【答案】A

【解析】在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中

可以看出数组p和q都有3个字符,所以长度均为3。

9、若ch为char型变量,k为int型变量(已知字符a的ascii十进制代码为97),则以下

程序段的执行结果是。ch='a';

k=12;

printf("%x,%o,",ch,ch,k);

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

A、因变量类型与格式描述符的类型不匹配,输出无定值

B、输出项与格式描述符个数不符,输出为零值或不定值

C、61,141,k=%d

D、61,141,k=%12

【答案】C

10、下面描述正确的是O

A、两个字符串包含的字符个数相同时,才能比较字符串

B、字符个数多的字符串比字符个数少的字符串大

C、字符串"STOP"与"STOP■"相等

D、字符串"That"小于字符串The"

【答案】D

1k设inta[10],*p=a;数组元素a[4]的正确引用是

A,*(p+4)

B、p+4

C,*p+4

D、a+4

【答案】A

12、关于函数参数,说法正确的是»

A,实参与其对应的形参各自占用独立的内存单元

B、实参与其对应的形参共同占用一个内存单元

C、只有当形参与实参同名时才占用同一个内存单元

I)、形参是虚拟的,不占用内存单元

【答案】A

13、将空格符赋给字符变量c,正确的赋值语句是。

A、c=r\0r

B、c=NULL

C、c=0

D、c=32

【答案】D

14、有以下程序

#include<stdio.h>

^include<stdlib.h>

intfun(intn)

int*p;

p=(int*)malloc(sizeof(int));

*p=n;

return*p;

main()

(

inta;

a=fun(10);

printf("%d\n",a+fun(10));

)

程序的运行结果是o

A、0

B、10

C、20

D、出错

【答案】c

15、有以下程序:

fun(inta[],intm,intn){

inti;

for(i=m;i<n;i++)

a[i+l]=a[i]+3;

returna[i+l];

)

voidmain()

(

inti,a[6]=2,4,6,8,10,12;

fun(a,2,5);

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

printf(w%dw,a[i]);

)

程序运行后输出的结果是.

A、24691315

B、24691215

C、249121518

I)、249121415

【答案】B

16、下列4个关于c语言的结论中错误的是

A、可以用dowhile语句实现的循环一定可以用while语句实现

B、可以用for语句实现的循环一定可以用while语句实现

C、可以用while语句实现的循环一定可以用for语句实现

D、do-while语句与while语句的区别仅是关键字“while”出现的位置不同

【答案】D

17、以下关于逻辑运算符两侧运算对象的叙述中正确的是o

A、只能是整数0或1

B、只能是整数0或非0整数

C、可以是结构体类型的数据

D、可以是任意合法的表达式

【答案】D

【解析】本题考查的是逻辑运算符。C语言中,逻辑运算符的两个运算分量可

以是任意合法的表达式。故本题应该选择D)。

18、有以下程序

#include<stdio.h>

voidfun(char*a,char*b)

(

while(*a==,*')a++;

while(*b=*a)

(

b++;

a++;

}

}

main()

(

char*s=,,****a*b****\t[80];

fun(s,t);

puts(t);

}

程序的运行结果是o

A、*****a*b

B、a*b

C、a*b****

D、ab

【答案】c

19、设有数据定义语句"inta[200];",下列数组元素引用中下标不越界的是

A、a[-l]

B、a[201]

C、a[0]

D,a[200]

【答案】C

20、定义file*fp;则文件指针fp指向的是。

A、文件在磁盘上的读写位置

B、文件在缓冲区上的读写位置

C、整个磁盘文件

D、文件类型结构体

【答案】B

二、判断题(每小题2分,共20分)

()1、表达式!(x>0y>0)等价于!(x>0)&&!(y>0).()

【答案】正确

()2、逻辑运算符&&!的运算顺序是!优先于&&优先于||()

【答案】正确

()3、指向数组元素的指针只可指向数组的首元素

【答案】错误

()4、以下程序段中,当i大于10或者s大于20时,循环结束。

【答案】正确

()5、字符常量与字符串是两种不同的常量。

【答案】正确

()6、main函数是c语言的主函数。

【答案】正确

()7、对以下定义的二维数组table,其行下标的取值范围是[0,2],列下标的取值范围

是[0,1],数组元素分别是:table[0][0]、table[0][1]>table[l][0],table[1][1],

table[2][0]和table[2][1],可以表示一个3行2列的矩阵。inttable[3][2];

【答案】正确

()8、函数定义在先、调用在后时,vc++允许省略函数声明。

【答案】正确

()9、数组定义中,数组名后是用方括号括起来的常量表达式,不能用圆括号。

【答案】正确

()10、要使用标准输入、输出函数,正常情况下应该在文件的开头加上以下内容:

ttinclude<stdio.h>

#include"stdio.h"o

【答案】正确

三、编程题(每小题分,共40分)

1、编写程序:输出100〜200之间既不能被3整除也不能被7整除的整数

并统计这些整数的个数,要求每行输出8个数。(本题10分)

【答案】#include<stdio.h>

#include<conio.h>

ttinclude<stdlib.h>

#include<math.h>

voidmain()

inti;

/************fotind************/

intn=0;

for(i=100;i<=200;i++)

/************found************/

if(i%3!=0&&i%7!=0)

if(n%8==0)printf("\n");

printf("%6d",i);

n++;

)

)

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

)

2、编写程序:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的

三位数?都是多少?(本题14分)

【答案】#include<stdio.h>

intmain()

(

inti,j.k;

printf("\n");

for(i=l;i<5;i++){//以下为三重循环

for(j=l;j<5;j++){

for(k=l;k<5;k++){//确保i、j、k三位互不相同

if(i!=k&&i!=j&&j!=k){

printf("%d,%d,%d\n",i,j,k);

)

)

)

)

}

【解析】有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位

数?都是多少?

3、编写程序:创建一个长度为n的链表,然后反向输出该链表。(本题16

分)

【答案】#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

typedefstructLNode{

intdata;

structLNode*next;

}LNode,*LinkList;

LinkListCreateList(intn);

voidprint(LinkListh);

intmain()

I

LinkListHead=NULL;

intn;

scanf(,f%dM,&n);

Head=CreateList(n);

printf("刚刚建立的各个链表元素的值为:\n”);

print(Head);

printf(M\n\n,r);

system(Hpausen);

return0;

)

LinkListCreateList(intn)

(

LinkListL,p,q;

inti;

L=(LNode*)malloc(sizeof(LNode));

if(!L)return0;

L->next=NULL;

q=L;

for(i=l;i<=n;i++)

(

p=(LinkList)malloc(sizeof(LNode));

printf("请输入第%d个元素的值:",i);

scanf(,&(p->data));

p->next=NULL;

q->next=p;

q二P;

returnL;

)

voidprint(LinkListh)

LinkListp=h->next;

while(p!=NULL){

printf(H%dM,p->data);

p=p->next;

)

)

长春工程学院

C语言程序设计专升本测试卷(三)

总分:100分考试时间:90分钟

注意事项:

>题目包括三大部分,单项选择题,判断题,编程题,请按要求在规定时间内作答。

>考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。

一、单项选择题(每小题2分,共40分)

1、在C语言中,要求运算数必须是整型的运算符是。

A、>

B、++

C、!=

D、%

【答案】D

2、以下不能正确计算代数式值的c语言表达式是o

A、l/3*sin(l/2)*sin(l/2)

B、sin(0.5)*sin(0.5)/3

C、pow(sin(0.5),2)/3

D、1/3.0*pow(sin(1.0/2),2)

【答案】A

3、若有定义语句intb=2;则表达式(b<<2)/(3||b)的值是________。

A、4

B、8

C、0

I)、2

【答案】B

4、c语言中,关系表达式和逻辑表达式的值是

A、0

B、0或1

C、1

D、T或'F'

【答案】B

5、下述关于break语句的描述中,()是不正确的。

A、break语句可用于循环体内,它将退出该重循环

B、break语句可用于switch语句中,它将退出switch语句

C、break语句可用于对体内,它将退出if语句

I)、break语句在一个循环体内可以出现多次

【答案】C

6、若有定义:"inta[2][3];",则对a数组的第i行第j列元素的正确引用为()。

A,*(*(a+i)+j)

B、(a+i)[j]

C、*(a+j+j)

D、*(a+i)+j

【答案】A

7、设整型变量a为5,使b不为2的表达式是。

A、b=a/2

B、b=6-(—a)

C、b=a%2

D、b=a>3?2:1

【答案】c

8、对于代码charcl[8];

scanf("%s",cl);

printf(,,\n%sM,cl);

在程序运行时,输入了"thisprettyboy”,则对应的运行输出显示结果是。

A、thispre

B、this

C、thisprettyboy

D、数组越界,不能显示

【答案】B

9、c程序中的宏展开是在。

A、编译时进行的

B、程序执行时进行的

C、编译前预处理时进行的

D、编辑时进行的

【答案】C

10,下列关于boo1ean类型的叙述中,正确的是。

A、可以将boolean类型的数值转换为int类型的数值

B、可以将boolean类型的数值转换为字符串

C、可以将boolean类型的数值转换为char类型的数值

D、不能将boolean类型的数值转换为其他基本数据类型

【答案】D

11,以下关于数组的描述正确的是。

A、数组的大小是固定的,但可以有不同的类型的数组元素。

B、数组的大小是可变的,但所有数组元素的类型必须相同。

C、数组的大小是固定的,但所有数组元素的类型必须相同。

D、数组的大小是可变的,但可以有不同的类型的数组元素。

【答案】C

12、以下描述错误的是o

A、实参数可以与形参个数不一致。

B、C程序中,函数可以直接或间接地调用自己。

C、函数调用时,函数名必须与所调用的函数名字完全一致

D、函数声明语句中的类型必须与函数返回值得类型一致。

【答案】A

13、以下关于c语言的叙述中正确的是。

A、C语言中的注释不可以夹在变量名或关键字的中间

B、C语言中的变量可以再使用之前的任何位置进行定义

C、在C语言算术的书写中,运算符两侧的运算数类型必须一致

D、C语言的数值常量中夹带空格不影响常量值的正确表示

【答案】B

14、以下叙述正确的是

A、函数可以嵌套定义但不能嵌套调用

B、函数既可以嵌套调用也可以嵌套定义

C、函数既不可以嵌套定义也不可以嵌套调用

I)、函数可以嵌套调用但不可以嵌套定义

【答案】D

【解析】考查函数的定义及其调用。

[解题要点]在C语言中,所有的函数都是平行的,即在定义函数时是互相独立

的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调

用,但不能调用main函数。

[错解分析]函数不能嵌套定义,但可以嵌套调用,故选项A)、B)和C)中的描

述都错误。

15、以下程序的输出结果是o

#defineN10

voidfun(inta[],intn,intm)

(

inti;

for(i=m;i>=n;i―)A[i+l]=a[i];

}

main()

(

inti,a[N]={l,2,3,4,5,6,7};

fun(a,2,6);

for(i=0;i<4;i++)printf("%d",a[i]);

A、1223

B、1233

C、1244

D、1234

【答案】B

16、下面程序段执行后输出的结果是

#include<stdio.h>

main()

(

inti;

for(i=l;i<8;i++)

if(i%3)

(

printf(”*");

continue;

)

)

printf(,r#n);

}

printf("\n");

A、*#**#**#

B、**#**#*

C、*#**#**

D、**#**

【答案】B

【解析】#include<stdio.h>

main(){

inti;for(i=l;i<8;i++)/*循环条件为iV8,步进值为1*/{{

if(i%3){

printf("*〃);continue;}}/*如果能被3整除打印输出并跳过后面的

语句直接执行下次徨*/printf。#");/*如果不能被3整除打印输出年"*/}

printf(H\n,f);}

17、以下对枚举类型名的定义中正确的是o

A、enuma={onetwo,three};

B、enuma{one=9two=-l,three)

C、enuma二{“one”"two","three”}

D、enuma{"one”"two","three,r}

【答案】B

18、有以下程序段intm=0,n=0;

charc=rar;

scanf(H%d%c%d",&m,&c,&n);

printf(,,%d,%c,%d\nM,m,c,n);

若从键盘上输入:20b20/,则输出结果是—

A、20,B,20

B、20,b,20

C、20,b,0

D、20,B,0

【答案】A

19、以下能正确定义一维数组的选项是。

A、inta[5]={

0.1,2.3.4,5);

B、chara[]={

0,1,2,3,4,5);

C、chara={'A",'B','C');

D、inta[5]=”0123”;

【答案】B

20、下面说法正确的是o

A、文件指针变量的值是文件当前正在处理的字节地址

B,文件指针变量的值是文件中包含的字符个数

C、文件指针的类型是一种指针类型

D、文件指针的类型是结构体类型

【答案】C

【解析】文件指针变量的值是文件所在的地址,选项AB错误;文件指针也是

一种指针,属于指针类型不是结构体类型,选项C正确,D错误;本题答案为C

二、判断题(每小题2分,共20分)

()1、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是0()

【答案】正确

()2、for语句的一般形式如下,若表达式2的值为"真",则先执行循环体语句,再计算

表达式3,然后继续循环。

【答案】正确

()3、c程序中如果对一维数组的全部元素都赋初值,则定义数组时不必指定数组长

度。

【答案】正确

()4、break语句可以用来跳出整个循环语句

【答案】正确

()5、chars="CLanguage";表示s是一个指向字符串的指针变量,把字符串的首地

址赋予s

【答案】正确

()6、在一个c语言源程序中,main函数的位置可以不位于最开始。

【答案】正确

()7、若有定义一维数组inta[4]的首地址为0078h,则a[l]元素的首地址是

0079h(设int型数据占两个字节)。

【答案】错误

()8、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。

【答案】错误

()9、putchar函数可以向终端输出一个字符串

【答案】错误

()10、在c程序中,若链接过程没有发现任何错误则表示链接成功,会生成一个".obj"

文件。

【答案】错误

三、编程题(每小题分,共40分)

1、编写程序:在第一个循环中给a数组的前10个数组元素依次赋

..9.10;

在第二个循环中使a数组前10个元素中的值按逆序存放,变成

..2.1;

在最后一个循环中输出逆序存放以后的a数组前10个元素(本题10分)

【答案】Sinclude<stdio.h>

main()

inti,a[10],t;

for(i=0;i<10;i++)a[i]=i+l;

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

(

t=a[i];

a[i]=a[i]=a[9-i];

_______=t;

)

for(i=0;i<10;i++)printf("%5d",a[i]);

printf("\n");

)

2、编写一个函数,从传人的m个字符中找出最长的一个字符串,并通过形参指针

max传回该串地址(用****作为结束输入的标志)。注意:部分源程序给出如

下。请勿改动main。函数和其他函数中的任何内容,仅在函数proc。的花括号

中填人所编写的若干语句。试题程序:

char*proc(char(*a)[81],intnum)

{

)

voidmain()

(

charss[10][81],*max;

intn,i=0;

printf("输入若干个字符串:");

gets(ss[i]);

puts(ss[i]);

while(!strcmp(ssLi],"****")==0)

(

i++;

gets(ssei]);

puts(ss[i]);

)

n=i;

max=proe(ss,n);

printf("\nmax=%s\n",max);

)(本题14分)

【答案】char*proc(char(*a)L81],intm)

char*max;

inti=0:max=a[O]:for(i=0;i<m;i++)if(strlen(max)<

strlen(a[i]))〃找出最长的字符串max=a[i];

returnmax;

〃返回最长字符串的地址

3、题目描述

有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩。读入这10

个学生的数据,要求输出3门课程的总平均成绩,以及个人平均分最高的学生

的数据(包括学号、姓名、3门课程成绩、平均分数)。

输入

共有10行,每行包含了一个学生的学号(整数)、名字(长度不超过19的无空

格字符串)和3门课程的成绩(0至100之间的整数),用空格隔开。

输出

第一行包含了3个实数,分别表示3门课程的总平均成绩,保留2位小数,每

个数之后输出一个空格。

第二行输出个人平均分最高的学生的数据,与输入数据格式相同。如果有多位

个人平均分最高的学生,输出按照输入顺序第一个最高分的学生数据。

请注意行尾输出换行。

样例输入

样例输出

85.6087.9090.40

105EEE929394(本题16分)

【答案】#include<stdio.h>

#include<string.h>

structpeople{

intnum,a,b,c;

charname[10];

);

intinput(structpeoplestu[]){

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

scanf(,f%d%s%d%d%dH,&stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&s

tu[i].c);

intprint(structpeoplestu[]){

doub1ex=0,y=0,z=0;

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

x=x+stu[i].a*l.0;

y=y+stu[i].b*l.0;

z=z+stu[i].c*l.0;

)

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

if((stu[i].a+stu[i].b+stu[i].c)>=(stu[i+l].a+stu[i+l].b+stu[i+l].c)){

stu[i+l].num=stu[i].num;

strcpy(stu[i+l].name,stu[i].name);

stuLi+1].a=stu[i].a;

stu[i+l].b=stu[i].b;

stu[i+l].c=stu[i].c;

)

)

printfC1%.2f%.2f%.2f\n\x/10.0,y/10.0,z/10.0);

printf(H%d%s%d%d%d\nn,stu[9].num,stu[9].name,stu[9].a,stu[9].b,st

u[9].c);}

intmain(){

structpeoplestu[10];

input(stu);

print(stu);

return0;

)

长春工程学院

C语言程序设计专升本测试卷(四)

总分:100分考试时间:90分钟

注意事项:

>题目包括三大部分,单项选择题,判断题,编程题,请按要求在规定时间内作答。

>考试中途不能无端离场,否则视为放弃。考试过程中如遇问题请及时向监考老师反馈。

一、单项选择题(每小题2分,共40分)

1、C语言中的标识符第一个字符。

A、必须为字母

B、必须为下划线

C、必须为字母或下划线

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

【答案】C

2、设有定义intx;floaty;则10+x+y值的数据类型是一一。

A、int

B、double

C、float

D、不确定

【答案】c

【解析】由算术运算符组成的表达式中,若含有不同类型的操作数,则系统隐

含地将低类型转化为高类型,由低至高的顺序为intffloatfdouble。

3、若有"doublea;",则正确的输入语句是一。

A、scanf(H%lf",a);

B、scanf(,r%fn,&a);

C、seanf(,r&a);

D、scanf("le",&a);

【答案】B

4、以下程序的输出结果是________o

#include<stdio.h>

main()

inta=l,b=3;

if((++a<0)&&!(b--<=0))printf(M%d,%d\nH,a,b);

elseprintf(,r%d,%d\n',,b,a);

)

A、2,2

B、1,3

C、3,2

D、3,1

【答案】c

【解析】解答本题的关键在于读懂if语句条件中的表达式。初始时a=l,

b=3,所以++a=2>0,因此++aVO为假,因为是进行逻辑与(&&)运算,在&&的

第一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得

出整个表达式的值为逻辑0,所以直接执行else语句。

5、有以下程序:

main()

(

intc=0,k;

for(k=l;k<3;k++)

switch(k)

(

default:c+=k;

case2:c++;

break;

case4:c+=2;

break;

)

printf(,r%d\nM,c);

}

程序运行后的输出结果是o

A、3

B、5

C、7

D、9

【答案】A

6、下列说法不正确的是。

A、一个C语言源程序可以由一个函数组成也可以由多个函数组成

B、main。中的“()”是函数的参数部分,括号内可为空,但括号不能省略

C、C语言程序是以函数为基本单位的

D、在C语言程序中,注释行只能位于一条语句的后面

【答案】D

【解析】本题涉及C语言基本的3个知识点:①C语言是以函数为基本单位

的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅

有一个主函数;②主函数main。的圆括号内是填写参数的,可以没有参数,但

括号不可以省略:③程序的注释部分应该在"/*.......*/”之间,它允许出

现在程序的任何位置。

7、下面不是c语言整型常量的是。

A、081

B、01

C、-32768

D、0x81

【答案】A

【解析】本题考核整型变量的3种表示形式,选项B是一个八进制数;选项C

是一个十进制数;选项D是一个十六进制数;选项A以0开始没有跟字母x,

但后面的数字8并不是八进制中使用的数符,故选项A不是C语言的整型变

量。

8、inta[10];

合法的数组元素的最小下标值为一

A、10

B、9

C、1

D、0

【答案】D

9、以下选项中合法的实型常数是o

A、5E2.0

B、E-3

C、2E0

D、1.3E

【答案】C

【解析】本题考查实型常数的指数表示法,可以肯定的是指数不能为小数即必

须为整数。由于符号E前面必须有数字。D在指数符号后面没有数字,是错误

的。

10、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是。

A、大写字母

B、连接符

口数字字符

D、下划线

【答案】B

【解析】C语言的标识符要符合以下规定:

①标识符是个以字母或下划线开头的,由字母、数字、下划线组成的字符

串:

②标识符不能与任意一个关键字同名:

③标识符中的字母区分大小写。

故本题应该选择B。

11、在下面语句中,其含义为"p为指向含n个元素的一维数组的指针变量"的定义语句是

A、intp[n]

B、int*p();

C、int*p(n);

D、int(*p)[n]

【答案】D

12、以下叙述正确的是o

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

B、在C程序中,一行只能写一条语句

C、C程序的基本结构是程序行

D、C语句是完成某种程序功能的最小单位

【答案】D

13、以下选项中不合法的

温馨提示

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

评论

0/150

提交评论