程序设计综合训练_第1页
程序设计综合训练_第2页
程序设计综合训练_第3页
程序设计综合训练_第4页
程序设计综合训练_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

一、单选(本大题共31小题,每小题1分,共31分)

1.程序运行中需要从键盘输入多于一个数据时,各数据之间默认使用(D)符号作为分隔符。

A.空格或逗号

B.逗号后回车

C.逗号或分号

D.空格或回车

2.逻辑表达式(x>0&&xv=10)的相反表达式为(A)。

A.x<=0||x>10

B.x<=0&&x>10

C.x<=0||x<=10

D.x>0&&x>10

3.当处理一个问题时的循环次数已知时,最好采用(A)语句来解沃。

A.for

B.while

C.do-while

D.switch

4.假定i的初值为0,则在循环语句中“while(ivn){s+=i*i;i++;}"中,其循环体被执行的次数为(B).

A.n-I

B.n

C.n+1

D.n/2

5.假定一个二维数组的定义语句为“inia[3H4]={{3.4},{2,8,6)};”,则元素的值为(D)。

A.2

B..4

C.6

D.8

6.在下列选项中,不正确的函数原型格式为(C

A.intFunction(inta);

B.voidFunction(char);

C.intFunction(a*b);

D.voidini(double*a);

7.假定p是一个指向float类型的数据指针,则p+1所指向的数据的地址比p所指向的数据地址大(C)个字节。

A.1

B..2

C.4

D.8

8.假定指针变量p定义为“血本p=malloc[sizeof(int));,要释放p所指向的动态存储空间,应调用的函数为(A)。

A.free(p)

B.delete(p)

C.free(*p)

D.free(&p)

9.C语言中的系统函数fopen。是(D)一个数据文件的函数。

A.读取

B.写入

C.关闭

D.打开

10.由C语言源程序文件编译而成的目标文件的默认扩展名为(D)>

A.cpp

B.c

C.exe

D.obj

11.设x和y其中均为逻辑值,则x||y为假的条件是x和y(C)。

A.均为真

B.其中一个为真

C.均为假

D.其中一个为假

12.枚举类型中的每个枚举常量值都是一个(A)。

A.整数

B.浮点数

C.字符

D.记录

13.循环语句"for(i=0;i<=n;i++)S;”中循环体S被执行的次数为(D)。

A.1

B.n-1

C.n

D.n+1

14.假定有语句为“inta[4][5]=({l,2,3},{2,8));",Ma[l]⑴的值为(C)。

A3

B..5

C.8

D.2

6假定有语句“intb[10『pb;”,则不正确的赋值为(B)。

A.pb=b

B.pb=b[5]

C.pb=b+2

D.pb=&b[OJ

16.标准输入设备的文件流标识符是(B工

A.stderr

B.stdin

C.stdout

D.stdio

17.由C语言目标文件连接而成的可执行文件的默认扩展名为(B)0

A.cpp

B.exe

C.obj

D.c

18.带有随机函数调用的表达式rand()%20的值在(C)区间内。

A.1-19

B.1-20

C.0-19

D.0-20

19.在for循环语句“for(i=0;ivn;i++)S;"中,循环体S被执行的次数为(A)。

A.n

B.n+1

C.n-1

D.n-2

20.下列的字符数组定义中,存在语法错误的是(D)o

A.chara[20]="abcdefg"

B.charaU="x+y=55";

C.chara[l5]={'l,;2,};

D.chara[IOJ='5';

21.若有一个函数原型语句为“double*function。;”,则此函数的返回值类型

为(B)。

A.实数型

B.实数指针型

C.函数指针型

D.数组型

22.在C语言中,所有预处理命令都是以(B)符号开头的。

A.*

B.#

C.&

D.@

23.若要使p指向二维整形数组a[10Jl20],Mp的类型为(D)。

A.int*

B.int**

C.int*[20]

D.int(*)[20]

24.表示文件结束符的符号常量为(C)„

A.eof

B.Eof

C.EOF

D.fcof

25.逻辑表达式(x<0||y==5)相反表达式为(B)。

A.x<=0||y!=5

B.x<=0&&y!=5

C.x>0||y!=5

D.x>0&&y==0

26.循环体至少被执行一次的循环语句为(C)。

A.for

B.while

C.do-while

D.任一种循环

27.假定n的值为6,则表达式++n的值为(D)。

A.6

B.5

C.4

D.7

28.假定一个二维数组定义为“inta[3H4]={{3,4},[2,8,6});”,则元素的值为(B)。

A.8

B..2

C.4

D.6

29.假定有语句为"int*p=calloc(20,sizeof(int));",Mp所指向的动态数组中所包含的元素个数为(V)。

A.10

B..40

C.20

D.80

30.十进制数5()表示成符合C语言规定的八进制数为(D)o

A.20

B..32

C.62

D.062

31.若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符

串为(C)。

A.r+

B.ab+

C.rb+

D.wb+

二、填空(本大题共16小题,每小题1分,共16分)

1.假定x的值为5,则执行“a=(x>6?3:8);”语句后a的值为(—8—)。

2.假定一个字符指针数组的定义为“char*则该数组占用的存储空间的字节数为(_5—)。

3.假定二维数组的定义为“doublea[M][N];”,则数组元素的行下标的最大值为

4.若p指向x,则(_*p—)与x的表示是等价的。

5.一个空字符串的长度为(1)。

6.在include命令中所包含的文件,可以是头文件,也可以是(一程序一)文件。

7.假定x=8,则表达式2+X++的值为(—10—)。

8.对于“for(i=0;i<10;i++)S”语句,循环体S被执行的次数为(—10—)。

9.若x-5,y-8,则执行“if(x〉y)c-2⑻sec-3;”语句后,c的值为(―3—

10.假定二维数组的定义为“inta[3][5];“则该数组所包含的元素个数为(—15—)。

ll.strcat。函数用于(_链接)两个字符串。

12.若要把一个指针p强制转换为字符指针,则采用的强制转换表达式为(_(char*)p_)o

13.在一个C语言程序文件中,若要包含另外一个头文件或程序文件,则此包含命令的标识符为(―include—

14.用于从键盘上为变量输入值的标准输入函数的函数名为(―scanf_)o

15.执行"intx=45,y=8;printf("%d",x/y);“语句序列后得到的输出结果为(—5—)。

16.把表达式x=x+y转换成符合赋值表达式为(_x+=y___)。

三、问答(本大题共26小题,每小题1分,共26分)

l.#inlude"stdio.h"

voidinain()

{inti,s=0;

fbr(i=l;s<15;i++)

if(i%2==0)s+=i;

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

)

输出结果:s=20

2.#includs"stdio.h"

voidmain()

{inta[9]={36,25,48,24,55,40,18,66,20);

inti=0,k=-1,x=40;

while(a[i]!=x&&i<9)i++;

if(a[i]==x)k=i;

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

)

输出结果:k=5

3.#include"stdio.h”

structworker{charnamefl51;inlage;floatpay;}

voidrnain(){

structworkerx={"wangke",30,4G00);

structworkery,*p;

y=x;p=&x;

printf("%d%7.2f\n,,,y.age+p->age,p->pay+60);

输出结果:962560.00

4.#include"stdio.h"

voidSB(charch){

switch(ch){

case'A':case'a':printf("1");break;

caseB:caseb,:printf("2");break;

default:printf("3");break;

)

voidmain()

{

charal='a,,a2='B',a3='f;

SB(al);SB(a2);SB(a3);

printf(H\n");

)

输出结果:123

5.#include"stdio.h"

#defineM6

voidmain()

{inti,xl=0,x2=0;

inta[M]={10,15,22,24,12,30);

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

{xl+=a[il;x2+=a[M-i-ll;}

printf(',%d%d\n,\xl,x2);

)

输出结果:4766

6.#include"stdio.h"

voidmain()

{inti,s=0;

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

if(i%2==0)

s+=i;

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

)

输出结果:s=12

7.#include"stdio.h"

voidmain()

{inta[6]={36,25,48,24,55,40}:

inti=0,x=24;

while(a[i]!=x&&i<6)i++;

if(i<6)

piintf("%d\n",i);

)

输出结果:_______________

3

8.#include"stdio.h"

#defineM6

voidmain()

{inti,xI=0,x2=0;

inta[M]={2,5,8,4,6,9);

fbr(i=0;i<M/2;i++)

{xl+=a(il;x2+=a[M-i-H;}

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

)

输出结果:1519

9.#include"stdio.h"

voidSB(charch){

switch(ch){

case'A':printf(,'l");break;

caseB:printf("2");break;

defaull:primf("3");break;

)

voidmain()

{charal='a,,a2=,B\a3='A";

SB(al);SB(a2);SB(a3);

I

输出结果:321

IO.#include"stdio.h"

voidmain()

{intx=20,i=2;

whilc(i<=x)

{if(x%i==0)

{printf("%d",i);x/=i;}

elsei++;

}}

答案;225

11.#include"stdio.h"

intWF(intx,inty)

{x=x+y;

y+=x;

returnx+y;

voidmain()

{inix=3,y=5;

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

}

答21

12.#include"stdioJi"

intLA(int*a,intn)

{inti,s=0;

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

returns;

)

voidinain()

{inta[5]={1,2,345};

intb=LA(2,3)+LA(a+2,3);

printf('b=%d\n'\b);

}

答b=18

13.#include"stdio.h"

voidmain()

{

inti,s=O:

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

if(i%2==0)s+=i;

printf("s=%d\nH,s);

)

输出结果:s=20

14.#include"stdio.h"

voidmain()

(

inta[6]={36,25,48,24,55,40};

inti=0,x=24;

while(a[i]!=x&&i<6)

i++;

if(i<6)printf("%d\n",i);

)

输出结果:—3

15.#include"stdio.h"

voidSB(charch)

{switch(ch)

{case'A':printf("「');break;

case'B':printf("2");break;

default:printf("3");break;

)

)

voidmain()

{charal="a',a2='B',a3="A';

SB(al);SB(a2);SB(a3);

I

输出结果:—321

I6.#include"stdio.h"

structworker{charname[15];

intage;

floatpay;};

voidmain()

(

structworkerx={"wangri",48,2500);

structworkery,*p;

y=x;p=&x;

printf("%d\n",y.age+p->age>);

)

输出结果:—96

17.intSC(intaJntb,intc){

if(a>=b&&a<=c)returna;

if(b>=a&&b>=c)returnb;

returnc;

)

函数功能:求出a,b,c三个参数中的最大值并返回。

18.int*LI(intn){

inii;

int*a=malloc(n*sizcof(int));

fbr(i=0;i<n;i++)scanf("%d",a+i);

returna;

}

函数功能:建立一个动态整形数组a[n],接着从键盘上输入n个整数到a[n]中,最后返回数组a[n]的首地址。

19.假定使用$F(20)调用下面函数,则得到的输出结果为(252工

voidSF(intx){

inti=2;

while(x>=i){

if(x%i==O)

{printf("%d'\i);x/=i;)

i++;

I

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

)

20.假定结点的结构类型为intnode,它的数值域为data,链接指针域为next,请指出下面函数的功能。

voidQC(structintnode*f){

whilc(f){

printf("%d",f->data);

f=f->next;

)

)

函数功能:一遍历输出由表头指针f所指向的单链表中每个结点的data域的值。

21.假定结构体类型structworker的定义体为:

{charname[15];intage;floatpay;}o

voidQA(structworkera[]jntn)

(

inti;

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

scanf("%s%d%f',a[i].name,&a[i].age,&a[i].pay);

)

函数功能:从键盘上为具有structworker类型的数组a[n]输入n个记录。

22.按照“intFF(intaU,intn)”的函数声明,编写出递归函数的定义,求出数组a中所有n个元素之积并返回。

intFF(inta[],intn)

(

if(n<=0){prir.tf("n值非法\n"),exit(1);)

if(n==l)

returna[0];

else

returna[n-l]*FF(a,n-l);

23.补充完整下面的函数定义,计算l+l*3

温馨提示

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

评论

0/150

提交评论