湖南理工学院C语言程序设计专升本冲刺卷(八卷)及答案_第1页
湖南理工学院C语言程序设计专升本冲刺卷(八卷)及答案_第2页
湖南理工学院C语言程序设计专升本冲刺卷(八卷)及答案_第3页
湖南理工学院C语言程序设计专升本冲刺卷(八卷)及答案_第4页
湖南理工学院C语言程序设计专升本冲刺卷(八卷)及答案_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

湖南理工学院C语言程序设计专升本冲刺卷(一)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、在计算机中,用()位二进制码组成一个字节。

A、8

B、16

C、32

D、64.

【答案】A

【解析】在计算机中,8位二进制码组成一个字节。

2、已知x=43.ch='a'.y=0;则表达式x=y&&chV的值是

A、0

B、语法错

C、1

D、"假"

【答案】A

3、下列if语句中,不正确的是________o

A、if(x>y);

B、if(x-y)x+=y;

C、if(x!=y)scanf("%d",&x)elsex=l;

D、if(x

【答案】C

4、以下选项中哪些描述是不正确的?

A、循环语句必须要有终止条件否则不能编译

B、break关键字用于跳出当前循环

C、continue用于终止本次循环,执行下一次循环

D、switch条件语句中可以使用break

【答案】A

5、以下叙述正确的是_______o

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

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

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

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

【答案】D

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

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

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

用,但不能调用main函数。

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

述都错误。

6、如果inti=3,则k=(++i)+(++i)+(i++)执行过后k的值为,i的值

为一()

A、15,6

B、12,5

C、18,6

D、15,5

【答案】A

7、以下能正确定义数组并正确赋初值的语句是

A、intn=5,bLnJLnJ;

B、inta[l][2]={{l},{3}};

C、intc[2][]={{1,2},{3,4}}

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

【答案】D

8、以下叙述中正确的是_______o

A、使用typedef说明新类型名时,其格式是:typede新类型名原类型名

B、在程序中,允许用typedef来说明一种新的类型名

C、使用typedef说明新类型名时,后面不能加分号

D、在使用typedef改变原类型的名称后,只能使用新的类型名

【答案】B

【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新

的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选

项中可以使用原类型名。

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

main()

chars[]=HABCDn,*p;

for(p=s+l;p<s+4;p++)printf(w%s\nH,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",输出字符串“D"。

10、下列二维数组的说明中,不正确的是。

A、floata[][4]=0,l,8,5,9;

B、inta[3][4]

C、^defineN5

floata[N][3]

D、inta[2][9.5];

【答案】D

【解析】C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达

式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:

类型说明符数组名[常量表达式][常量表达式]。

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

A、构成C程序的基本单位是函数

B、可以在一个函数中定义另一个函数

C、main。函数必须放在其他函数之前

D、函数定义的格式是K&R格式

【答案】A

【解析】本题考查C语言的综合基础知识。构成C程序的基本单位是函数,不

论main函数在整个程序中的,立置如何,一个C程序总是从main函数开始执

行,C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不

能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传

统格式也称K&R,格式是早期编译系统使用的格式;现代格式又称ANSI格

式,是现代编译系统使用的格式。

12、有以下程序段

mainO

inta=5,*b,**c;

c=&b;

b=&a;

)

程序在执行了c=&b;

b=&a;

语句后,表达式:**c的值是o

A、变量a的地址

B、变量b中的值

C、变量a中的值

D、变量b的地址

【答案】C

13、若有如下定义语句:inta[10]={1,2,3,4,5,6,7,8,9,10);则对数组

正确的引用是。

A、a[10]

B、a[a[3]5]

C、a[a[9]]

D、a[a[4]+4]

【答案】D

14、有以下程序:

ttinclude<stdio.h>

structs

(

inta,b;

)

data[2]=(10,100,20,200);

mainO

(

structsp=data[l];

printf(H%d\nw,++(p.a));

)

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

A、10

B、11

C、20

D、21

【答案】D

【解析】声明data是结构S数组。初始化data[0].a=10;,

data[0].b=100;,data[l].a=20:,datafl].b=200o主函数中

p=data[l];,即p.a=data[l].a;,p.b=data[l].b;。执行语句

printf(M%d\nw,++(p.a));打印输出时p.a先增1再打印,即

p.a=data[l],a=20,先增1等于21。

15、有以下程序:

intf(intx);

main()

(

inta,b=0;

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

I

b=b+f(a);

putchar(*a'+b);

}

)

intf(intx)

(

returnx*x;

)

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

A、ABE

B、BDI

C、BCF

D、BCD

【答案】B

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

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

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

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

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

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

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

【答案】B

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

do-while语句的形式为:

do

循环体语句;

while循环条件;

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

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

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

while语句的形式为:

while循环条件

循环体语句;

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

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

次。显然,while中的循环体语句可能一次也不执行。

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

反之则不行。

17、下列关于共用体类型变量的描述中,正确的是o

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

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

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

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

【答案】C

18、以下程序的运行结果是:

#include<stdio_h>

voidsub(ints[],inty)

staticintt=3;

y=s[t];

t一;

}

mainO

(

inta[]={1,2,3,4},i,x=0;

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

sub(a,x);

printf("%d'*,x);

i

printf("\n”);

)

A、1234

B、4321

C、0000

D、4444

【答案】C

19、下列关于数组初始化的说法,正确的是o

A、对于inta[5];它的数组元素初值为0

B、int2[5]={1,3,5,7,8,9};是可以的,这时数组长度自动变为6

C,staticinta[5];的数组元素初值为0

D、inta[5]={L3,5};是不合法的,因为数组长度为5,而仅有3个数据,

不知赋给哪个元素

【答案】C

【解析】数组一旦定义,其长度就不可变了;初始化数组的数据个数不要大于

数组长度,否则会出现逻辑错;初始化数组的数据个数若小于数组长度,则先

赋给前边的元素,后边的元素值自动初始化为0;静态数组如果没有初始化自

动初始化为0o

20、若有下面的说明和定义:

structtest

(

intml;

charm2;

floatm3;

unionuu

(

charul[5];

intu2[2];

)

ua;

)

myaa;

则sizeof(structtest)的值是________0

A、20

B、16

C、14

D、9

【答案】A

【解析】共用体UU占8个字节;因为结构体在内存中占位符的存在,所以结构

体test中成员m2占4个字节;结构体test占用内存的大小是sizeof(int)+

sizeof(char)+3+sizeof(float)+sizeof(ua)=20o

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

1、表达式7+10>2&&25%5的结果是o

【答案】0

2、|x|V10,写作程序为

【答案】x<10|x>-10

3、在c语言中,当表达式值为0时表示逻辑值"假",当表达式值为时表

示逻辑值"真"。

【答案】「非0']

4、在c语言中,以______开头的常量代表的是八进制数。

【答案】0

5、语句只能用在循环中,该语句的作用是结束本层本次循环,继续一下次循环,

前不跳出循环。

【答案】continue

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

^include<stdio.h>

ttinclude<string.h>

voidmain()

(

charss[10]=Hl,2,3,4,5M;

gets(ss);

strcat(ss,"6789");

printf(',%s\nH,ss);

【答案】abc6789

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

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

7、c语言本身不提供输入输日语句,输入和输出操作是由_______来实现的。

【答案】['函数']

8、输入求数组有几个元素的语句(ac\size)

【答案】intsz=sizeof(arr)/sizeof(arr[0]);

9、已定义一个含有30个元素的数组s,函数favl的功能是按顺序分别赋给各

元素从2开始的偶数,函数fav2则按顺序每5个元素求一个平均值,并将该值

存放在数组w中。请填空。#defineSIZE30Favl(floats[])

(

intk,i;

for(k=2,i=0;i<SIZE;i-+)

(

[1]

K+=2;

)

)

Fav2(floats[],floatw[])

(

floatsum,k,i;

Sum=0.0;

for(k=0,i=0;i<SIZE;i-+)

(

sum+=s[i];

if((i+l)%5=0)

(

w[k]=sum/5;

[2];

K++;

}

)

)

main()

floats[SIZE],w[SIZE/5],sum;

inti.k;

Favl(s);

Fav2(s,w);

}

【答案】【l】s[i]=k[2]sum=O.0

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

main()

(

intx=-10,y;

if(x<0)y=-l;

elsey=l;

printf(n%dw,y);

)

【答案】T

三、编程题(共3题,共40分)

1、编写程序:统计一维数组a中素数的个数

例如:如果数组a的元素为:2,3,5,7,8,9,10,11,12,13,则程序的输出应

为:primenumber(s)is(are)(本题10分)

【答案】^include<math.h>

#include<conio.h>

^include<stdio.h>

prinum(inta[])

intcount,i,j,k;

count=0;

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

k=a[i]-l;

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

if(a[i]%j==0)break;

if(j>=k+1)count++;

)

return(count);

)

main()

inta[10]={2,3,5,7,8,9,10,ll,12,13),n;

n=prinum(a);

printf("primenumber(s)is(are):%dH,n);

}

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

题14分)

【答案】#include<stdio.h>

intmain()

(

inta,b,t,r,n;

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

scanf(,r%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、若有以下银行卡信息:

structcard{

intid;〃银行卡号

intbonus;〃金额

);

请编写程序,从键盘输入5条银行卡记录,使用结构体数组存

储这些数据,并按金额升序排序,输出排序后的结果。

【输入形式】5条银行卡记录分行输入,每行数据用空格间隔

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

【输入样例】

100120

100280

100350

100410

100640

【输出样例】

100410

100120

100640

100350

100280(本题16分)

【答案】4include<stdio.h>

#include<stdlib.h>

structcard

(

intid;〃银行卡号

intbonus;〃金额

}a[5],tamp;

intmain()

inti,j;

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

scanf(w%d%dH,&a[i],id,&a[i].bonus);

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

(

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

(

if(a[j].bonus>a[j+l].bonus)

(

tamp=a[j];

a[j]=a[j+l];

a[j+l]=tamp;

)

)

)

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

(

printf(H%d%d\nw,a[j].id,a[j].bonus);

)

}

湖南理工学院C语言程序设计专升本冲刺卷(二)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是____

A、—3

B、9

C、-12

D、6

【答案】C

2、已知x=43,ch=,a',y=0,则表达式(x>=y&&chV'b'&&!y)的值是

A、0

B、语法错

C、1

D、"假"

【答案】C

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

A、1

B、0

C、2

D、不知道a的值,不能确定

【答案】A

4、循环语句"for(i=l;iVO;i++)i++;"的循环次数是。

A、无限循环

B、2次

C、1次

D、0次

【答案】D

5、以下叙述中错误的是o

A、C语句必须以分号结束

B、C程序总是从主函数开始执行

C、空语句出现在任何位置都不会影响程序运行

D、定义语句用分号“;”结束

【答案】C

6、设a和b均为int型变量,且"6、b=11、『3,则能使值为3的表达式是

A、b%(c%4)

B、b%(c-a%5)

C、b%a-a%5

D、(b%a)-(a%4)

【答案】D

【解析】选项析括号内的运算分别是b%a=ll%6=5和a%c=6%4=2,最后得到5-

2=3o

7、设有数组定义:chararray□="student";则数组所占的存贮空间为

A、6个字节

B、7个字节

C、8个字节

D、9个字节

【答案】C

8、若有以下定义和语句:"doubler=99,*p=&r;

*P二门",则以下正确的叙述是O

A、两个*p含义相同,都说明给指针变量P赋值

B、在“doubler=99,*p=&r;”中,把r的地址赋值给了P所指的存储

单元

C、语句“*p中;”把变量r的值赋给指针变量P

D、语句“*p二门”取变量r的值放回r中

【答案】B

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

charx[]=nprogrammingH;

chary口="fortran”;

inti=0;

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

if(x[i]==y[i])printf("%cM,_____);

elsei++;

A、x[i++]

B、y[++i]

C、x[i]

D、y[i]

【答案】A

10、下述程序的输出结果是O

#include<stdio.h>

voidmain()

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

int*p=a,**q=&p;

printfCr%dw,*(p++));

printf('r%clw,**q);

}

A、22

B、11

C、34

D、12

【答案】D

【解析】程序首先定义了一个指向一维数组a的指针p,一个指向指针变量p

的指针变量q,输出*(p++)是先输出*p即a[0]的值,再将指针p指向数组的下

一个元素a[l],输出**q是输出指针p所指向单元的内容,即a[l]的值。

11、对于以下递归函数f,调月f(3)的返回值是________ointf(intn)

(

if(n)returnf(n-1)+n;

elsereturnn;

)

A、10

B、6

C、3

D、0

【答案】B

12、若有条件表达式(exp)a+「b—,则以下表达式中能完全等价于表达式(exp)

的是O

A、(exp=0)

B、(exp!=0)

C、(exp==l)

D、(exp!=l)

【答案】B

【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中

惟一的一个三目运算符。条件表达式的一般形式为:表达式17表达式2:表达

式3

其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式

2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式

3,表达式3的值就是整个条外表达式的值。并且注意++、一的用法。

13、以下程序运行后,如果从键盘上输入abcdefV回车>,则输出结果为

#include<stdio.h>

#include<string.h>

func(charstr[]){

intnum=O;

while(*(str+num)!=,\0')num++;

return(num);

)

mainO

(

charstr[10],*p=str;

gets(p);

printf(',%d\n,r,func(p));

)

A、8

B、7

C、6

D、5

【答案】C

【解析】本题通过函数gets。从键盘接收一个字符串,并通过调用fune()函

数,统计串中字符的个数。

14、下列描述说明正确的是o

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

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

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

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

【答案】A

15、如下程序,要想输出结果为ab,那么输入应该为

voidmain()

(

chara;

charb;

scanf(,r%c%c”,&a,&b);

printf(,r%c%cw,a,b);

)

A、a【空格】b

B、ab

C、’a,b

D、9798

【答案】B

16、有以下程序:

main()

inti,j;

for(j=10;j<ll;j++)

(

for(i=9;i<j;i++)if(!(j%i))break;

if(i==j-l)printfj);

)

)

输出结果是o

A、11

B、10

C、9

D、1011

【答案】B

17、程序中有下面的说明和定义

structabc

(

intx;

chary;

)

structabcsi,s2;

则会发生的情况是o

A、编译出错

B、程序将顺利编译、连接、执行

C、能顺利通过编译、连接、但不能执行

D、能顺利通过编译、但连接出错

【答案】A

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

m-=n;

printf(H%x\nM,m);

执行后输出结果是—

A、0X0

B、0x0

C、0

D、OXABC

【答案】C

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

A、*(p+4)

B、p+4

C、*p+4

D、a+4

【答案】A

20、设有以下语句

typedefstructs

intg;

charh;

t;

则下面叙述中正确的是________o

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

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

C、S是struct类型的变量

D、T是structS类型的变量

【答案】A

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

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

[答案]strlwr#strlwr()ttstrlwr(字符串)

2、在c语言中,标识符是由英文字母、、下划线组成的。

【答案】数字

3、局部变量的作用域是从定义的位置起,到_____结束止。

【答案】函数

4、c语言约定用作为字符串的结束标志。

【答案】'\0'#\0

5、下列程序段的运行结果是—

main()

(

intn,s=0;

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

(

if(n%2~0)continue;

s=s+n;

)

printf(w%d\nM,s);

)

【答案】9

6、以下程序的输出结果是

main()

(

inta=一1,b;

if(a<0)b=2*a+l;

elseb=2*a-l;

printf(n%d\b);

)

【答案】T

7、在c语言中,若确实不要求返回函数值,则应将函数定义为()类型。

【答案】void

8、若有说明:inta[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小

为_____O

【答案】3

9、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位.十位、

百位的顺序拆分并输出。请澳空。

#include<stdio.h>

main()

intx=256;

printf(n%d-%d-%d\nM,x/10%10,x/100);

)

【答案】

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

ttinclude"stdio.h"

main()

(

inta口二{1,2,3,-4,5};

intm,n,*p;

p=&a[0];

m=*(p+l);

n=*(p+4);

printf("%d%d%dM,*p,m,n);

【答案】125

三、编程题(共3题,共40分)

1、求100之内自然数中偶数之和。(本题10分)

【答案】^include

voidmain()

(

inti,sum=0;

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

if(i%2==0)

sum=sum+i;

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

)

2、编写程序:??=800*??+9*??其中??代表的两位数,809*??为四位数,8*??

的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结

果。

打印如下形式,??代表一个数字:

09*??=800*??+9*??(本题14分)

【答案】^include<stdio.h>

voidoutput(longintb,longinti){

printf(M\n%ld=800*%ld+9*%ld\n",b,i,i);

)

intmain(){

voidoutput(longintb,longinti);

longinta,b,i;

a=809;

for(i=10;iV100;i++){

b=i*a;

if(b>=1000&&bV二10000&&8*i<100&&9*i>=

100){

output(b,i);

)

)

return0;

)

3、通过函数调用实现:讲结构体数组中的三个元素按num成员进行升序排列。

要求:

①数组元素依次赋初值为:{12,"sunny",89.1}、{8,"henry",73.5}、

w

{21/lucy,91.7}o

②结构体定义如下:structs{intnum;charname[30];floatscore;};(本

题16分)

【答案】写法1:在函数外部定义结构体变量并且赋值,参数值为空。

charname[30];

floatscore;

}a[3]={{12,"sunnyw,89.1},{8,"henry",73.5},{21,'lucy",91.7));

voidfun()

inti,j;

structst;

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

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

if(a[j].num>a[j+l].num)

{

t=a[j];

a[j]=a[j+l];

a[j+l]=t;

)

)

)

)

intmain()

(

inti;

fun();

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

I

printf(,r%d,%s,%f\nM,a[i].num,a[i].name,a[i].score);

)

return0;

)

8,henry,73.500000

12,sunny,89.099998

21,lucy,91.699997

写法2:在主函数中定义变量,通过参数传递变量值

charname[30];

floatscore;

};

voidfun(structs*a,intn)

(

inti,j;

structst;

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

(

■for(j=0;j<n-l-i;j++)

if(a[j],num>a[j+l].num)

(

t=a[j];

a[j]=a[j+l];

a[j+l]=t;

)

)

)

intmain()

(

structsa[3]={{12,"sunny",89.1),{8,"henry",73.5},

{21,"lucy",91.7));

inti;

fun(a,3);

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

■(

printf(w%d,%s,%f\n",a[i].num,a[i].name,a[i].score);

)

return0;

)

8,henry,73.500000

12,sunny,89.099998

21,lucy,91.699997

湖南理工学院C语言程序设计专升本冲刺卷(三)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、如果要求在if后的判断条件是a不等于0,则下列选项中能正确表达这一关

系的是_______O

A、a<>0

B、!a

C、a=0

D、a

【答案】D

【解析】if判断条件的值只能是0或非0,if(a)就是if(!0)的意思。

2、若w=l,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的结果为。

A、4

B、3

C、2

D、1

【答案】D

3、下列描述正确的是_______0

A、表示m>n为true或m<n为true的表达式为m>n&&m<n

B、switch语句结构中必须有default语句

C、if语句结构中必须有else语句

D、如果至少有一个操作数为true,则包含I|运算符的表达式为true

【答案】D

【解析】本题主要考查C语言的基本语法,选项A中应该为m>n|m<n;选

项B中default语句可有可无;选项C中if可以单独作为一条语句,不必须和

else搭配。

4、for循环的循环次数o

A、通常是确定的,但也可以不确定

B、通常不确定,但也可以确定

C、是不确定的

D、是确定的

【答案】A

【解析】for循环通常用于循环次数确定的情况,但也可以根据循环结束条件

完成循环次数不确定的情况。

5、下列叙述中错误的是_______。

A、主函数main也可以带形参

B、函数中通过return返回函数值

C、调用函数必须在一条独立的语句中完成

D、一个函数中可以有多条return语句

【答案】C

【解析】当函数有返回值时,调用函数可以作为一个表达式的子表达式,而不

是作为一条独立的语句存在。

6、不能正确表示a*b/c*d的c语言表达式是0

A^a*b/c*d

B、a/(c*d)*b

C、a*b/c/d

D、a*b/(c*d)

【答案】C

7、假定a为一个整型数组名,则元素a[4]的字节地址为

A、a+4

B、a+8

C、a+16

D^a+32

【答案】C

【解析】注意:VC编译器分配给整数的内存是4字节。

8、以下选项中不正确的字符常量是________o

A、

B、

C、'%d'

D、7

【答案】C

9、c语言中,下列不合法的字符串常量是_______o

A、”'121”

B、,尸

C、“\n\n"

D、"ABCD\x6d”

【答案】B

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

^include<stdio.h>

voidmain()

(

inti,j,x=0;

staticinta[6]={l,2,3,4,5,6);

for(i=0,j=l;i<5;++i,j++)x+=a[i]*a[j];

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

)

A、数组a中首尾的对应元素的乘积

B、数组a中首尾的对应元素的乘积之和

C、数组a中相邻各元素的乘积

D、数组a中相邻各元素的乘积之和

【答案】D

11、对c语言程序,以下说法正确的是O

A、main函数是主函数,一定要写在最前面。

B、所有的自定义函数,都必须先声明。

C、程序总是从main函数开始执行的。

D、程序中只能调用库函数,不能自己定义函数。

【答案】C

12、变量p为指针变量,若p=&a,下列说法不正确的有一

A、&*p==&a

B、*&a-a

C、(*p)++==a++

D、*(p++)==a++

【答案】D

【解析】*p代表a,&*p等价于&a;p代表&a,*p等价于a,因而(*p)++等价于

a++;但因p的值为a的内存单元地址,p++为变量a首地址后面的地址,

*(P++)不再指向变量So

13、下面不正确的描述为_______。

A、调用函数时,实参可以是表达式

B、调用函数时,实参与形参可以共用内存单元

C、调用函数时,将为形参分配内存单元

D、调用函数的,实参与形参的类型必须一致

【答案】B

【解析】函数调用时用实参替换形参,如果实参为表达式,将为表达式的值创

建一个临时对象,然后将该实参替换形参。替换的实质是变量间的拷贝当然这

种拷贝需要为形参分配内存。需要注意的是:形参在编译时不分配内存,在运

行时才分配内存。

14、structex

intx;

floaty;

charz;

)

example;

则下面的叙述中不正确的是_______O

A、struct结构体类型的关键字

B、example是结构体类型名

C、x,y,z都是结构体成员名

D、structex是结构体类型

【答案】B

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

#include<stdio.h>

main()

(

inti=010,j=10;

printf(',%d,%dM,++i,j一);

}

A、11,10

B、9,10

C、010,9

D、10,9

【答案】B

【解析】程序中i的值用八进制表示(十进制为8),++i是在变量使用前自身先

加1,而j一是在变量使用后自身减1。

16、有以下程序

#include<stdio.h>

main()

(

intx=8;

for(;x>0;x­)

(

if(x%3)

(

printf(H%d,\x--);

continue;

)

printf(K%d,一x);

程序的运行结果是

A、7,4,2

B、8,7,5,2

C、9,7,6,4

D、8,5,4,2

【答案】D

17、c语言结构体类型变量在程序执行期间_

A、所有成员一直驻留在内存中

B、没有成员驻留在内存自

C、部分成员驻留在内存占

D、只有一个成员驻留在内存中

【答案】A

18、有如下程序

main()

(

inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

for(i=0;i<3;i++)for(j=0;j<=l;j++)s+=aLiJLjJJ;

printf(n%d\nM,s);

)

该程序的输出结果是______o

A、18

B、19

C、20

D、21

【答案】D

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

A、一条语句只能定义一个数组

B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的

存储单元

C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式

D、在引用数组元素时,下标表达式可以使用浮点数

【答案】B

【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句

定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整

型常量表达式;D选项中,在弓用数组元素时,下标表达式必须是整型的。因此B

选项正确。

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

#include<stdio.h>

structst

intx,y;

}data[2]={{1,10},{2,20}};

main()

(

structst*p=data;

printf(w%d,w,p->y);

printf(w%d\nw,(++p)->x);

)

A、10,1

B、20,1

C、10,2

D、20,2

【答案】C

【解析】正确地给结构体数组赋初值,dataLOj.x=l.dataLOj.y=10.

data[l].x=2、data[l].y=20;首先,p指向data[0],第一条打印语句输出p-

>y,即data[0].y的值10;(++p)->x含义是先++p,此时p指向data[l],

第二条打印语句输出(++p)->x,即dala[l].x的值2。

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

1、一个3位的二进制数能表示几个数?

【答案】8

2、若i为整型变量,且说2==0的值为1,则变量i为数。

【答案】偶

3、已知"floata=3.5;intb=12;",则算术表达式"(int)(a+b/5)"的值是

【答案】5

4、变量y满足以下两条件中的任意一个:①能被4整除,但不能被100整除;

②能被400整除。请用逻辑表达式表示所给条件。o

【答案】fy%4==0&&y%100!=0||y%400==0']

5、以下程序运行的结果为

ttinclude<stdio.h>

voidmain()

intscore=4;

switch(score)

(

case5:printf(ff90-100w);

break;

case4:printf("80-89");

break;

case3:printf("70-79");

break;

case2:printf(w60-69M);

break;

default:printf("0-59");

)

)

【答案】80-90

6、以下程序的输出结果为o

main()

(

charm,n;

m=getchar();

/*(输入d)*/n=m-34;

printf("%c",n);

)

【答案】b

7、一个C程序有且仅有一个函数。

【答案】main

8、函数实参的传递分为—

【答案】值传递和址传递

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

main()

(

intin=0;

switch(m)

(

case0:m=2*m+l;

break;

case1:m=m-l;

break;

case2:m=m+5;

break

)

printf(',%dff,m);

)

【答案】1

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

^include<stdio.h>

mainO

(

intx=20;

printf(,r%dtt,0<x<20);

printf(M%d\ntt,0<x&&x<20);

)

【答案】flO']

三、编程题(共3题,共40分)

1、输出9*9乘法表。(本题10分)

【答案】#include<stdio.h>

voidmain()

(

inti=l;

for(i;i<=9;i++)

(

intj=l;

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

(

printf(,r%d*%d-%d”,i,j,i*j);

}

printf(w\nn);

)

|

2、编写程序:打印出所有的“水仙花数「所谓"水仙花数"是指一个三位数,

其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1

的三次方+5的三次方+3的三次方。(本题14分)

【答案】#include<stdio.h>

intmain()

(

inti,x,y,z;

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

(

x=i%10;

y=i/10%10;

z=i/100%10;

if(i-(x*x*x+y*y*y+z*z*z))

printf(n%d\nH,i);

return0;

)

【解析】利用for循环控制100-999个数,每个数分解出个位,十位,百位。

3、有以下类信息,使用结构参数组存储这些信息

structclass{

intid;〃类编号

charinfo[20];〃类信息

}a[5]={{l,waaaw),{2,,rbbbw},{6,wcccM},{7,"ddd"),{4,"eee"}};

从键盘输入一个类编号,如果有该类,删除该类信息,并输出删除

后剩余类信息;如果没有,全部输出。

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

【输入样例】1

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

2bbb

6ccc

7ddd

4eee(本题16分)

【答案】#include<stdio.h>

structclass

intid;〃类编号

charinfo[20];〃类信息

}a[5]={{1,waaaw},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"));

intmain(void)

(

inti,j,x;

scanf(w%dM,&x);

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

if(a[i].id==x)

break;

)

■for(j=i;j<4:j++)

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

)

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

printf(w%d%s\nw,a[j],id,a[j].info);

}

湖南理工学院C语言程序设计专升本冲刺卷(四)

考试方式:【闭卷】考试时间:【90分钟】总分:【100分】

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

1、若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式aVb?a:c

A、

B、2

C、3

D、4

【答案】C

2、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语

句是o

A、p=2*(int*)malloc(sizeof(int));

B、p=(int*)malloc(2*sizeof(int));

C、p=(int*)malloc(2*2);

D、p=(int*)calloc(2,sizeof(int));

【答案】A

3、选择出合法的if语句(设intx,a,b,c;)。

A、if(a=b)x++;

B、if(a=<b)x++;

C、if(a<>b)x++;

D、if(a=>b)x++;

【答案】A

【解析】A虽然是赋值语句,但是在逻辑运算中自动将赋值语句的结果当作逻

辑值,方法是,如果赋值语句的结果是非零值则当作逻辑真,否则当作逻辑

假。C语言中关系运算符有v(小于)、》(大于)、>=(大于等于)、<=(小于等

于)、二(等于)、!二(不等于)等六种,可见其他的条件表达式中的关系符写错

了。

4、执行以下循环语句时,下列说法正确的是ox二-1;

do

(

X=X*X;

while(x==0);

A、循环体将执行一次

B、循环体将执行两次

C、循环体将执行无限次

D、系统将提示有语法错误

【答案】A

5、请读程序:

main()

(

staticinta[]={l,2,3,4,5,6}int*p;

inti;

p二a;

*(p+3)+=2;

printf(Hwnl=%d,n2=%d\n:"w,*p,*(p+3));

)

其输出是_______o

A、nl=l;n2=5

B、nl=2,n2=6

C、"nl=ln2=7"

D、nl=l,n2=6

【答案】D

6、若有以下程序段:inta=3,b=4;a=a"b;b二b"a;a=a"b;则执行以上语句

后,a和b的值分别是o

A、a=3,b=4

B、a=4,b=3

C、a=4,b=4

D、a=3,b=3

【答案】B

7、若有定义:inta[2][3];以下选项中对a数组元素正确引用的是一

A、a[2][!l]

B、a[2][3]

C、a[0][3]

D、a[l>2][!1]

【答案】D

8、若x是整型变量,p

温馨提示

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

评论

0/150

提交评论