吉林师范大学往年C语言程序设计专升本题目含答案解析_第1页
吉林师范大学往年C语言程序设计专升本题目含答案解析_第2页
吉林师范大学往年C语言程序设计专升本题目含答案解析_第3页
吉林师范大学往年C语言程序设计专升本题目含答案解析_第4页
吉林师范大学往年C语言程序设计专升本题目含答案解析_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

往年c语言程序设计专升本题目(-)

(总分100分,考试时长9C分钟)

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

1、若需要利用形参直接访问实参,则应把形参变量说明为()参数。

A、指针

B、引用

C、传值

D、常值

2、可在c程序中用作用户标识符的一组标识符是o

A、voiddefineWORD

B、as_b3_123If

C、For-abccase

D、2cDOSIG

3、分析下列程序:

#include<stdio.h>

main()

{-余

int*pl,*p2,*p;

inta=6,b=9;

pl=&a;

p2=&,b;

if(a<b)

P二pi;

pl=p2;

p2二p;

}

printf(〃%d,%d〃,xpl,*p2);

printf(〃/d,%d〃,a,b);

)

程序的输出结果为.O

A、9,66,9

B、6,99,6

C、6,96,9

D、9,69,6

4、卜面程序的运行结果是o

main()

inti,j,a=0:

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

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

(

if(j%2)break;

a++;

}

a++;

}

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

)

A、4

B、5

C、6

D、7

5、以下叙述中不正确的是。

A、空字符串(即两个双引号连写)只占一个存储单元

B、字符型常量可以放在字符型变量中

C、字符型常量可以放作字符串变量中

D、字符型常量可以与整数混合运算,而字符串常量不可以

6、若有定义"floata=25,b,*p=&b;",则下列对赋值语句〃*p=a;"和"p=&a;〃的正

确解释为()。

A、两个语句都是将变量a的值赋予变量P

B、*p=a是使P指向变量a,而p二&a是将变量的值赋予变量指针P

C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D、两个语句都是使P指向变量a

7、若有说明语句chara[]二〃itismine”:

char*p=〃itisnine”;

则以F不正确的叙述是。

A、a+1表示的是字符t白湎址

B、p指向另外的字符串时,字符串的长度不受限制

C、p变量中存放的地址值可以改变

D、a中只能存放10个字符

8、编写c语言程序并上机调试运行的一般过程是o

A、编辑■*编译-*连接-*运行

B、编译一编辑一连接一运行

C、编辑一连接一编译一运行

D、编译一连接一编辑一运行

9、宏定义用于将一个标识符定义为一个

A、常量

B、字符串

C、整数

D、长整数

10、int(*p)[6];它的含义为o

A、具有6个元素的一维数组

B、定义了一个指向具有6个元素的一维数组的行指针变量

C、指向整型指针变量

D、指向6个整数中的•个的地址

11、以下叙述中不正确的是。

A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给

实参

B、在C的函数中,最好使用全局变量

C、在C中,形式参数只是局限于所在函数

D、在C中,函数名的存储类别为外部

12>有输入语句:scanf(〃a=%d,b=%d,c=%d〃,&a,&b,&c);

为使变量a的值为1,b为3,c为2,从键盘输入数据的正确形式应当是o

(注:」表示空格)

A、132V回车》

B、1,3,2V回车,

C、a=lb=3-c=2V回车〉

D、a=l,b=3,c=2V回车,

13、以下各语句或语句组中,正确的操作是o

A、chars[3]=〃abcde〃;

char*s;gets(s);

char*s;s=〃abcde”;

,,,,

D、chars[5];scanf(%s)&s);

14、有以下程序

^include<studio.h>

#include<string.h>

structa

(七餐岁

inta;

charb[10];

doublec;

};

voidf(structat);

main()

(

structaa={1001,"zhangdan,1098.0};

f(a);

pringt("%d,%s,%6.lf\n",a.a,a.b,a.c);

}

voidf(structat)

(

t.a=1002;

strcpy(t.b,"changrong");

t.c=1202.0;

)

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

A、1001,ZhangDa,1098.0

1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

15、以卜.4组用户定义标识符中,全部合法的一组是——

A、_main

enclude

sin

B.Tf

-max

turbo

C、txt

REAL

3C0M

D、int

k2

_001

16、以下程序段的输出结果为

charc□二〃abc〃;

inti=0;

do;while(c[i++]!='\0');printfi-1);

A、abc

B、ab

C、2

D、3

17、若有以卜.说明和语句:

structst

intn;

char*ch;

}

I

structsta[3]

(

5,"abc",7,"def〃,9,〃ghk〃

)

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

A、p++->n

B、p->n++

C、(礼n++

D>++p->n

18、有以卜.程序intf(intb[][4])

inti,j,s=0;

for(j=0;j<4;j+~)

(

i二j;

if(i>2)i=3-j;

s+=b[i][j];

}

returns;

)

main()

{

inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};

printf(〃/d\n〃,f:a));

}

执行后的输出结果是_______O

A、12

B、11

C、18

D、16

19、若有定义:int43][5];则以下不能正确表示该数组元素的表达式是

A、*(*w+3)

B、*(w+l)[4]

C、*(*(w+1))

D、*(&w[0][0]+l)

20、以下对c语言中共用体类型数据的叙述正确的是

A、可以对共用体变量名直接赋值

B、一个共用体变量中可以同时存放其所有成员

C、一个共用体变量中不可以同时存放其所有成员

D、共用体类型定义中不能出现结构体类型的成员

二、填空题(每小题2分,共20分)

1、#include<stdio.h>

(

inti=010,j=10;

printf("%d,%d\n”,++i,j一);

}

2、符合结构化原则的三种基本控制结构是:选择结构、循环结构和。

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

4、在一个c源程序中,注释部分两侧的分界符分别为—和—o

5、下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

intn=0,ch;

ch=getchar();

while()

{

if()n++;

c=getchar();

)

6、以下程序运行的结果为。

^include<stdio.h>

intd=1;

fun(intp)

(

intd=5;

d+=p++;

pr*i(〃*d,〃,d);

)r|g|J缪—

voidmain()

(

inta=3;

fun(a);

cl+=a++;

,,,,

printf(%d\n,d);

)

7、字符读写函数是用于从磁盘文件中读出一个字符。

8、以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。

请填空。

ttinclude<stdio.h>

main()

{岁洛,遂

inta[10],*p,*s:

for(p=a;p-a<10:p++)scanf("%d",p);

for(p=a,s=a;p-a<10;p++)if(*p>*s)s=;

printf("index=%d\n,s-a);

)

9、若从键盘输入58,则以下程序输出的结果是o

main()

(

inta;

scanf(〃%d〃,&a);

if(a>50)printf(〃%d",a);

if(a>40)printfa);

if(a>30)printf(〃%d〃,a);

)

10^a=3;

a+=(a<l)?a:1;

printf("%d〃,a);

结果是________。

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

1、编写程序:判断101到200之间的素数。(本题10分)

2、编写程序:从键盘上输入一个数字组成的字符串(字符串长度小于8),将该字

符串转换成一个十进制数

例如:从键盘上输入2345,则程序运行的结果应当为:"2345()(本题14分)

3、题目描述

万里十佳歌手比赛终于开始了,评委席坐了N(N大于等丁-3,并且N小于80)个

评委,他们商量了很久,终于找出一个公正合理的评分方法。每次歌手唱完后,

每个评委自己打一个分,然后在N个评委的打分中,去掉一个最高分,一个最低

分。然后再把剩下的评委的打分求平均值~。

但是问题是他们嫌每次拿计算器按实在太烦。作为一名计算机专业学生~你用个

程序帮帮他们搞定吧。

输入

输入有多组数据。每组2行,第一行是一个N,代表有N个评委。然后第二行有

N个数,每个数用空格隔开,代表每个评委的打分。

当输入的N为0的时候结束输入。

输出

对于每组输入,输入最终这个选手的得分(小数点后面保留2位有效数字)。

样例输入

3

743634

7

16972726749688

样例输出

36.00

62.20(本题16分)

参考答案

一、单项选择题

1、B

【解析】在进行参数传递时,引用参数是利用形参直接访问实参,形参的变化直接影响实参

的变化,而传值参数不会影响实参变量。

2、B

【解析】C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字

母或下划线,关键字不能用作用户标识符。

3、A

【解析】通过pl二&a,p2=&b分别将a、b的地址赋给指针pl、p2,接着执行if语句,发

现a<b成立,则通过交换pl、p2的值,即交换a、b所在存储单元的地址,但是a、b的

值并没有发生变化。

4、A

5、C

6、C

7、D

【解析】解析:本题考杳字符串数组和指针的引用方式°在C语言中.系统在每个字符串或

数组的最后自动加入一个字符'\0',作为字符的结束标志,在本题中,chara口二“Itismire”;

所表示的。字符串实际含有"个字符。

8、A

9、B

【解析】宏定义用于将一个标识符定义为一个字符串

10、B

11、B

【解析】本题也是考查C语言中函数的概念及其使用。函数调用时,值可以双向传递,并没

有限制使用全局变量还是局部变量,需要根据程序的逻辑需要进行选择。

12、D

13、C

【解析】字符数组可以使用字符串进行初始化,但数组K度应足够容纳该字符串,选项A不

满足要求。

gets。函数用于读取字符串,并将字符串保存到参数代表的空间中,选项B中,只定义了字

符指针,没有空间存放字符串信息。

选项D定义了长度为5的字符数组,数组名称代表数组的首地址,使用scanf()读取字符串

时,参数为数组名即可。

14、A

15、A

16、D

17、D

【解析】根据结构变量的存储特点,P+1意味着增加地址值为结构体数组a的一个元素所占

的字节数,即P++使p由a[0]指向a[l]起始地址。本题++p->n得到p指向的结构体变量

中成员n的值使之加L因为p指向数组a起始地圻,p->n的值为5.再执行自加1运行,

结果为6。

18、D

19、B

【解析】本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的

指针来引用数组元素有两种写法:a[!]W*(a+i),它们是等价的。这是一种运算符之间的等价

转换,就好像a-(b-c)等价于a-b+c-样。知道了这种转换,可以将之扩展到二维数组甚至任

意维数组上来。因为口运算符的结合性是从左至右的,所以等价于此时可以

先将任意一个[运算符转换为指针形式为:(*(w+i))[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。

上述几种形式都完全等价于w[i]U]o

20、C

二、填空题

1、执行结果:9,10。

2、['顺序结构']

3、c>='a'&&c<='z'

4、[/*,*/]

5、['ch!二’\\n'ch>=0'0'\'&&ch<='9'']

6、8,4

7、fgetc#fgetc()#getc#getc()

8、p

9、[,5858581]

10、4

三、编程题

1、//include<stdio.h>

intmain()

(彩

inti.j;

intcount=0;

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

(

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

(

//如果j能被i整除在跳出循环

if(i%j==0)

break;

)

//判断循环是否提前跳出,如果j<i说明在2T之,皿i有可整除的数

if(j>=i)

(

count十十;

printf("%d",i);

〃换行,用count计数,每五个数换行

if(count%5==0)

printf("\n");

)

)

return0;

)

【解析】判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此

数不是素数,反之是素数,

2、//include"stdio.h"

main()

(

chars[10];

inti;

longintn=0;

scanf("%s",s):

for(i=0;i<strlen(s);i++)

n=n*10+s[i]-'0";

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

)

3、#include<stdio.h>

intmain(){

intt.nj.max,min,sum;

intscore[102]={0};

while(scanf("%d",&n)X

if(n==O)break;

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

scanf("%d",&score[i]);

max=-l;

min=101;

sum=0;

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

if(score[i]>max)

max=score[i];

if(score[i]<min)

min=score[i];

sum+=score[i];

}

sum-=max+min;

printf("%.2IAn",(double)sum/(n-2));

)

returnO;

)

往年C语言程序设计专升本题目(二)

(总分100分,考试时长90分钟)

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

1、计算机中的数有浮点和定点两种表示,浮点表示的数,通常由两部分组成,即

_0

A、指数和基数

B、尾数和小数

C、阶码和尾数

D、整数和小数

2、设有以下语句:intx=10;x+=3+x%(-3),贝I」x的值是_

A、14

B、15

C、11

D、12

3、以下叙述中正确的是________o

A、对于逻辑表达式:a++|b++,设a的值为1,则求解表达式的值后,b的值

会发生改变

'B、对于逻辑表达式:a++&&b++,设a的值为0,则求解表达式的值后,b的值

会发生改变

C、else不是一条独立的语句,它只是if语句的一部分

D、关系运算符的结果有三种

4、下列关于break语句的描述,不正确的是一

A、break语句可用在循环体内,它将使执行流程跳出本层循环体

Bsbreak语句可用在switch语句中,它将使执行流程跳出当前switch语句

C、break语句可用在订语句中,它将使执行流程跳出当前if语句

D、break语句在一层循环体中可以出现多次

5、以下对c语言函数的有关描述中,正确的是o

A、在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给

实参

B、C函数既可以嵌套定义又可以递归调用

C、函数必须有返回值,否则不能使用函数

D、函数必须有返回值,返回值类型不定

6、设inti=3,j=3;表达式i+++j的值是。

A、6

B、7

C、8

D、9

7、inta[10];

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

A、10

B、9

C、1

D、0

8、C源程序中的命令#includc与#《10门11。是在阶段被处理的。

A、预处理

B、编译

C、连接

D、执行

9、以下语句中,不能实现回车换行的是()。

A、printf(z,\n,z);

putchar("\n〃);

C^fprintf(stdout,,,\n,/);

D>fwrit6(〃\n〃,1,1,stdout);

10、以下数组定义中不正确的是.

A、inta[2][3];

B、intb[][3]={0,1,2,3};

C、intc[100][100]={0};

D、inta[3][]={{1,2},{1,2,3},{1,2,3,4}};

11、以下叙述中错误的是0

A、在一个程序中,每个模块均可以独立编译运行

B、程序“模块化”有利于任务的分解简化

C、允许对函数单独进行编译,是C语言实现“模块化”的基础

D、采用模块化结构,可以提高编程效率

12、以下叙述中正确的是。

A、转义字符要用双引号括起来,以便与普通的字符常量区分开

B、字符常量在内存中占2个字节

C、字符常量需要月单引号括起来

D、字符常量是不能进行关系运算的

13、有以下程序:

#include<stdio.h>

intf(intt[],intn;;

main(){

inta[4]=l,2,3,4,s;

s=f(a,2);

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

}

intf(intt[],intn;{

if((n>0)&&(n<5)^

returnt[n+l]+f3nT);

elsereturn0;

)

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

A、4

B、7

C、10

D、6

14、以下选项中,能定义m为合法的结构体变量的是____。

A、typcdefstructabc{

doublea;charb;}m;

B、struct{

doublea;charb;)m;

C、structABC{

doublea;charb;}ABCm;

D.typedefABC{

doublea;charb;)ABCm;

15、下面程序的运行结果是。

#include<stdio.h>

main()

(

charch[7]={//12ab56,z);

inti,s=0;

for(i=0;ch[i]>=,0*<=,;i+=2)s=10*s+ch[i]->0>;

,,,,

printf(%d\n>s);

}

A、1

B、1256

C、12ab56

D、1256

16、下面程序的输出结果是.

#include<stdio.h>

voidmain()

(

intx=3;

do

(

printf(z,%d”,x~=2);

)

while(!(-x));

)

A、1

B、1-2

C、30

D、是死循环

17、设有以下语句

typcdcfstructtt

(

charc;

inta[4];

)

cm;

则下面叙述中正确的是_____o

A、可以用TT定义结构体变量

B、TT是struct类型的变量

C、可以用CIN定义结构体变量

D、C1N是structTT类型的变量

18、执行下面程序后,运行结果是

^include<stdio.h>

voidmain()

(

intx=41,y=l;

if(x%3-0&&x%7~0)

{1

y+二x;

printf(〃y=%d\n〃,y);

)

else

(;

y二x;

printf(〃y=%d〃,y);

)

)

A、y=41

B、y=43

C、y二42

D>y=l

19、对f•定好的数组,系统会自动为该数组分配内存空间,charc[20]二{"hello

world”}对于c对应的内存中的地址编号是2000,则c[4]对应的内存地址的编

号为________o

A、2004

B、200A

C、2010

D、2008

20、若有以下语句:

typedefstructs

(

intg;

charh;

}t;

以下叙述中正确的是。

A、可用S定义结构体变量

B、可用T定义结构体变量

C、S是struct类型的变量

D、T是slruclS类型的变量

二、填空题(每小题2分,共20分)

1、已知〃floatx=0.5;inty=8;",则算术表达式〃(ini)(x+y/5)〃的值是

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

3、已知〃floatx=0.5:inty=13;则算术表达式〃x+y/5〃的值是。

4、若有〃inta[3][2]={{l,2},{3},{4,5}};

〃,则的值是o

5、执行下列的程序段后,正确的结果是o

inti=5;

while(i=1)i-;

printfi);

6、有以下程序,请填空—,程序的执行结果是一

main()

(:।I§11SiBW

intx=5,y;

y=++X*++X;

printf(〃y=%d\\n”,y);

)

floatfun(float)

main

套nflo逐atx,y号;壁遨麋:JBlIi-

intflag;

printf("enterx:〃);

scanf(〃〃,&x);

flag=fun(x);

if()printf(z,x=%fisoutofrange.\n,z,x);

elseprintf(,zx=%f,v=%f\n/z,x,fun(x)):

)

fun(floatx;

nfloats;

if(abs(x)>1)return(2);

else

(

s=sqrt(l-xxx);

___________f

}

)

7、在c语言中,如果采用printf函数将整个字符串一次输此那么对应的格式控

制符为〃〃。

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

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

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

main()

(

intx=0;

sub(&x,8,1);

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

)

sub(int*a,intn,intk)

(

if(k<=n)sub(a,n/2,2*k);

*a+二k;

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

1、编写程序:利用指针方法,输入3个数a,b,c,按大小顺序输出。(本题10

分)

2、任意输一行字符串(包括空格),求其长度(不用strlen函数)。(本题M

分)

3、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,

数据如下:201513135157张三90

1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上

2)将学生中不及格学生的姓名显示出来

3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数

(本题16分)

参考答案

一、单项选择题

1、C

【解析】在计算机中,带小数点的数通常有两种表示方法,即定点数和浮点数。所谓浮点数,

是指小数点位置可以浮动的数。一个二进制的浮点数可以用阶码和尾数来表示。

2、A

3、C

【解析】B选项和A选项中,对于逻辑表达式,其中b的值不会因为表达式的结果发生改

变;D选项中,关系运算符的结果有真和假两种。因此C选项正确

4、C

【解析】break语句只能用在switch语句和循环语句中。在switch语句中,break用来使执

行流程跳出switch语句,而继续执行switch后面的语句。在循环语句中,break用来使执行

流程无条件地跳出本层循环体。

5、A

【解析】C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能锹套定

义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

6、A

7、D

8、A

9、B

10、D

11、A

【解析】在程序设计时,用一个个小模块来实现不同的功能,个程序设计人员分别完成一个或

多个小模块,称这样的程序设计方法为“模块化”由一个个功能模块构成的程序结构称为模

块化结构,使用模块化结构程序设计,有利于任务的分解笥化,选项B正确C语言允许对函

数单独进行编译,从而可以实现模块化,选项C正确深用模块化结构,可以使不同模块的程序

员分别编写和调试,大大提高了编程效率,选项D正确;在语言程序中,每个模块并不一定能

够单独编译运行,选项A错误,本题答案A

12、C

【解析】B选项中,字符常量在内存中占1个字节;A选项中,转义字符是以反斜线“开头后跟

一个或几个字符;D选项中,字符常量可以进行关系运算,不能参与数值运算,因此C选项正

确“

13、B

【解析】本题主要考查的是函数的递归调用,子函数f是一个递归函数、所以主函数中执行

f(a.2)时,其执行过程是a[3]+f⑶1)=a[3]+a[2]+f(a,0)=7。

14、B

15、A

16、B

17、D

18、A

19、A

20、B

二、填空题

1、1

2、整形

3、2.5#2.500000

4、2

5、无限循环#死循环

6、['49',"flag==2',"float',return(s),]

7、%s

8、strlwr#sEwr()#strlwr(字符串)

9、结果是c

10、7

三、编程题

lx#include<stdio.h>

voidswap(int*,int*);

intmain(void)

inta,b,c;

int*pl,*p2,*p3;

printf("输入a,b,c:\n");

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

pl=&a;

p2=&b;

p3=&c;

if(a>b)

swap(pl,p2);

if(a>c)

swap(pl.p3):

if(b>c)

swap(p2,p3);

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

)

voidswap(int*sl,int*s2)

(

intt;

t=*sl;*sl=*s2;*s2=t;

)

2、#include<stdio.h>

intmain()

(

inti,n=0;

chars[80];

gets(s);

for(i=0;s[i]!='\0,;i++)0

printf("%d",i);

)

3、//include<stdio.h>

#defineNUM3

structstudent

(

char*sno=newchar[20];

char*name=newchar[20];

intscore;

boolfail=false;

):

voidstuSort(student*stu)

(

studenttmp;

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

(

for(intj=0;j<NUM;j++)

(

if(stu[j].score<stu[i].score)

(

=stu[j].name;

tmp.sno=stu[j].sno;

tmp.score=stu[j].score;

stu[j].name=stu[i].name;

stu[j].sro=stu[i].sno;

stu[j].score=stu[i].score;

stu[i].name=;

stu[i].sro=tmp.sno;

stu[i].score=tmp.score;

)

}

}

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

(

printf("%s%s%d\n",stu[i].sno,stu[i].name,stu[i].score);

)

)

voidstuFailfstudent*stu)

(

intnumOfStu=0;

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

(

if(stu[i].fail==true)

(

printf("%s"Istu[i].name);

}

else

(

numOfStu十十;

}

)

if(numOfStu==NUM)

printf("%s\n","nofail");

)

)

voidstuAvg(student*stu)

(

intstuScore=0;

doublestuAvg=0;

intent=0;

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

(

stuScore+=stup].score;

)

stuAvg=stuScore/NUM;

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

(

if(stu[i].score<stuAvg)

(

ent++;

)

)

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

)

intmain()

(

student*stu=newstudent[NUM];

for(inti=0;i<NUM;++j)

printf(”输入学号:”);

scanf("%s",stu[i].sno);

p「intf("输入姓名:");

scanf("%s",stu[i].nanne);

printf(”输入功课成绩:

scanf("%d",&stu[i].score);

)

stuSort(stu);

stuFail(stu);

stuAvg(stu);

delete[]stu;

stu=NULL;

return0;

}

往年C语言程序设计专升本题目(三)

(总分100分,考试时长90分钟)

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

1、已知大写字母a的ascii码值是65,小写字母a的ascii码是97,则用八进

制表示的字符常量是0

A、字符A

B、字符a

C、字符。

D、非法的常量

2、使下列程序段输出"123,456,78〃,键盘输入数据,正确的输入是_。

inti,j,kscanf(〃%d,%3d%d”,&i,也j,&k);

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

A、12345678

B、123,456,78

C、123,45678

I)、123,*45678

3、a,b为整型变量,一者均不为0,以卜关系表达式中恒成立的是()。

A、a*b/a*b==l

B、a/b*b/a—1

C、a/b*b+a%b==a

D、a/b*b二二a

4、以下程序中,while循环的循环次数是o

main()

(

inti=0;

whi1e(i<10)

if(i<1)continue;

if(i==5)break;

i++;

}

A、1

B、10

C、6

D、死循环

5、已有定义:inti,a[10],*p;则合法的赋值语句是

A、p=100;

B、p=a[5]

C、p=a[2]+2

D^p=a+2;

6、以下合法的c语言赋值语句是_______。

A、a=b=58

B、k=int(a-:

C>a=58,b=20

D、++i;

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

语句是o

A.intp[n]

int*p();

C^int*p(n);

D>int(*p)[n]

8、下列字符中,错误的转义字符是o

A、'\'

B、'\n'

C、,\一

D、'\091'

9、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。

charx[]=,,progranuning/,;

chary□二〃fortran”;

inti=0;

while(x[i]!='\0'!='\0')

if(x[i]=y⑴)printf(〃枇〃,_);

elsei++;

A、x[i++]

B、y[++i]

C、x[i]

D、y[i]

10、若有说明:inta⑶[4]=。};则下面正确的叙述是()。

A、只有元素a[0][0]可得到初值0

B、此说明语句不正确

C、数组a中各元素都可得到初值,但其值不一定为0

D、数组a中每个元素均可得到初值0

11>函数的值通过return语句返回,下面关于return语句的形式描述错误的是

________O

A、return表达式;

B、return(表达式);

C、一-个return语句可以返回多个函数值

D、一个return语句只能返回一个函数值

12、汉字国标码规定的汉字编码每个汉字用个字节表示。

A、1

B、2

C、3

D、4

13、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是o

A、chars[10]="abcdefg”;

B、chart□二"abcdefg",*s=t;

C、chars[10];s=“abcdefg”;

D>chars[10];strcpy(s,"abodefgr,);

14、设有以下说明语句:

structstu

(

inta;

floatb;

}

suttype;

则下面叙述不正确的是o

A、slrucl是结构体类型的关键字

B、structstu是用户定义的结构体类型

C、suttype是用户定义的结构体类型名

D、a和b都是结构体成员

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

mainO

(段y-♦

floatx=3.6;

inti;

i=(int)x;

printf(,,x=%f,i=%d\n,z,x,i);

)

A、x=3.600000,i=4

13、x=3,i=3

C、x=3.600000,i=3

D、x=3i=3.600000

16、程序语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体

的while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循

环结构,在不改变循环体的条件下,(17)是正确的。

A、while语句的功能可由do-while语句实现

B、do-while语句的功能可由while语句实现

C、若已知循环体的次数,则只能使用while语句

D、循环条件相同时,do-while语句的执行效率更高

17、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是

structstu

(

inti;

intname;

}st,*p;

p=&st;

A、si

B、*i

C、(礼i

D、p->i

18、有以卜.程序

#include<stdio.h>

main()

(

char*s={"abc〃}:

do

(

printf(〃%d〃,*s/10);

s++;

)

while(*s);

)

注意:字母a的ascii码值为65o程序运行后的输出结果是。

A、5670

B、656667

C、567

D、ABC

19、数组a[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地

址为1000的连续的内存单元中,则元素a[5,5]的地址为(15)。

A、1140

B、1145

C、1120

D、1125

20、F列描述说明正确的是。

A、定义结构体时,它的每个成员的数据类型可以不同

B、不同结构体的成员名不能相同

C、结构体定义时,其成员的数据类型不能是结构体本身

D、结构体定义时各成员项之间可用分号也可用逗号隔开

二、填空题(每小题2分,共20分)

1、C语言中的每条基本语句以作为结束符,每条复合语句以}作为结束符。

2、在c语言中,〃a〃在内存中占()个字节。

3、C语言中的标识符只能由三种字符组成,他们是字母,数字,

4、局部变量的作用域是从的位置起,到函数结束止。

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

^include<sldio.h>

main()

intk=l,s=0;

do

(

if((k%2)!=0)continue;

s+=k;

k++;

}

while(k>10);

printf(〃s=/d\n〃,s);

}

6、^include<stdio.h>

voidmain()

(

intnum[10]={l,0,0,0,0,0,0,0,0,0);

inti,j;

for(j=0;j<10;-+j)

for(i=0;i<j;•i)num[j]=num[j]«num[i];

for(j=0;j<10;j++)printfC%d〃,num[j]);

)

7、一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命

令:O

8、定义二维数组inta[3][5];

,那么该数组中的第6个元素的访问形式为o27.在程序运行过程中,其

值能被改变的量称为o

9、下面程序的输出结果是:

^include<stdio.h>

voidadd(int*p,intn)

(.'

int*pend=p+n;

for(;p<pend;p++)*p+=10;

}

voidmain()

(

inta[5]={l,2,3,4,5},*q=a;

add(q,5);

for(q=a;q<a-5;q++)printfxq);

)

10、请将下列程序中的函数声明语句补充完整。

^include<stdio.h>

int;

main()

intx,y,(*p)();

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

p=max;

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

}

intmax(inta,intb;

return(a>b?a:bj;

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

1、编写程序:输入三个整数x,y,z,请把这三个数由小到大输出。(本题10

分)

2、编写程序:用getchar函数读入两个字符给cl,c2,然后分别用pulchar函

数和printf函数输出这两个字符。

#include<stdio.h>

voidmain0

charcl,c2;

printf(〃请输入两个字符给cl和c2:\n〃);

printf(〃用putchar函数输出结果为:\n〃)

printf(,z\n用printf函数输出结果为:\n");

}(本题14分)

3、编写input。和output。函数,输入输出5个学生记录,每个记录包括num、

name、score[3],使用结构体实现。(本题16分)

参考答案

一、单项选择题

IsA

【解析】字符,'\10;所对应的八进制数为101,转换成十进制数为65。

2、C

3、C

4、D

5、D

【解析】本题中定义了一个整型数组a和一个整型指针变量po选项A中将一个整型数赋值

给一个指针变量,C语言规定,只能将地址赋给指针变量,故选项A不正确。选项B中a[5]

为一数组元素,同样不是一个地址,故选项B不正确。选项c中a[2]为一数组元素,同样是

一个整型数据,不是个地址,故选项C不正确。数组名a代表数组首地址,首地址加2代

表第3个元素的地址,将谈地址赋值给指针变量,故选项D正确。所以,4个选项中选项D

符合题意。

6、D

【解析】选项A和选项C中都没有以丁结束,故选项A和选项C都不是正确的赋值语

句;选项B中强制转换类型符int应用括号括起来,故诜项B不正确,只有选项D是合法的

C语言赋值语句。

7、D

8、D

9、A

10、D

11、C

【解析】return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部

所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个

return语句只能返回一^^^值。

12、B

【解析】汉字国标码规定的汉字编码每个汉字用2个字节表示。

13、C

14、B

【解析】stu是结构体类型,suttype是该类型的变量名

15、C

16、B

【解析】本题考查程序的控制结构。

do-while语句的形式为:

do

循环体语句;

while循环条件;

首先执行一次循环体语句(无条件地),若循环条件不成立,则结束do-while语句的执

行;否则再一次执行循环体语句,即,此后循环条件每成立一次,循环体语句就执行1次。

显然,do-while中的循环体语句至少执行1次

while语句的形式为:

while循环条件

循环体语句;

其执行过程为:先判断循环条件,若不成立,则结束while语句的执行;否则执行一次

循环体语句。此后循环条件每成立一次,循环体语句就执行1次。显然,while中的循环体

语句可能一次也不执行。

因此,在不改变循环体的情况下,可用while语句来代替do-while语句,反之则不行。

17、B

【解析】本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访瓦即

st.i,也可以用等价的指针形式即(*p).i和p->io

18、C

19、A

【解析】注意是按行优先顺序存储。

20、A

二、填空题

1、;

2、2#两

3、下划线

4、定义

5、[s=0]

6、11248163264128256

【解析】该程序的作用是将加]换成n[i-l]+n[i-2]+n[i-3]+、、、+n⑼。

7、1

#include<stdio.h>

(或

#include"stdio.h")']

8、a[l][0]|变量

9、1112131415

10、['max(intb),]

三、编程题

1、#include<stdio.h>

intmain()

(

intx.y.z,t;

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

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

if(x>y){/*交换x.y的值*/

t二x;x二y;y二t;

)

if(x>z){/*交换x.z的值*/

t=z;z=x;x=t;

)

if(y>z){/*交换z,y的值*/

t=y;y=z;z=t;

)

printf("从小到大排序:%d%d%d\n"Jx,y,z);

)

【解析】我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的

值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最

小。

2、cl=getchar();

c2=getchar();

putchar(cl);

putchar(c2);

printf("%c,%c\n",cl,c2);

3、#include<stdio.h>

structstudent{

intnum;

charname[20];

intscore[3];

}stu[5];

voidinput(structstudent*pstu){

intnj;

for(n=0;n<5;n++){

printf("lnputstudentsnum:");

scanf("%d",&pstu[n].num);

printf("\n");

printf("lnputstudentsname:");

scanf("%s",&pstu|n].name);

printf("\n");

printf("lnputstudentsscore:");

forO=0;j<3;j++X

scanf("%d"I&pstu[n].score[j]);

)

printf("\nu);

}

)

voidoutput(structstudentstu[]){

inti=0,j;

for(i;i<5;i++){

printf("%d,%s",stu'i].num,stu[i].name);

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

printf("%3d",stu[i].score[j]);

)

printf("\n"):

}

)

intmain(X

voi

温馨提示

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

评论

0/150

提交评论