C语言复习题.docx

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

C语言复习题.docx

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

C语言复习题.docx

C语言复习题

C语言复习题

一、选择题

(1)有如下程序

main()

{inty=3,x=3,z=1;

printf(“%d%d\n”,(++x,y++),z+2);

}

运行该程序的输出结果是:

D

A)34B)42C)43D)33

(第三章输出语句)

(2)当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是:

C

A)c=b=a;B)(a=c)‖(b=c);

C)(a=c)&&(b=c);D)a=c=b;

(第四章关系表达式)

(3)在以下一组运算符中,优先级最高的运算符是:

C

A)<=B)=

C)%D)&&

(第四章运算符的优先级)

(4)请选出合法的C语言赋值语句:

B

A)a=b=58B)i++;

C)a=58,b=58D)k=int(a+b)

(第三章赋值语句)

(5)以下说法中正确的是:

C

A)#define和printf都是C语句B)#define是C语句,而printf不是

C)printf是C语句,但#define不是D)#define和printf都不是C语句

(第三章语句概述)

(6)若有以下定义:

D

chara;intb;

floatc;doubled;

则表达式a*b+d-c值的类型为

A)floatB)intC)charD)double

(第二章类型混合运算)

(7)若已定义x和y为double类型,则表达式:

x=1,y=x+3/2的值是:

C

A)1B)2

C)2.0D)2.5

(第二章类型混合运算)

(8)有以下程序

#include

main()

{inta,b,c=246;

a=c/100%9;

b=(-1)&&(-1);

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

}

输出结果是:

A

A)2,1B)3,2C)4,3D)2,-1

(第四章逻辑运算符)

(9)以下程序运行后,输出结果是:

C

A)cdeB)字符c的ASCII码值C)字符c的地址D)出错

main()

{char*s="abcde";

s+=2;

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

}

(第九章指针的概念)

(10)若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为:

D

A)a<>0B)!

a

C)a=0D)a

(第4章条件表达式)

(11)有如下程序段,其输出结果是什么:

A

main()

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

 if(c=a+b)

printf("yes\n");

elseprintf("no\n");}

A)yesB)noC)yes\nD)no\n

(第4章条件语句)

(12)假设在程序中a,b,c均被定义成整型,并且已赋大于1的值,则下列能正确表

1

示代数式-----的表达式是:

D

abc

A)1/a*b*c

B)1/(a*b*c)

C)1/a/b/(float)c

D)1.0/a/b/c

(第二章类型混合运算)

(13)若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是:

A

for(i=5;i;i--)

for(j=0;j<4;j++){...}

A)20B)15

C)24D)16

(第五章for循环语句)

(14)下面哪个程序段不是死循环:

C

(A)a=0;sum=0;

while(a=1)

{sum=sum+a;a++;}

(B){intI,sum=0;

For(i=1;i<=3;sum++)

sum+=I;

}

(C)sum=0;

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

sum=sum+i;

(D)sum=0;

for(i=1;;i++)

sum=sum+i;

(第五章for循环语句)

15、设有以下定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是:

D

A)*((*prt+1)[2])B)*(*(p+5))

C)(*prt+1)+2D)*(*(a+1)+2)

16、不能把字符串:

Hello!

赋给数组b的语句是:

B

A)charb[10]={'H','e','l','l','o','!

'};

B)charb[10];b="Hello!

";

C)charb[10];strcpy(b,"Hello!

");

D)charb[10]="Hello!

";

17、设有以下定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是:

D

A)*((*prt+1)[2])B)*(*(p+5))

C)(*prt+1)+2D)*(*(a+1)+2)

18、请选出以下语句的输出结果:

A

printf("%d\n",strlen("\t\"\065\xff\n"));

A)5B)14C)8D)输出项不合法,无正常输出

(19)假定所有变量均已正确说明,下列程序段运行后x的值是:

B

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A)34B)4C)35D)3

(第四章if语句)

(20)运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为:

C

A)2,0B)5,0C)5,5D)2,5

#include

main()

{intv1=0,v2=0;

charch;

while((ch=getchar())!

='#')

switch(ch)

{case'a';

case'h';

default;v1++;

case'0';v2++;

}

printf("%d,%d\n",v1,v2);

}

(第四章switch语句)

(21)执行以下程序段时:

A

A)循环体将执行一次B)循环体将执行两次

C)循环体将执行无限次D)系统将提示有语法错误

x=-1;

do{x=x*x;}while(!

x);

(第五章do_whule语句)

(22)执行下面的程序后,a的值为:

B

main()

{inta,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20)break;

if(b%3==1)

{b+=3;

continue;

}b-=5;

}

}

A)7B)8

C)9D)10

(第5章break,continue语句)

23)下面能正确进行字符串赋值操作的语句是:

C

A)chars[5]={"ABCDE"};B)chars[5]={'A','B','C','D','E'};

C)char*s;s="ABCDEF";D)char*s;scanf("%s",s);

(第6章字符数组的定义;第9章字符串指针)

(24)不能把字符串:

Hello!

赋给数组b的语句是:

B

A)charb[10]={'H','e','l','l','o','!

'};

B)charb[10];b="Hello!

";

C)charb[10];strcpy(b,"Hello!

");

D)charb[10]="Hello!

";

(第6章字符数组的使用)

(25)函数调用:

strcat(strcpy(str1,str2),str3)的功能是:

C

A)将串str1复制到串str2中后再连接到串str3之后

B)将串str1连接到串str2之后再复制到串str3之后

C)将串str2复制到串str1中后再将串str3连接到串str1之后

D)将串str2连接到串str1之后再将串str1复制到串str3中

(第6章字符串处理函数)

(26)给出以下定义:

charx[]="abcdefg";

chary[]={'a','b','c','d','e','f','g'};

则正确的叙述为:

C

A)数组X和数组Y等价B)数组x和数组Y的长度相同

C)数组X的长度大于数组Y的长度D)数组X的长度小于数组Y的长度

(第6章字符数组的定义)

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

D

A)AfghdEFGB)AbfhdC)AfghdD)Afgd

#include

main()

{char*p1,*p2,str[50]="ABCDEFG";

p1="abcd";p2="efgh";

strcpy(str+1,p2+1);strcpy(str+3,p1+3);

printf("%s",str);

}

(第6章字符串处理函数;第9章字符串指针)

(28)下面哪个程序段编译会出错:

D

A)max(intx,inty,int*z)B)max(intx,inty)

{*z=x>y?

x:

y;}{returnx>y?

x:

y;}

C)max(intx,inty)D)intmax(intx,y)

{intz;{intz

z=x>y?

x:

y;z=x>y?

x:

y;

returnz;}returnz;}

(29)下列程序执行后输出的结果是:

D

#include〈stdio.h〉

f(inta)

{intb=0;

staticc=3:

a=c++,b++;

returu(a);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

A)3B)0C)5D)4

(第7章静态变量)

(30)下列程序执行后输出的结果是:

A

intd=1;

fun(intq)

{intd=5;

d+=q++;

printf("%d".d);

}

main()

{inta=3;

fun(a);

d+=a++;

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

}

A)84B)96C)94D)85

(第7章函数调用;第3章复合赋值运算符)

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

D

main()

{intx=10,y=10;

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

}

A)1010B)99

C)910D)109

(第7章函数调用时,参数结合方式:

右结合)

(32)有以下程序

intfun(intx,inty,int*cp,int*dp)

{*cp=x+y;*dp=x-y;}

main()

{inta,b,c,d;

a=30;b=50;

fun(a,b,&c,&d);

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

}

输出结果是:

C

A)50,30B)30,50C)80,-20D)80,20

(第7章函数调用;第9章指针变量做参数)

(33)执行下面的程序后,a的值是:

B

#defineSQR(X)X*X

main()

{inta=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

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

}

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

(第8章带参宏定义)

(34)以下有关宏替换的叙述不正确的是:

D

A)宏替换不占用运行时间B)宏名无类型

C)宏替换只是字符替换D)宏名必须用大写字母表示

(第8章宏定义)

(35)C语言的编译系统对宏命令的处理是:

D

A)在程序运行时进行的

B)在程序连接时进行的

C)和C程序中的其它语句同时进行编译的

D)在对源程序中其它成份正式编译之前进行的

(第8章宏定义运行特点)

(36)若有宏定义如下:

#defineX5

#defineYX+1

#defineZY*X/2

则执行以下printf语句后,输出结果是:

D

inta;a=Y;

Printf("%d\n",Z);

Printf("%d\n",--a);

A)7B)12C)12D)7

6655

(第7章函数调用;第8章带参宏定义)

37、若有以下的定义:

intt[3][2];能正确表示t数组元素地址的表达式是:

D

A)&t[3][2]  B)t[3][2]C)t[1][0]D)t[2]+1

38、若已定义x和y为double类型,则表达式:

x=1,y=x+3/2的值是:

C

A)1B)2

C)2.0D)2.5

39、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是:

C

A)c=b=a;B)(a=c)‖(b=c);

C)(a=c)&&(b=c);D)a=c=b;

40、C语言的编译系统对宏命令的处理是:

D

A)在程序运行时进行的

B)在程序连接时进行的

C)和C程序中的其它语句同时进行编译的

D)在对源程序中其它成份正式编译之前进行的

(41)请读程序:

#defineADD(x)x+x

main()

{

intm=1,n=2,k=3;

intsum=ADD(m+n)*k;

printf("sum=%d",sum);

}

上面程序的运行结果是:

B

A)sum=9B)sum=10C)sum=12D)sum=18

(第8章带参宏定义)

(42)在宏定义#definePI3.14159中,用宏名PI代替一个:

D

A)常量B)单精度数C)双精度数D)字符串

(第8章宏定义)

(43)设有以下定义:

inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*prt)[3]=a,*p=a[0]

则下列能够正确表示数组元素a[1][2]的表达式是:

D

A)*((*prt+1)[2])B)*(*(p+5))

C)(*prt+1)+2D)*(*(a+1)+2)

(第9章数组指针与指向主组的指针)

44、能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假“的表达式是___C____。

A)(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)

B)(x>=1)||(x<=10)||(x>=200)||(x<=210)

C)(x>=1)&&(x<=10)||(x>=200)&&(x<=210)

D)(x>=1)||(x<=10)&&(x>=200)||(x<=210)

45、在C语言中,合法的长整型常数是:

A

A)0LB)4962710C)0.054838743D)2.1869e10

46、下列4个函数中,:

C能实现交换变量值的功能。

A)voidfun_a(intx,inty)B)voidfun_b(int*x,int*y)

{int*p;{int*p;

*p=x;x=y;y=*p;}*x=*y;*y=*x;}

C)voidfun_c(int*x,int*y)D)voidfun_d(intx,inty)

{*x=*x+*y;{intp;

*y=*x-*y;p=x;x=y;y=p;

*x=*x-*y;}}

47、请选出合法的C语言赋值语句:

B

A)a=b=58B)i++;

C)a=58,b=58D)k=int(a+b)

48、下列程序的输出结果是:

C

main()

{inta[5]={2,4,6,8,10},*P,**k;

p=a;

k=&p;

printf("%d",*(p++));

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

}

A)44B)22C)24D)46

49、以下说法中正确的是:

C

A)#define和printf都是C语句B)#define是C语句,而printf不是

C)printf是C语句,但#define不是D)#define和printf都不是C语句

50、有以下程序

#include

main()

{inta,b,c=246;

a=c/100%9;

b=(-1)&&(-1);

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

}

输出结果是:

A

A)2,1B)3,2C)4,3D)2,-1

51、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为:

D

A)a<>0B)!

a

C)a=0D)a

52、假定所有变量均已正确说明,下列程序段运行后x的值是:

B

a=b=c=0;x=35;

if(!

a)x--;

elseif(b);

if(c)x=3;

elsex=4;

A)34B)4C)35D)3

53、执行以下程序段时:

A

A)循环体将执行一次B)循环体将执行两次

C)循环体将执行无限次D)系统将提示有语法错误

x=-1;

do{x=x*x;}while(!

x);

54、以下程序的输出结果是:

D

A)AfghdEFGB)AbfhdC)AfghdD)Afgd

#include

main()

{char*p1,*p2,str[50]="ABCDEFG";

p1="abcd";p2="efgh";

strcpy(str+1,p2+1);strcpy(str+3,p1+3);

printf("%s",str);

}

55、以下程序的输出结果是:

D

main()

{intx=10,y=10;

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

}

A)1010B)99

C)910D)109

二、简单题:

(1)简述C语言中有哪几种语句,并举例?

(P43)

5种。

(控制、函数、表达式、空、复合语句)

(2)分别各列出两种C语言中的输入输出函数,并例举出每个函数的使用格式?

Getchar();putchar();printf();scanf()(p48)

(3)简述C语言中三种循环结构的特点。

(p84)

while;do_while;for

(4)简述C语言中全局变量与局部变量的区别,以及对程序调用的影响?

(P146)

全局:

函数体外定义的变量;局部:

函数体内定义的变量;

全局对各个程序中的修改都起作用。

(5)简述C语言中动态变量与静态变量的区别,以及对程序调用的影响?

(P150)

动态:

auto;静态:

static,静态变量存储在专用的静态存储区中,在函数结束是不会消失,下次对函数调用有起作用,直到整个程序运行结束才消失。

(6)分析数组指针和指向数组的指针有何区别?

(p190)

定义方式不同;意义不同。

(7)分析什么是形式参数,实际参数?

比较实际参数是数组名和数组元素时有何区别?

(p123)

数组元素是一般值传递,数组名是传递的地址,因此,对主调函数的影响也不同。

(8)简述文件操作的步骤?

(p292)

1、文件指针的定义2、文件打开3、文件读写4、文件关闭

(9)C语言中十进制、八进制、十六进制表示的方法是什么?

十进制数100表示为八进制、十六进制分别是什么?

(0144,0X64)

(10)简述break;和continue;语句的不同?

break;跳出循环结构,执行循环结构后面的语句。

continue;跳出本次循环,回到循环开头重新执行。

(11)、分别各列出两种C语言中的输入输出函数,并例举出每个函数的使用格式?

printf,scanf,getchar,putchar

(12)、有如下定义:

inta[10],*p=a;和floata[10],*p=a;若执行p++;后,p增值是否相同?

并说明其原因?

不一样,不同数据类型存储占用空间不一样。

三、编程复习题

【程序1】

题目:

输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:

我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

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

2.程序源代码:

main()

{

intx,y,z,t;

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

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("smalltobig:

%d%d%d\n",x,y,z);

}

-----------------------------------------------------------------------------

【程序2】

题目:

输出9*9口诀。

1.程序分析:

分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

#include"stdio.h"

main()

{

 inti,j,result;

 printf("\n");

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

  {for(j=1;j<10;j++)

    {

     result=i*j;

     printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

    }

   printf("\n");/*每一行后换行*/

  }

}

-------------------------------------------------------------

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

当前位置:首页 > 自然科学 > 物理

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

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