国家开放大学《C语言程序设计》综合测试题参考答案.docx

上传人:国**** 文档编号:12221245 上传时间:2023-06-04 格式:DOCX 页数:36 大小:56KB
下载 相关 举报
国家开放大学《C语言程序设计》综合测试题参考答案.docx_第1页
第1页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

国家开放大学《C语言程序设计》综合测试题参考答案.docx

《国家开放大学《C语言程序设计》综合测试题参考答案.docx》由会员分享,可在线阅读,更多相关《国家开放大学《C语言程序设计》综合测试题参考答案.docx(36页珍藏版)》请在冰点文库上搜索。

国家开放大学《C语言程序设计》综合测试题参考答案.docx

国家开放大学《C语言程序设计》综合测试题参考答案

综合测试1

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

1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。

a.function

b.name

c.main

d.MAIN

2.每个C语言程序文件的编译错误分为()类。

a.2

b.4

c.1

d.3

3.字符串"a+b=12\n"的长度为()。

a.7

b.9

c.6

d.8

4.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。

a.for

b.while

c.if

d.do

5.在下面的do-while循环语句中,其循环体语句被执行的次数为()。

inti=0;doi++;while(i<10);

a.4

b.3

c.10

d.5

6.将两个字符串连接起来组成一个字符串时,选用的函数为()。

a.strcap()

b.strcmp()

c.strlen()

d.strcat()

7.若用数组名作为函数调用的实参,传递给形参的是()。

a.数组的首地址

b.数组元素的个数

c.数组中全部元素的值

d.数组中第一个元素的值

8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大()个字节。

a.16

b.32

c.4

d.8

9.假定s被定义为指针类型char*的变量,初始指向的字符串为"Helloworld!

",若要使变量p指向s所指向的字符串,则p应定义为()。

a.char*p;p=*s;

b.char*p;p=&s;

c.char*p=&s;

d.char*p=s;

10.从一个数据文件中读入以换行符结束的一行字符串的函数为()。

a.fgetc()

b.fgets()

c.getc()

d.gets()

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

11.C语言中的每条简单语句以(分号)作为结束符。

12.C程序中的所有预处理命令均以(#)字符开头。

13.当不需要函数返回任何值时,则应使用(void)标识符来定义函数类型。

14.十进制数25表示成符合C语言规则的十六进制数为(0x19)。

15.假定不允许使用逻辑非操作符,则逻辑表达式a>b||b==5的相反表达式为(a<=b&&b!

=5)。

16.执行“typedefintDataType;”语句后,在使用int定义整型变量的地方也可以使用(DataType)来定义整型变量。

17.假定一维数组的定义语句为“char*a[8];”,则该数组a所占存储空间的字节数为(32)。

18.假定二维数组的定义语句为“doublea[M][N];”,则该数组a的列下标的取值范围在0到(N-1)之间。

19.存储一个空字符串需要占用

(1)个字节。

20.strcpy函数用于把一个字符串(拷贝)到另一个字符数组空间中。

21.程序的编译单位是一个(程序文件)。

22.假定a是一个一维数组,则a[i]的指针访问方式为((a+i))。

23.执行int*p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为(p)。

三、写出下列每个程序运行后的输出结果(每小题6分,共30分)

24.#include

voidmain()

{

intx=5;

switch(2*x){

case4:

printf("%d",x);break;

case7:

printf("%d",2*x);break;

case10:

printf("%d",3*x);break;

default:

printf("%s","default");

}

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

}

运行结果:

1520

25.#include

voidmain(){

intf1,f2,i;

f1=1;

printf("%d",f1);

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

f2=3*f1+i;

printf("%d",f2);

f1=f2;

}

printf("\n");

}

运行结果:

151858

26.#include

#defineN8

voidmain(){

inta[N]={12,39,26,41,55,63,72,40};

inti,i1=0,i2=0;

for(i=0;i

if(a[i]%2==1)i1++;elsei2++;

printf("%d%d\n",i1,i2);

}

运行结果:

44

27.#include

#include

voidmain(){

chars[15]="5678912340";

inti,n=strlen(s);

for(i=0;i

charc=s[i];

s[i]=s[n-1-i];

s[n-1-i]=c;

}

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

}

运行结果:

0432198765

28.#include

intLB(int*a,intn){

inti,s=1;

for(i=0;i

returns;

}

voidmain(){

inta[]={1,2,3,4,2,2,5,8};

intb=LB(a,4)+LB(a+3,4);

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

}

运行结果:

b=104

四、根据下列每个函数回答相应问题(每小题6分,共12分)

29.voidSF(intx){//n为大于等于0的整数

inti=2;

while(x>i){

if(x%i==0)printf("%d",i);

i++;

}

printf("\n");

}

假定使用SF(70)调用该函数,则输出的所有整数依次为(257101435)。

30.voidQC(structIntNode*f){//f为一个单链表的表头指针

while(f){

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

f=f->next;

}

}

假定结构类型IntNode的定义为:

structIntNode{intdata;structIntNode*next;};

该函数的功能为:

(遍历并输出由表头指针f所指向的单链表中每个结点的data域的值。

五、按题目要求编写程序(每小题6分,共12分)

31.编写一个程序,首先从键盘上输入10个整数到一维数组a[10]中,然后按照下标从大到小的次序输出数组a[10]中的所有元素值。

假定数组a[10]和循环变量i均在主函数中定义。

参考答案:

#include

void main() 

{

int a[10],i;

    printf("从键盘输入10个整数:

 \n");

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

for(i=9; i>=0; i--) printf("%d ",a[i]);

printf("\n");

}

32.编写一个程序,已知6≤a≤50,10≤b≤30,求出满足不定方程3a+2b=120的全部整数组解。

如(20,30)就是其中的一组解。

参考答案:

#include

void main()

{

int a,b;

for(a=6;a<=50; a++) 

for(b=10;b<=30;b++)

if(3*a+2*b==120) printf("(%d, %d)\n",a,b); 

}

综合测试2

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

1.C语言源程序文件的缺省扩展名为()。

a.C

b.exe

c.cpp

d.obj

2.设x和y均为逻辑值,则x&&y为真的条件是x和y()。

a.均为真

b.其中一个为真

c.均为假

d.其中一个为假

3.在下列的符号常量定义中,正确的定义格式为()。

a.constintM220

b.#defineM310

c.#defineM1

d.constcharmark

4.for循环语句能够被改写为()语句。

a.switch

b.while

c.复合

d.if

5.在下面的一维数组定义中,错误的定义格式为()。

a.inta[5];

b.inta[]={1,2,3};

c.inta[];

d.inta[10]={0};

6.下面的函数原型声明中存在语法错误的是()。

a.voidAA(inta,intb);

b.voidAA(int,int);

c.voidAA(inta;intb;);

d.voidAA(inta,int);

7.假定a为一个数组名,则下面存在错误的表达式为()。

a.*a

b.a[i]

c.*a++

d.*(a+1)

8.假定有定义为“inta[10],x,*pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为()。

a.x=a[3]

b.x=*(a+3)

c.x=pa[3]

d.x=*pa+3

9.char类型的长度为________个字节。

a.2

b.4

c.1

d.3

10.向一个二进制文件中写入信息的函数为()。

a.fgets()

b.fread()

c.fwrite()

d.fputs()

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

11.C语言中的每条复合语句以(})作为结束符。

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

13.十进制数56对应的八进制数为(070)。

14.假定x=5,则表达式12+x++的值为(17)。

15.增量表达式++y表示成赋值表达式为(y=y+1)。

16.若x=5,y=6,则x>y的值为(0)。

17.假定二维数组的定义为“inta[4][5];”,则该数组所含元素的个数为(20)。

18.执行“typedefintABC[20];”语句把ABC定义为具有20个整型元素的(数组)类型。

19.strcat()函数用于(连接)两个字符串。

20.假定p所指对象的值为30,p+1所指对象的值为24,则*p++的值为(30)。

21.若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为((char)p)。

22.NULL是一个符号常量,通常作为空指针值,它对应的值为(0)。

23.假定要动态分配一个类型为structWorker的对象,并由r指针指向这个对象,则使用的表达式为(structWorkerr)=malloc(sizeof(structWorker))。

三、写出下列每个程序运行后的输出结果(每小题6分,共30分)

24.#include

voidmain(){

inti,s=0;

for(i=1;i<7;i++)s+=i*i;

printf(“s=%d\n”,s);

}

输出结果:

s=91

25.#include

#defineN6

voidmain()

{

inti,a[N]={2,5,8,10,15,20};

for(i=0;i

if(a[i]%4==0)printf("%d",a[i]);

printf("\n");

}

输出结果:

820

26.#include

#include

voidmain(){

inti;

unsignedintlen;

char*a[5]={"stud","work","cadre","soldier","zan123"};

len=strlen(a[0]);

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

if(strlen(a[i])>len)len=strlen(a[i]);

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

}

输出结果:

7

27.#include

voidmain()

{

inta,b;

for(a=2,b=3;b<30;){

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

a=a+b;

b=a+b;

}

}

输出结果:

23581321

28.#include

voidLE(int*a,int*b){

intx=*a;

*a=*b;*b=x;

}

voidmain(){

intx=5,y=8;

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

LE(&x,&y);

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

}

输出结果:

5885

四、写出下列每个函数的功能(每小题6分,共12分)

29.#include

intSG(intx){//x为大于等于2的整数

inta=(int)sqrt(x);//sqrt(x)取x的平方根

inti=2;

while(i<=a){

if(x%i==0)break;

i++;

}

if(i<=a)return0;elsereturn1;

}

函数功能:

判断x是否为一个素数,若是则返回1,否则返回0。

30.intFindMax(structIntNode*f)//f为一个单链表的表头指针

{

intx;

if(!

f){printf("单链表为空\n"),exit

(1);}

x=f->data;

f=f->next;

while(f){

if(f->data>x)x=f->data;

f=f->next;

}

returnx;

}

假定structIntNode的类型定义为:

structIntNode{intdata;structIntNode*next;};

函数功能:

求出由f所指向的单链表中所有结点的最大值。

五、按题目要求编写程序或函数(每小题6分,共12分)

31.编写一个程序,输出35以内(含35)的、能够被4或者7整除的所有整数。

参考答案:

#include

Voidmain()

{

inti;

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

if(i%4==0||i%7==0)

printf(“%d”,i);

printf(“\n”);

}

32.编写一个递归函数“intFF(inta[],intn)”,求出数组a中所有n个元素之积并返回。

参考答案:

intFF(inta[],intn)

{

if(n<=0)

{

printf(“n值非法\n”),exit

(1);

}

If(n=1)

returna[n-1];

else

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

}

综合测试3

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

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

a.exe

b.cpp

c.c

d.obj

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

a.它们均为假

b.其中一个为假

c.其中一个为真

d.它们均为真

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

a.字符

b.整数

c.浮点数

d.记录

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

a.n

b.n+1

c.n-1

d.1

5.假定有定义为“inta[4][5]={{1,3,5},{2,8}};”,则a[1][1]的值为()。

a.3

b.8

c.5

d.2

6.在下面的选项中,不能作为函数值返回类型的是()。

a.int

b.long

c.new

d.void

7.假定x的值为4,y的值为6,则表达式x++*++y的值为()。

a.24

b.35

c.30

d.28

8.用calloc函数创建具有10个整型元素的动态存储空间的正确调用是()。

a.calloc(sizeof(int),10,)

b.calloc(10,sizeof(int))

c.calloc(10)

d.calloc(10,sizeof(char))

9.假定有定义“intb[10],*pb;”,则不正确的赋值为()。

a.pb=b+4

b.pb=b

c.pb=&b[0]

d.pb=b[5]

10.标准输入设备的文件流标识符是()。

a.stderr

b.stdio

c.stdin

d.stdout

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

11.执行“printf("%c",'A'+3);”语句后得到的输出结果为(D)。

12.shortint类型的长度为

(2)。

13.用类型关键字表示十进制常数3.26f的类型为(float)。

14.假定y=5,则表达式--y*3的值为(12)。

15.逻辑表达式(x==0&&y>5)的相反表达式为((x!

=0||y<=5)或:

(x||y<=5))。

16.若x=5,y=10,则x!

=y的逻辑值为

(1)。

17.假定二维数组的定义为“inta[3][6];”,则该数组所占存储空间的字节数为(72)。

18.使用“typedefcharBB[M][N];”语句定义(BB)为含有M行N列的二维字符数组类型。

19.字符串"a:

\\xxk\\数据"的长度为(11)。

20.假定p所指对象的值为20,p+1所指对象的值为30,则*++p的值为(30)。

21.假定一个数据对象为int*类型,则指向该对象的指针类型为(int)。

22.假定一个结构类型的定义为“structA{inta,b;A*c;};”,则该类型的长度为(12)。

23.假定要访问一个结构对象x中的数据成员a,则表示方式为(x.a)。

三、写出下列每个程序运行后的输出结果(每小题6分,共30分)

24.#include

voidmain(){

inti,s=0;

for(i=1;;i++){

if(s>20)break;

if(i%2)s+=i;

}

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

}

输出结果:

s=25

25.#include

voidmain(){

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

inti,b1,b2;

b1=b2=a[0];

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

if(a[i]>b1)b1=a[i];

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2