C语言程序设计复习习题.docx

上传人:b****2 文档编号:3280678 上传时间:2023-05-05 格式:DOCX 页数:78 大小:91.16KB
下载 相关 举报
C语言程序设计复习习题.docx_第1页
第1页 / 共78页
C语言程序设计复习习题.docx_第2页
第2页 / 共78页
C语言程序设计复习习题.docx_第3页
第3页 / 共78页
C语言程序设计复习习题.docx_第4页
第4页 / 共78页
C语言程序设计复习习题.docx_第5页
第5页 / 共78页
C语言程序设计复习习题.docx_第6页
第6页 / 共78页
C语言程序设计复习习题.docx_第7页
第7页 / 共78页
C语言程序设计复习习题.docx_第8页
第8页 / 共78页
C语言程序设计复习习题.docx_第9页
第9页 / 共78页
C语言程序设计复习习题.docx_第10页
第10页 / 共78页
C语言程序设计复习习题.docx_第11页
第11页 / 共78页
C语言程序设计复习习题.docx_第12页
第12页 / 共78页
C语言程序设计复习习题.docx_第13页
第13页 / 共78页
C语言程序设计复习习题.docx_第14页
第14页 / 共78页
C语言程序设计复习习题.docx_第15页
第15页 / 共78页
C语言程序设计复习习题.docx_第16页
第16页 / 共78页
C语言程序设计复习习题.docx_第17页
第17页 / 共78页
C语言程序设计复习习题.docx_第18页
第18页 / 共78页
C语言程序设计复习习题.docx_第19页
第19页 / 共78页
C语言程序设计复习习题.docx_第20页
第20页 / 共78页
亲,该文档总共78页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计复习习题.docx

《C语言程序设计复习习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计复习习题.docx(78页珍藏版)》请在冰点文库上搜索。

C语言程序设计复习习题.docx

C语言程序设计复习习题

一、判断题

使用循环的嵌套结构时,外层循环应"完全包含"内层循环,不能发生交叉.(对)

一个函数由两部分组成:

函数首部和函数体.(对)

语句printf("%f%%",1.0/3);输出为0.333333.(错)

在for循环中,循环变量只能是整型或字符型的.(错)

C程序中以#include和#define开始的程序行均不是C语句.(对)

while循环结构的特点是"先判断后执行",如果表达式的值一开始就为"假",循环体一次也不执行.(对)

当数组被说明为静态(static)类别时,无论是否显式给出初值,数组元素都将有确定的值.(对)

宏不存在类型问题,宏名无类型,它的参数也无类型.(对)

进行宏定义时,宏名必须使用大写字母表示.(错)

若a=3,b=2,c=1则关系表达式"(a>b)==c"的值为"真".(对)

移动指针时,不允许加上或减去一个非整数.()

已知:

intt=0;while(t=1){...}该循环一次也不执行.(错)

在for循环中,循环变量只能增加,不能减少.(错)

a=(b=4)+(c=6)是一个合法的赋值表达式.(对)

for(;;)语句相当于while

(1)语句.(对)

main函数由用户定义,并可以被其他函数调用.(错)

用typedef可以声明各种类型名,也有可以用来定义变量.()

在C语言中允许函数递归调用.(对)

在循环体内使用break语句或continue语句的作用相同.(错)

指针不允许进行乘、除运算.()

break语句用于结束整个循环,不再继续判断执行循环的条件是否成立.(对)

C语言规定,实参变量对形参变量的数据传递是单向的"值传递".(对)

参加位运算的数据可以是任何类型的数据.(错)

程序段:

if(strl>str2)printf("%s",strl);elseprintf("%s",str2);表示输出较大字符串.(错)

可以将一个结构体变量作为一个整体进行输入和输出.()

利用scanf函数可以输入带空格的字符串.(错)

带参数的宏中的形参要定义其类型.(错)

共同体变量所占的内存长度等于最长的成员的长度.()

设有定义int*p[4];其中的p是指向一维数组的指针变量.()

数据输出时,凡是打印出来的数字都是准确的.(错)

在switch语句中,无论如何default后面的语句都要执行一次.(错)

在一个文件中定义的全局变量的作用域为本程序的全部范围.()

do-while循环中,根据情况可以省略while.(错)

printf("%-6d",a);中的"-"代表输出一个负数.(错)

如果对数组不赋初值,则数组元素取随机值.(错)

若有"inti=3;",则"printf("%d",-i++);"输出的值为-4.(错)

数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址.()

数组名的规定与变量名不相同.()

数组元素的值可以使用赋值语句或输入函数进行赋值,但占用运行时间.(对)

在循环语句中,for循环是当型循环.(对)

在循环语句中,while语句与do-while语句完全等价.(错)

#include命令可以包含一个有函数定义的C语言源程序文件.(对)

C语言提供"位运算"功能,因此C语言属于低级语言.(错)

C语言中所有运算符的结合方向是"自左向右"的.(对)

在对一维数组初始化时,数组的长度可以省略,系统会自动按初值的个数分配存储空间.(对)

continue作用为终止循环而执行循环后面的语句.(对)

C语言中可以用字符串常量来初始化字符数组.(错)

while循环最少执行1次.(错)

当形参是变量时,实参与它所对应的形参占用不同的存储单元.(对)

共用体变量所占的内存长度等于最长的成员的长度.()

在C语言中,形式参数的作用域只是局限于所在函数.(对)

在TurboC中,此定义和语句是合法的:

enumaa{a=5,b,c}bb;bb=(enumaa)5;()

在一个文件中定义的全局变量的作用域为本程序的全部范围.()

C语言的函数在形式上必须要有参数.()

for语句中的表达式1,表达式2,表达式3均可以省略,并且分号也可以省略.(错)

函数调用语句func((expl,exp2),(exp3,exp4,exp5));含有实参的个数为5.(错)

函数值类型与程序中返回值类型出现矛盾时,以函数值类型为准.(对)

如果要保留某位只需和0进行按位或运算.()

如果将一个位清零,就让这位和0进行按位或(|)运算,即可达到清零目的.()

在嵌套的if语句中,else应与第一个if语句配对.(错)

整型常量-012表示一个负的八进制数12,也就是十进制数-10.(错)

break语句不能用于循环语句和switch语句之外的任何其他语句中.(对)

C语言对文件的处理方法有缓冲文件系统和非缓冲文件系统.(对)

C语言中文件的存取方式可以是顺序存取,也可以是随机存取.(对)

定义二维数组时,若对全部元素都赋初值,则第一维的长度不能省,但第二维的长度可以不指定.()

宏替换只不过是字符替代而已.(错)

在C语言中,数组元素的下标是整型常量或整型变量,并且下标默认从1开始.(错)

调用函数不能改变实参指针变量的值,但可以改变实参指针变量所指变量的值.()

调用函数时,实参与形参的类型必须一致.(错)

定义二维数组时,若对全部元素都赋初值,则第一维的长度不能省,但第二维的长度可以不指定.()

分号是语句的必要组成部分,所以函数首部的后面和编译预处理的后面都得加分号.(错)

宏替换占运行时间.(错)

嵌套的循环提倡使用缩进式书写格式,以增加程序的可读性.(对)

在switch语句中,"case常量表达式:

"只起语句标号作用.(对)

在编译时,对数据类型和变量都分配空间.(对)

C语言中同一数组中的每一个数组元素必须属于同一数据类型.(对)

多分支选择结构只能通过switch语句来实现.(错)

do-while语句中的语句可以一次也不执行.(错)

宏定义不是C语句.(对)

下面的输入语句是否合理:

scanf("%7.2f",&a).(错)

一个函数返回值的类型是由return语句中的表达式类型决定.()

若有以下的数组定义:

charx[]="12",y[]={'1','2'};则x数组和y数组长度相同.()

一个C程序可以由若干个源程序文件(分别进行编译的文件模块)组成.(对)

在C语言的函数中,最好使用全局变量.(错)

在初始化数组时,若数组长度小于初值的个数,则会产生编译错误.(对)

在嵌套的if语句中,else应与它上面的最近的且未曾配对的if语句配对.(对)

字符串"g\ti\b\bk\101"的长度是13.(错)

在C语言中以源文件而不是以函数为单位进行编译.(错)

在if语句中,条件判断表达式可以不用括号括起来.(错)

在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量.()

二、选择题

有以下函数

intfun(char*s)

{char*t=s;

while(*t)++t;

return(t-s);

}

该函数的功能是(A).

A.比较两个字符串的大小B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度D.将s所指字符串复制到字符串t中

以下程序的输出结果是(B).

intf(void)

{staticinti=0;

ints=1;

s+=i;i++;

returns;

}

intmain(void)

{inti,a=0;

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

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

return0;

}

A.20B.24C.25D.15

有下面程序段

#include"string.h"

intmain(void)

{chara[3][20]={{"china"},{"isa"},{"bigcountry!

"}};

chark[100]={0},*p=k;

inti;

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

{p=strcat(p,a[i]);}

i=strlen(p);

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

return0;

}

则程序段的输出结果是().

A.18B.19C.20D.21

有以下程序

#include"string.h"

intmain(void)

{charp[]={'a','b','c'},q[10]={'a','b','c'};

printf("%d%d\n",strlen(p),strlen(q));

return0;

}

以下叙述中正确的是().

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

有以下程序

#include"string.h"

intmain(void)

{charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";

strcpy(p+strlen(q),r);strcat(p,q);

printf("%d%d\n",sizeof(p),strlen(p));

return0;

}

程序运行后的输出结果是().

A.209B.99C.2011D.1111

下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是().

A.floata[2][]={{0,3,8},{0,9}};B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};D.floata[2][]={{0,3,8},{0,9,0}};

下面程序的输出结果是().

intmain(void)

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

p=a;

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

return0;

}

A.0B.1C.10D.9

下面程序的运行结果是().

intmain(void)

{staticchara[]="Language",b[]="programe";

char*p1,*p2;intk;

p1=a;p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k))

printf("%c",*(p1+k));

return0;

}

A.gaeB.gaC.LanguageD.有语法错

以下数组定义中不正确的是().

A.inta[2][3];B.intb[][3]={0,1,2,3,4,5};

C.intc[100][100]={0};D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

以下程序段的输出结果是().

inta=1234;

printf("%2d\n",a);

A.12B.34C.1234D.提示出错、无结果

以下程序输出结果是()

intmain(void)

{inta=5,b=4;

printf("%d\n",a>b?

a+b:

a-b);

return0;

}

A.9B.1C.10D.无法确定

下面的表达式while(!

x)中的表达式!

x与下面条件()等价.

A.x==0B.x==1C.x==0||x==1D.x!

=0

有如下程序:

intmain(void)

{intx=1,a=0,b=0;

switch(x)

{case0:

b++;

case1:

a++;

case2:

a++;b++;

}

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

return0;

}

该程序的输出结果是().

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

执行下列程序时输入:

123<空格>456<空格>789<回车>输出结果是().

intmain(void)

{chars[100];intc,i;

scanf("%c",&c);

scanf("%d",&i);

scanf("%s",s);

printf("%c,%d,%s\n",c,i,s);

return0;

}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

以下程序的输出结果是().

intmain(void)

{inta,i;a=0;

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

{switch(i)

{case0:

case3:

a+=2;

case1:

case2:

a+=3;

default:

a+=5;

}

}

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

return0;

}

A.31B.13C.10D.20

有以下程序

voidfun(char**p)

{++p;printf("%s\n",*p);}

intmain(void)

{char*a[]={"Morning","Afternoon","Evening","Night"};

fun(a);return0;

}

程序的运行结果是().

A.AfternoonB.fternoonC.MorningD.orning

有以下程序

voidfun(int*a,intn)

{intt,i,j;

for(i=0;i

for(j=i+1;j

if(a[i]

}

intmain(void)

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

for(i=0;i<10;i++)printf("%d,",c[i]);

printf("\n");

return0;

}

程序的运行结果是().

A.1,2,3,4,5,6,7,8,9,0,B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,D.1,2,3,4,9,8,7,6,5,0,

下面函数的功能是().

char*fun(char*str1,char*str2)

{while((*str1)&&(*str2++=*str1++));

returnstr2;

}

A.求字符串的长度B.比较两个字符串的大小

C.将字符串str1复制到字符串str2中D.将字符串str1接续到字符串str2中

以下程序的运行结果是().

fun(inti,intj)

{i++;j++;

returni+j;}

intmain(void)

{inta=1,b=2,c=3;

c+=fun(a,b)+a;

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

A.1,2,9B.2,3,10C.1,2,10D.2,3,9

已知intx=1,y=2,z=3;以下语句执行后x,y,z的值是().

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

A.x=1,y=2,z=3B.x=2,y=3,z=3C.x=2,y=3,z=1D.x=2,y=3,z=2

以下叙述中正确的是(C).

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

有定义:

intb;charc[10];,则正确的输入语句是(A).

A.scanf("%d%s",&b,&c);B.scanf("%d%s",&b,c);

C.scanf("%d%s",b,c);D.scanf("%d%s",b,&c);

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

A.数组的首地址B.数组第一个元素的值

C.数组中全部元素的值D.数组元素的个数

已知inta;floatb;所用的scanf调用语句格式为:

scanf("a//%d,b=%f",&a,&b);

为了将数据3和25.08分别赋给x和y,正确的输入形式是(C).

A.3,25.08B.a=3,b=25.08C.a//3,b=25.08D.a//3<回车>b=25.08

C语言规定,函数返回值的类型是由(D).

A.return语句中的表达式类型所决定B.调用该函数时的主调函数类型所决定

C.调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定

不合法的main()函数命令行参数表示形式是().

A.main(inta,char*c[])B.main(intarc,char**arv)

C.main(intargc,char*argv)D.main(intargv,char*argc[])

函数的值通过return语句返回,下面关于return语句的形式描述错误的是(C).

A.return表达式;B.return(表达式);

C.一个return语句可以返回多个函数值D.一个return语句只能返回一个函数值

若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(D).

A.函数调用可以作为独立的语句存在B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中D.函数调用可以作为一个函数的形参

阅读下面的程序,该程序(C).

intmain(void)

{inta=5,b=0,c=0;

if(a=b+c)printf("***\n");

elseprintf("$$$\n");return0;}

A.有语法错不能通过编译B.可以通过编译但不能通过连接

C.输出***D.输出$$$

下列说法中错误的是(A).

A.只能在循环体内使用break语句

B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环

C.在while和do…while循环中,continue语句并没有使整个循环终止

D.continue的作用是结束本次循环,即跳过本次循环体中尚未执行的语句,接着再一次进行循环判断

若有定义inta[9],*p=a;则p+5表示().

A.数组元素a[5]的值B.数组元素a[5]的地址

C.数组元素a[6]的地址D.数组元素a[0]的值加上5

以下只有在使用时才为该类型变量分配内存的存储类说明是().

A.auto和staticB.auto和register

C.register和staticD.extern和register

在C语言中,定义函数时函数的类型可以缺省,此时函数的隐含类型是(A).

A.voidB.intC.floatD.double

以下错误的描述是:

函数调用可以(D).

A.出现在执行语句中B.出现在一个表达式中

C.做为一个函数的实参D.做为一个函数的形参

以下正确的函数定义形式是(A).

A.doublefun(intx,inty)B.doublefun(intx;inty)

C.doublefun(intx;y);D.doublefun(intx,y);

若要对a进行++运算,则a应具有下面()说明.

A.inta[3][2];B.char*a[]={"12","ab"};

C.char(*a)[3];D.intb[10],b=*a;

若有定义和语句int*point,a=4;point=&a;下面均代表地址的一组选项是().

A.a,point,*&aB.&*a,&a,*point

C.*&point,*point,&aD.&a,&*point,point

若有以下定义和语句:

inta[10]={1,2,3,4,5,6,7,8,9,10};*p=a;则不能表示a数组定义的元素的表达式是().

A.*pB.a[10]C.*aD.a[p-a]

若执行下面的程序时,从键盘上输入5和2,则输出结果是(D).

intmain(void)

{inta,b,k;

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

k=a;

if(a

elsek=b%a;

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

return0;

}

A.5B.3C.2D.1

若执行下述程序时,若从键盘输入6和8时,结果为(B).

intmain(void)

{inta,b,s;

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

s=a;

if(a

s*=s;

printf("%d",s);

return0;

}

A.36B.64C.48D.以上都不对

以下叙述正确的是(B).

A.continue语句的作用是结束整个循环的执行

B.只能在循环体内和switch语句体内使用break语句

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用goto语句

设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是().

A.c=*p1+*p2;B.p2=c;C.p1=p2;D.c=

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

当前位置:首页 > 解决方案 > 学习计划

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

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