C语言程序设计专升本样卷(八卷)及答案_第1页
C语言程序设计专升本样卷(八卷)及答案_第2页
C语言程序设计专升本样卷(八卷)及答案_第3页
C语言程序设计专升本样卷(八卷)及答案_第4页
C语言程序设计专升本样卷(八卷)及答案_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计专升本精选样卷(-)

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

1、微机中的32指的是o

A、微机型号码

B、机器字长

C、内存容量

D、存储单位

【答案】B

【解析】字长越长,计算机一次处理的信息位就越多,精度就越高,字长是计

算机性能的一个重要指标。目前,微机的字长以32位、64位为主。

2、设inti=2,j=l,k=3,则表达式i&&(i+j)&k|i+j的值是o

A、0

B、2

C、1

D、3

【答案】C

3、以下各选项企图说明一种新的类型名,其中正确的是o

A、typedefvlint;

B、typedefv2=int;

C、typedefintv3;

D、typedefv4:int;

【答案】C

4、以下if语句书写正确的是o

A、if(x=0;)

printfx);

elseprintf-x);

B、if(x>0)

x=x+l;printf(〃%f〃,x);

elseprintf(〃%f〃,-x);

C、if(x>0);

x=x+l;printfx);

elseprintf(〃%f〃,-x);

D、if(x>0)

x=x+l;x)

elseprintf(〃%f〃,-x);

【答案】B

5、以下程序的功能是计算s=l+12+123+1234+12345o

#include<stdio.h>

main()

intt=0,s=0,i;

for(i=l;iV=5;i++){

t=i+;

s=s+t;

)

printf("s=%d\n〃,s);

则部分是o

A、t

B、t*10

C、t*100

D、t+10

【答案】B

【解析】1、12、123、1234、12345可以写成1=0*10+1、12=1*10+2、

123=12*10+3、123=123*10+4^12345=1234*10+5.按照这种规律后一项可以等

于前一项乘以10再加上循环变量。这属于循环里面比较难的题目,需要考生找

出其数据的内在规律,并转化为计算机语言,基本上都是累加和累积两种。

6、以下定义:int(*p)[4]中,标识符p是_______o

A、一个指向整型变量的指针

B、一个指针数组名

C、一个指针,它指向一个含有4个整型元素的一维数组

D、说明不合法

【答案】C

【解析】本题中相当于定义了一个二维数组intp[][4],标识符p是一个指

针,指向一个含有4个元素的一维数组。

7、若有定义语句:“charsel0]=〃1234567\0\0〃;〃,则strlen(s)的值是

A、7

B、8

C、9

D、10

【答案】A

8、下面程序的输出结果是o

main()

(

inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4]=a,i,j,k=0;

for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];

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

)

A、17

B、18

C、19

D、23

【答案】C

【解析】p是指向长度为4的一维数组的指针变量,可看作是二维数组a的行

指针,可以像使用数组名一样通过p带数组下标的形式来引用数组中元素,变

量k最后是元素的值。

9、以下选项中不正确的整型常量是。

A、12L

B、-10

C、12

D、2,900

【答案】D

10、请读程序片段(字符串内没有空格字

符):printf("%d\n",strlen("ats\n012\l\\"));

上面程序片段的输出结果是0

A、11

B、10

C、9

D、8

【答案】C

11、以下不正确的定义语句是0

A、doublex[5]=l.0,2.0,3.0,4.0>5.0;

B、inty[5]=0,1,2,3,4,5;

C、charcl□二T','2','3','4','5';

D、charc2□='a','b','c';

【答案】B

【解析】本题考查对一维数组的赋值。选项B)中,y[5]说明数组中有5个元

素,但却给它赋了6个值,数组溢出所以是错误的。

12、以下叙述正确的是o

A、C程序中各函数之间既允许直接递归调用,也允许间接递归调用

B、C程序中各函数之间不允许直接递归调用,也不允许间接递归调用

C、C程序中各函数允许直接递归调用,不允许间接递归调用

D、C程序中各函数之间不允许直接递归调用,允许间接递归调用

【答案】A

13、为了避免嵌套的条件分支语句if-else的二义性,c语言规定:c程序中的

else总是与()组成配对关系。

A、缩排位置相同的if

B、在其之前未配对的if

C、在其之前未配对的最近的if

D、同一行上的if

【答案】C

14、有如下语句:s=int(100*rnd)执行完毕后,s的值是______。

A、L0,99」的随机整数

B、[0,100]的随机整数

C、[1,99]的随机整数

D、[1,100]的随机整数

【答案】A

【解析】Rnd是一个随机数函数,其返回值是(0,1)内的数。Int(100*Rnd)对

100*Rnd的结果取整,得到的是[0,99]内的随机整数。

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

main()

(

intb[]={l,2,3,4,5,6,7,8,9,0},*q;

q二b;

printfr%d\n",*(q+0));

)

A、0

B、1

C、10

D、9

【答案】B

16、有下列程序:

#include<stdio.h>

main()

inta=6,b=7,m=l;

switch(a%2)

(

case0:m++;

break;

case1:m++;

switch(b%2)

(

defaut:m++;

caseO:m++;

break;

)

)

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

)

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

A、1

B、2

C、3

D、4

【答案】B

【解析】本题考查switch语句。第一个switch语句,因为a=6,a%2=0,所以

执行case。,将m加1,遇到break语句跳出switch语句,结束循环。

17、以下结构体类型说明和变量定义中正确的是。

A、typedefstruct

intn;charc;REC;

RECt1,t2;

B、struetREC;

intn;charc;;

RECtl,t2;

C、typedefstructREC;

intn=0;charc='A';tl,t2;

RECtl,t2;

D、struct

intn;charc;REC;

【答案】A

【解析】struct结构体名后不能加”号,所以选项B、C错误,选项D中

应为structtl,t2;选项A为正确的定义形式。

18、有以下程序

#include<stdio.h>

main(){

shortc=124;

c=c;

printf(〃%d\n〃、c);

)

若要使程序的运行结果为248,应在下划线处填入的是一

A、>>2

B、|248

C、&0248

D、<<1

【答案】D

19、以下数组定义中错误的是o

A、intxLJL3J={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};

【答案】B

20、以下对结构变量stul中成员age的非法引用是

structstudent

(

intage;

intnum;

}stul,*p;

p=&stul;

A、stul.age

B、student,age

C、p->age

D、(*p).age

【答案】B

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

()1、表达式是一长串式子,常量与变量并不是表达式。0

【答案】错误

()2、在一个文件中定义的全局变量其作用域还可以扩展到其他文件。

【答案】正确

()3、函数fscanfO和fprintfO这两个函数是对标准输入、输出设备进行读写,而不

是对磁盘文件进行读写。

【答案】错误

()4、若变量已正确定义,执行以下程序段,输入0或者负数时,循环结束。

total=0;

scanf(“/d”,&score);

while(score>0)

(

total=total+score;

scanf&score);

}

【答案】正确

()5、字符数组定义后,可以用赋值语句将一字符串常量或字符数组直接赋给一个字符

数组。

【答案】错误

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

【答案】正确

()7、以下定义了一个一维数组str,该数组可以存放81个字符型数据。char

str[81];

【答案】正确

()8、用数组名作函数参数时,数组中的元素可以发生变化,故违反了函数参数传递的单

向性。

【答案】错误

()9、宏定义是用宏名来表示一个字符串,在宏代换时以该字符串取代宏名。

【答案】正确

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

#include<graphics.h>^c#incljde/1,graphics.h"。

【答案】错误

三、填空题(每小题4分,共20分)

1、用&&写出判断一个字母是否为大、小写的语句

【答案】c>:'a'&&cV='z'

2、在c语言中,将字符串中大写字母转换成小写字母的函数是

[答案】strlwrftstrlwr()#strlwr(字符串)

3、执行下列程序段后,输出的a的值是o

main()

(

inta=0;

switch(a)

(

case0:a一;

break;

case1:a++;

break;

case2:a=a+5;

break

)

printfa):

)

【答案】-1

4、函数实参的传递分为

【答案】值传递和址传递

5、语言的函数体一般由—和—构成

【答案】定义语句I执行语句

四、程序分析题(每小题5分,共20分)

1、以下程序在输入5,2之后的执行结果是o

#include<stdio.h>

voidmain()

(

ints,t,a,b;

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

s=l;

t=l;

if(a>0)s=s+l;

if(a>b)t=s+t;

elseif(a==b)t=5;

elset=2*s;

printf(*s=%d,t=%d\n*,s,t);

)

【答案】s=211=3o

【解析】根据C语言“else总是与它前面最近的if配对”的规定,第一个if

无else配对,第二个if与第一个else配对,第三个if与第二个else配对。

当输入a=5,b=2后,第一个if语句执行的结果使s=2,第二个语句执行a>b

的结果使t=2+l=3,从而不执行第三个if语句。

2、下列程序段的运行结果是o

ttdefineMIN(x,y)x<y?x:y

main()

(

inta,b,min;

A=10,b=ll;

Min=MIN(a,b);

printf(,zmin=%d\nz,,min);

)

【答案】min=10

3、下面程序的运行结果是o

main()

inti=l,n=3,j,k=3,a[5]={l,4,5};

while(i<=n&&k>a[i])i++;

for(j=n-l;j>=i;j-)a[j+1]=a[j];

a[i]=k;

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

)

【答案】1345

4、下列程序段的运行结果是o

inta[5]={l,2,3,4,5),*p;

P=a;

printfC%dz,,*(p=p+2));

【答案】3

五、编程题(每小题分,共50分)

1、编写程序:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学

用A表示,60-89分之间的用B表示,60分以下的用C表示,(本题12分)

【答案】#include<stdio.h>

intmain()

(

intscore;

chargrade;

printf("请输入分数:”);

scanf&score);

grade=(score>=90)?*A1:((score>=60)?'B':'C');

printf(/z%c\n?>,grade);

return0;

}

2、编写程序:输入两个正整数m和n,求其最大公约数和最小公倍数。(本

题18分)

【答案】#include<stdio.h>

intmain()

(

inta,b,t,r,n;

printf("请输入两个数字:\n〃);

scanf(〃%d%d”,&a,&b);

if(a<b)

{t=b;b=a;a=t;}

r=a%b;

n=a*b;

while(r!=0)

(

a=b;

b=r;

r=a%b;

)

printf(〃这两个数的最大公约数是%d,最小公倍数是%d\n〃,b,n/b);

return0;

)

【解析】1)最小公倍数二输入的两个数之积除于它们的最大公约数,关键是求

出最大公约数;

(2)求最大公约数用辗转相除法(又名欧几里德算法)

1)证明:设c是a和b的最大公约数,记为c=gcd(a,b),a>=b,

令r=amodb

设a=kc,b=jc,则k,j互素,否则c不是最大公约数

据上,r=a-mb=kc-mjc=(k-mj)c

可知r也是c的倍数,且k-mj与j互素,否则与前述k,j互素矛盾,

由此可知,b与r的最大公约数也是c,即gcd(a,b)=gcd(b,amodb),得证。

2)算法描述:

第一步:a4-b,令r为所得余数(OWr第二步:互换:置a=b,b-r,并

返回第一步。

3、输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按

照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入格式:

输入第一行给出正整数n(<10)o随后n行,每行按照“姓名生日电话号

码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组

成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位

的数字及+、-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。

输入样例:

3

zhang1985040313912345678

wang19821020+86/p>

qian1984061913609876543

输出样例:

wang19821020+86/p>

qian1984061913609876543

zhang1985040313912345678(本题20分)

【答案】ttinclude<stdio.h>

structmessage

(

charnamel[30];

charname2[30];

charname3[30];

doubleprice;

);

structmessaged[10];

intmain()

(

intN;

scanf&N):

inti,j;

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

(

scanf(z,%s%s%s/z,d[i].namel,d[i].name2,d[i].name3);

scanf&d[i].price);

)

intt,r;

doublemax,min;

max=min=d[0].price;

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

if(min>d[j].price)

min=d[j].price;

t=j;}

if(max<d[j].price)

{

max=d[j].price;

)

)

printf(z,%.21f,%s%s%s\nz,,max,d[r].namel,d[r].name2,d[r].name3);

printf(z,%.21f,%s%s%s\n/r,min,d[t].namel,d[t].name2,d[t].name3);

return0;

}

C语言程序设计专升本精选样卷(二)

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

1、下列运算符中,不属于关系运算符的是O

A、+=

B、!二

C、<=

D、==

【答案】A

【解析】+=是算术赋值运算符。

2、设有语句:〃inta=l,b=2,*pl=&a,*p2=&b;〃,则使指针pl指向变量b的赋值

语句是______o

A、pl=*p2

B、*pl=p2

C、pl=p2

D、*pl=*p2

【答案】D

【解析】对于定义int*p,*q;,可以通过赋值语句p=q;,把指针变量q中的

地址值赋给指针变量P,从而使这两个指针变量指向同一地址。

3、有说明语句:inta,b;如果输入111322333,使得a的值为111,b的值为

333,则以下正确的语句是_______o

A、scanfC%3d%*3d%3dz,,&a,&b);

B、scanfC%*3d%3d%3dz,,&a,&b);

C、scanfC%3d%3d%*3dz,,&a,&b):

D、scanfC%3d%*2d%3d/z,&a,&b);

【答案】A

【解析】根据题意,要是a的值为11,b的值为333,必须在读入时指定a的

读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加%*

控制符用于跳过中间的三位输入数字,选项A正确;本题答案A

4、能正确表示a210或a<0的关系表达式是。

A、a>=10ora<=0

B、a>=10||a<=0

C、a>=10|a<=0

D、a>=10&&a<=0

【答案】B

5、若有intx=l;

,执行下列程序段后,变量X的正确结果是O

switch(x*10)

case9:x+=l;

break;

case10:x+=l;

case11:x+=l;

default:x+=l;

)

A、1

B、2

C、3

D、4

【答案】D

6、若要求从键盘读入含有空格字符的字符串,应使用函数

A、getcO

B、getsO

C、getchar()

D、scanf()

【答案】B

7、下面合法的语句是

A、inta=8,b;

b=++a++;

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

B、inta;

printfscanf("d〃,&a));

C^chara;

scanf,&a);

charb=scanf(〃b=%c〃,&b);

D、charc=getchar();

putchar((int)c);

【答案】D

8、有以下程序

main()

(

inta[3][2]={0},(*ptr)[2],i,j;

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

(

ptr=a+i;

scanf(〃%d〃,ptr);

ptr++;

)

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

(

for(j=0;j<2;j++)printf(〃%2d〃,a[i][j]);

printf("\n〃);

)

)

若运行时输入:123V回车,,则输出结果是o

A、产生错误信息

B、10

C、12

D、10203020000030

【答案】B

【解析】本题定义了一个二维数组a,又定义了一个指针变量ptr,它用于指向

包含2个元素的一维数组,在第一个for循环中,语句“pt厂a+i;〃用于将指针

变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第0行

的第1个元素和第1行的第1个元素赋了值1和2o

9、c语言中的标识符第一个字符。

A、必须为字母

B、必须为下划线

C、必须为字母或下划线

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

【答案】C

10、下列数据中为字符串常量的是

A、'A'

B、〃9〃

C、Howdoyoudo

D、'$abd'

【答案】B

11、在下面的字符数组定义中,哪一个有语法错误。

A、chara[20]="abcdefg”;

B、chara[]="x+y=55.”;

C、chara[15];

D、chara[10]='5';

【答案】D

【解析】[考点分析]考查声明数组的语法格式。

选项D的定义右语法错误。赋值号右边的字符应该是用双引号括起来。

12、以下错误的描述是:函数调用可以o

A、出现在执行语句中

B、出现在一个表达式中

C、做为一个函数的实参

D、做为一个函数的形参

【答案】D

13、下面不是c语言整形常数的是o

A、02

B、0

C、038

D、OXal

【答案】C

14、c语言中函数返回值的类型是由决定的.

A、函数定义时指定的类型

return语句中的表达式类型

C、调用该函数时的实参的数据类型

D、形参的数据类型

【答案】A

15、下列程序的执行结果是.

#include<stdio.h>

voidmain()

(

intx=0,y=l,z=0;

if(x=z=y)x=3;

printf(z,%d,%d\n〃,x,z);

}

A、3,0

B、0,0

C、0,1

D、3,1

【答案】D

16、以下叙述中正确的是o

A、N-S流程图只能描述简单的顺序结构的程序

B、程序的算法只能使用流程图来描述

C、结构化程序的三种基本结构是循环结构、选择结构、顺序结构

D、计算机可以直接处理C语言程序,不必进行任何转换

【答案】C

【解析】N-S流程图是可以描述循环结构、选择结构、顺序结构等多种结构的

程序,所以A选项错误。程序的算法可以用流程图、伪代码、N-S结构图等方

法表示所以B选项错误。计算机只能处理二进制表示的目标程序不能直接执行

由C语言编写的源程序所以D选项错误。

17、设有如下说明:

typedefstruct

(

intn;

charc;

doublex;

)

std;

则以下选项:能正确定义结构体数组并赋初值的语句是O

A、STDtt[2]={{l/A\62},{2,,B,,75}};

B、STDttL2」={l,〃A”,62,2,〃B",75);

C、struettt[2]={{1,'A'},{2,'B'}};

D、structtt[2]={{l,"A",62.5},{2,75.0});

【答案】A

【解析】本题定义了一个结构体类型并白定义类型名为STD,用户自定义类型

后,就可以利用它进行变量与数组的定义。定义的方法,与C语言中其它类型

的定义完全一样,定义结构型数组并赋初值时,每个元素用一对“{”和“厂括

起来,字符型元素用…”括起来,选项A、B、C、D中只有选项A符合条件。所

以,A选项为所选。

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

ftdefinef(x)x*x

main()

(

inta=6,b=2,c;

c=f(a)/f(b);

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

)

A、9

B、6

C、36

D、18

【答案】C

19、已知有数组定义chara[3][4];下列表达式中错误的是_______。

A、a[2]=/zWINz,

B、strcpy(a[2],"WIN")

C、a[2][3]='W'

D、a[O][l]=a[O][l]

【答案】A

【解析】本题考查数组的基本知识,B、C、D在C语言中都是允许的,A选项的

赋值是非法的。

20、enuma

(

sum二9,mon=-l,tue

定义了O

A、枚举变量

B、3个标识符

C、枚举数据类型

D、整数9和T

【答案】C

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

()1、模运算符%,可以用于任何类型变量或常量。

【答案】错误

()2、关系表达式的值是一个逻辑值,即〃真〃或“假〃,并且用0表示"假”,用1表示〃真

〃O

【答案】正确

()3、数组的下标从1开始。

【答案】错误

()4、若有intk=1;

while(k=l)k++;

则while循环执行的次数是1次

【答案】错误

()5、用puts和gets函数可以输入或输出多个字符串。

【答案】错误

()6、通过return语句,函数可以带回一个或一个以上的返回值。

【答案】错误

()7、字符串必须以'0'结束,但字符数组可以不包括‘0'。

【答案】正确

()8、函数的形参可以是常量,变量或表达式

【答案】错误

()9、一个数组是由连续的一块内存单元组成的,指针变量就是这次连续内存单元的首

地址

【答案】错误

()10、c语言程序是从源文件的第一条语句开始执行的

【答案】错误

三、填空题(每小题4分,共20分)

1>已知charstr□二〃man”,则strlen(str)的值为。

【答案】3

2、int*p的含义是o

【答案】['指针变量P为整型’]

3、结构化程序三种结构为o

【答案】选择,顺序,循环

4、在c语言中,从参数的形式看,函数可以分为两类:无参函数和

函数。

【答案】有参

5、定义4行3列的整型二维数组a的语句是o

【答案】Uinta[4][3];

']

四、程序分析题(每小题5分,共20分)

1、以下程序运行后的输出结果是_______o

main()

(

inta=l,b=3,c=5;

if(c=a+b)printf(〃yes'n");

elseprintf(〃no\n〃);

)

【答案】「yes']

2、以下程序对输入两个整数,按从大到小的顺序输出。请在—内填入正确的

内容。

voidmainO

(

intx,y,z;

scanf(z/%d,%d〃,&x,&y);

if()

printf("%d,%d”,x,y);

)

【答案】x<y|

x二y;

y二z;

【解析】其中这里用到了交换变量的方法,如果交换2个变量,则增加一个临

时变量,然后让三个变量在赋值语句中的位置形成一个环,如a=b;b=c;

c=a0如果是n个变量交换,同样是让他们位置形成一个环。如al=a2;

a2=a3;a3=…an-l=an;an=alo

3、下面是实现打印九九乘法表的程序,请在画线的位置填上适当的语句,使程序

(段)完整。

main()

inti,j,k;

for(i=l;;i+-)

(

for(j=l;;j++)printfC%d*%d=%dz,,);

printf("\n〃);

)

)

【答案】['iV=9','jV=9','i,j,i*Y]

4、以下程序运行后的输出结果是o

main()

(

charc;

intn=100;

floatf=10;

doublex;

x=f*二n/=(c=50);

printf("%d%f\n〃,n,x);

)

【答案】「220']

五、编程题(每小题分,共50分)

1、编写程序,将从键盘输入的10个整数按升序排列输出。(本题12分)

【答案】^include<stdio.h>

voidmain()

(

inta[10],i,j,t;

printf(〃请输入10个整数\n");

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

for(i=0;i<9;i-+)for(j=0;j<9-i;j++)if(a[j]>

a[j+1])

(

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

printf(〃排序结果:\n〃);

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

)

2、编写程序:从键盘输入的10个整数中,找出第一个能被7整除的数。若找

到,打印此数后退出循环;

若未找到,打印"notexist”。(本题18分)

【答案】#inc案de'stdio.h"

main()

(

inti,a;

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

(

scanf("%d",&a);

(

if(a%7==0)printf(〃%d〃,a);

break;

)

)

if(i-ll)printf("notexist");

)

3、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得

每位同学的平均分和总分,然后按照总分从高到低排序。(本题20分)

【答案】#include<stdio.h>

structmes

(

intsno;

charsname[20];

floatgrade1;

floatgrade2;

floatsum;

floatavg;

}student[5];/*定义结构体变量数组*/

intmain()

inti,j,k;

structmestemp;

printf(〃请输入五位学生的信息\n〃);

printf(〃学号\t姓名\t数学\t计算机\n");

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

(

scanf(z,%d\t%s\t%f\t%fzz,&student[i].sno,student[i].sname,

&student[i].gradel,&student[i].grade2);student[i].sum二

student[i].gradel+student[i].grade2;student[i].avg=

student[i].sum/2;

}/*输入每位学生间隔的信息时运用Tab键*/

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

{

k=i;

for(j=i+1;j<5;j++)

if(student[k].sum<student[j].sum)

k=j;

temp=student[k];student[k]=student[i];student[i]=temp;

)

printf(〃学生成绩的排序结果为:\n〃);

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

(

printf("学号:%d,姓名:%s,数学成绩:%3.If,计算机成:%3.If:%3.If,

分:%3.lf\n〃,student[i].sno,student[i].sname,student[i].gradel,

student[i].grade2,student[i].avg,student[i].sum);

}/*显示五位同学的信息*/

return(0);

}

C语言程序设计专升本精选样卷(三)

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

1、设有说明语句:chara='\123';则变量a______。

A、包含1个字符

B、包含2个字符

C、包含3个字符

D、包含4个字符

【答案】A

2、下面四个选项中,均是不正确的八进制数或十六进制数的选项是o

A、0160x8f018

B、Oabc017Oxa

C、010-0x110x16

D、0al27ff-123

【答案】D

【解析】八进制中,不可能包括8以上的数字,它的范围只在0〜7之间,以0

开头。同样,十六进制是以Ox开头,数字在0〜9和A〜F之间。

3、已知inti,a;

执行语句i=(a=2*3,a*5),a+6;

后,变量i的值是。

A、6

B、12

C、30

D、36

【答案】C

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

#include<stdio.h>

main()

(

inta=4,b=3,c=2,d=l;

printfa<b?a:d<c?d:b);

)

A、1

B、3

C、2

D、4

【答案】A

【解析】条件表达式的格式为:〃ab:c〃,它的功能是:当a为真时,表达式的

值等于b的值;当a为假时,表达式的值等于c的值。因为条件运算符的结合

方向为“自右向左”。因此,当表达式中嵌套使用条件表达式时,应先计算右

边的条件表达式,再计算左边的条件表达式。题中应先计算“dVcd:b”的

“dVc”关系表达式的值,因为dTVc=2为真,所以取第一个表达式的值,即

d的值作为整个表达式的值。接着计算“aVba:d",a=4Vb=3为似,取第二个

表达式的值,即d的值作为整个表达式的值。

5、对于while、do…while循环结构,正确的说法是。

A、只是表达形式不同

B、do…while结构中的语句至少执行一次

C、while结构中的语句至少执行一次

D、条件成立时,它们有可能一次也不执行

【答案】B

【解析】注意区别while、do…while两种循环结构的异同:while循环是先判

断条件是否成立,成立时才执行;而do…while先执行再判断,它至少执行一

次。

6、下面程序的输出结果是_____o

main()

(

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

p=a;

printf("%d\n”,*(p+8));

}

A、0

B、8

C、10

D、9

【答案】D

7、有以下程序段intj;

floaty;

charname[50];

scanf("%2d%f%s〃,&j,&y,name);

当执行上述程序段,从键盘上输入555667777abe后,y的值为()。

A、55566.0

B、566.0

C、7777.0

D、566777.0

【答案】B

8、若有定义:inta[10],则充数组a元素的正确引用是。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

【答案】D

9、以下选项中,不合法的整型常数是o

A、32768

B、-56

C、03

D、OXaf

【答案】A

【解析】考查整型常数的表示方法。[解题要点]整型数据一般占2个字节,其

取值范围是:-32768〜+32767,而选项A)超过了整数的取值范围。[考点链接]

实型常数的表示方法。

10、下列数据中属于〃字符串常量〃的是。

A、ABC

B、〃ABC〃

C、'ABC'

D、'A'

【答案】B

11、二维数组a的成员是6个字符组成的串,行下标i的范围从0到8,列下标j

的范围从1到10,则存放a至少需要(44)个字节。

A、90

B、180

C、240

D、540

【答案】D

【解析】行下标i的范围从0到8,列下标j的范围从1至IJ10,则数组的共有

9*10=90个元素。每一个元素都占用6个字节。所以选D。

12、putchar()函数可以向终端输出一个()。

A、整型变量表达式值

B、实型变量值

C、字符串

D、字符或字符型变量值

【答案】D

13、c语言的程序一行写不下时,可以。

A、用逗号换行

B、用分号换行

C、在任意一空格处换行

D、用回车符换行

【答案】C

14、以下程序运行后的输出结果是

main()

(

chars口=“ABCD〃,*p;

for(p=s+l;p<s+4;p++)printf("%s\n〃,p);

)

A、ABCD

BCD

CD

D

B、A

B

C

D

C、B

C

D

D、BCD

CD

D

【答案】D

【解析】本题考查指向字符串指针的运算方法。执行p=s+l后,指针变量p就

指向字符串中的笫二个字符B,然后输出字符串〃BCD〃并换行;继续执行循环语

句,指针变量P指向下一个字符c,输出字符串〃CD〃,最后一次循环,p指向字

符〃D〃,输出字符串〃

15、若变量a是unsignedint型,二进制赋值为1000000010001111,则好a>>

2结果是o

A、1000000010001111

B、0010000000100011

C、0000001000111100

D、0000000010001110

【答案】B

16、下列各循环语句中,不是死循环的是_______o

A、inti=100;

while(i){

i=i%100+l;

if(i==20)

break;

}

B、inti,sum=O;

for(i=l;;i++)

sum=sum+l;

C、intk=0;

do

++k;

while(k>=0);

D、ints=3379;

while(s++%2+3%2)

s++;

【答案】A

【解析】分析各个选项。选项A中,当变量i的值等于20时,会执行break;

语句,即退出整个while循环体。所以选项A的循环语句不是死循环。其他各

个选项的循环语句中,没有循环退出点,所以都是死循环。

17、若有以下说明和语句:

structst

(

intn;

char*ch;

}

T

structsta[3]

(

5,〃abc〃,7,9,〃ghk〃

)

,*p=a则值为6的表达式是o

A、p++->n

B、p->n++

C、(*.n++

D、++p->n

【答案】D

【解析】根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的

一个元素所占的字节数,即p++使p由a[0]指向a[l]起始地址。本题++p->n

得到p指向的结构体变量中成员n的值使之加lo因为p指向数组a起始地

址,p->n的值为5,再执行自加1运行,结果为6。

18、要输出下面的图形,请完善程序。

ttinclude<stdio.h>

main()

(

inti,j,k;

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

(

for(j=l;j<=20-3*i;j++)printf(/zz,);

for(k=l;;k++)printf(〃%3d〃,k);

for(________;k>O;k++)printf(〃%3d”,k);

printf('\n");

)

)

A、k<=i

k=i

B、k<i

k=i-l

C、k<i

k二i

D、k<=i

k=i-l

【答案】D

19、设pl和p2是指向同一个int型一维数组的指制变量,k为int型变

量,则不能正确执行的语句是。

A、k=*P1+*P2;

B、p2=k;

C、Pl=P2;

D、k=*Pl*(*P2);

【答案】B

20、有以下程序

structs

(

intn;

inta[20];

}

voidf(int*a,intn)

(

inti;

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

)

main()

(

inti;

structss={10,

{

2,3,1,6,8,7,5,4,10,9});

f(s.a,s.n);

for(i=0;i<s.n;i++)printfC%d,s.aLiJ);

)

程序运行后的输出结果是_____。

A、2,4,3,9,12,12,11,11,18,9,

B、3,4,2,7,9,8,6,5,11,10,

C、2,3,1,6,8,7,5,4,10,9,

D、1,2,3,6,8,7,5,4,10,9,

【答案】A

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

()1、若有正确变量定义,表达式x=y=l符合c语言语法。()

【答案】正确

()2、结构是变量的集合,可以按照对基本数据类型的操作方法单独使用其成员变量。

【答案】正确

()3、在标准c中,没有逻辑型数据,故不能使用逻辑表达式。

【答案】错误

()4、continue只能用于循环体中。

【答案】正确

()5、c语言中,字符串常是最后一个字符是结束标志,该结束符是'0'。

【答案】错误

()6、一个函数中可以有多个return语句,当执行到某个return看句时,程序的控制流

程返回到调用该函数的地方,并将return语句中表达式的值作为函数值带回。

【答案】正确

()7、二维数组元素在内存中的存放顺序是按列主顺序存放

【答案】错误

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

【答案】错误

()9、数组元素下标的个数也称为维数,根据维数的不同,可将数组分为一维数组、二维

数组、三维数组、四维数组等。()

【答案】正确

()10、编写c语言程序的流程是:新建项目、添加源文件、编写代码、运行程序。()

【答案】正确

三、填空题(每小题4分,共20分)

1、静态存储的变量是在____时分配存储单元并赋初值,在程序整个运行期

间都不被释放。

【答案】编译

2、在C语言中的实型变量分为两种类型,它们是整形—和浮点型。

【答案】

3、语句主要是实现次数循环结构,while语句主要是实现当型循环结构。

【答案】for

4、对于文件末尾检测函数feof,如果文件指针已到文件末尾,则函数返回值是

【答案】非0#不等于0#非零#不等于零

5、有如下函数头:intmax(inti,intj),则此函数有个参数。

【答案】2

四、程序分析题(每小题5分,共20分)

1、语句putchar('a'+2);的输出结果是________。

【答案】结果是c

2、下列程序段的运行结果是____o

main()

(

inta=5,b=6,c;

intmin(int,int);

c=min(a,b);

printf(〃/d\n〃,c);

}

intmin(intx,inty)

(

intz;

if(x<y)z=x;

elsez=y;

returnz;

)

【答案】5

3、写出下列程序的运行结果。

fun(inta,intb)

(

if(a>b)return(a);

elsereturn(b);

}

main()

(

intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf(,z%d\nz,,r);

}

【答案】12

4、当执行以下程序时,如果输入abc,则输出结果是:

#include<stdio.h>

ttinclude<string.h>

voidmainO

(

charss[10]=〃l,2,3,4,5”;

gets(ss);

strcat(ss,“6789”);

printfss);

)

【答案】abc6789

【解析】gets函数将使用字符串“ABC”覆盖原来的“12345”字符串,然后再

将字符串“6789”连接到“ABC”上,故输出为“ABC6789”0

五、编程题(每小题分,共50分)

1、编写程序:写一个函数,求一个字符串的长度,在main函数中输入字符

串,并输出其长度。(本题12分)

【答案】^include<stdio.h>

ttinclude<stdlib.h>

intmain()

(

intlen;

charstr[20];

printf(〃请输入字符串:\n〃);

scanf(〃%s〃,str);

len=length(str);

printf(〃字符串有%d个字符。〃Jen);

)

〃求字符串长度

intlength(char*s)

(

inti=0;

while(*s!=>\0*)

i++;

s++;

returni;

)

2、编写程序输入三位数(100-999),然后按数字逆序输出°(例:输入

123/,输出321)o(本题18分)

【答案】#include<stdio.h>

voidmain()

{intn,ge,shi,bai;

printf("请输入一个三位正整数:”);

scanf&n);

if((n<100)||(n>999))

printf(〃输入数据有误!\n〃);

else

{ge=n%10;

shi=n/10%10;

bai=n/100;

printf("此数的逆序输出结果为:%d%d%d\n〃,ge,shi,bai);

)

}

3、编程序建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入当

输入数据为T时表示输入结束,使用结构体实现。(本题20分)

【答案】#include<stdlib.h>

#include<stdio.h>

structlist

(

intdata;

structlist*next;

);

typedefstructlistnode;

typedefnode*link;

intmain()

(

linkptr,head;

intnum;

ptr=(link)malloc(sizeof(node));

head=ptr;

printfC/pleaseinputdata->\n/z);

scanf&num);

温馨提示

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

评论

0/150

提交评论