习题集.docx

上传人:b****6 文档编号:7046583 上传时间:2023-01-16 格式:DOCX 页数:14 大小:25.97KB
下载 相关 举报
习题集.docx_第1页
第1页 / 共14页
习题集.docx_第2页
第2页 / 共14页
习题集.docx_第3页
第3页 / 共14页
习题集.docx_第4页
第4页 / 共14页
习题集.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

习题集.docx

《习题集.docx》由会员分享,可在线阅读,更多相关《习题集.docx(14页珍藏版)》请在冰豆网上搜索。

习题集.docx

习题集

一、单选题

1、能将高级语言源程序转换成目标程序的是(C)。

A)调试程序B)解释程序

C)编译程序D)编辑程序

2、设有以下定义:

intx=10,y=3,z;则语句:

printf(“%d”,z=(x%y,x/y));的结果是(D)。

A)1B)0

C)4D)3

3、若已定义x和y为整型,则表达式:

x=1,y=x+3/2的值是(B)。

A)1B)2

C)2.0D)2.5

4、C语言中(B)。

A)不能使用do-while语句构成循环。

B)do-while语句,当while语句中的表达式值为零时结束循环。

C)do-while语句,当while语句中的表达式值为非零时结束循环

D)do-while语句必须用break语句才能退出循环

5、设有定义inta=3;,则执行语句a+=a-=a*a后,变量a的值是(C)。

A)3B)0C)-12D)9

6、以下程序的输出结果是(A)。

#include

main()

{inta,b,d=241;

a=d/100%9;

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

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

}

A)21B)1,-1C)2,1D)2-1

7、以下程序的输出结果是(D)。

#include

#include

main()

{charstr[12]={'s','t','r','i','n','g'};

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

}

A)12B)7C)11D)6

8、以下的for循环(A)。

for(x=0,y=0;(y!

=123)&&(x<4);x++);

A)执行4次B)是无限循环C)执行3次D)循环次数不定

9、以下程序段的输出结果是(A)

chara[]=”Basic”;

char*p=a;

printf(“%s”,p);

A)BasicB)BC)asicD)不确定

10、以下说法中正确的是(C )。

A)C语言程序总是从第一个定义的

B)在C语言程序中,要调用的函数必须在main()函数中定义

C)C语言程序总是从main()函数开始执行

D)C语言程序中的main()函数必须放在程序的开始部分

11、下述对C语言字符数组的描述中错误的是(D)

A)字符数组可以存放字符串

B)字符数组中的字符串可以整体输入、输出

C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D)不可以用关系运算符对字符数组中的字符串进行比较

12、C语言中最简单的数据类型包括( B )

A)整型、实型、逻辑型

B)整型、实型、字符型

C)整型、字符型、逻辑型

D)整型、实型、逻辑型、字符型

13、阅读程序:

#include

#defineSUB(X,Y)(X)*Y

main()

{inta=3,b=4;

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

}

程序的输出结果是(B)

A)15B)12C)16D)20

14、为表示关系x≥y≥z应使用C语言表达式(A)

A)(x>=y)&&(y>=z)B)(x>=y)and(y>=z)

C)(x>=y>=z)D)(x>=y)&(x>=y)

15、如下程序的运行结果是(A)

Main()

{intn=0;

while(n++<=1)

printf(“%3d”,n);

printf(“%3d\n”,n);

}

A)123B)321C)012D)210

16、设有如下定义:

char*aa[2]={“abcd”,”ABCD”};

则以下说法中正确的是(B)

A)aa数组元素的值分别是”abcd”和”ABCD”

B)aa是指针变量,它指向含有两个数组元素的字符型一维数组

C)aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D)aa数组的两个元素中各自存放了字符’a’和’A’的地址。

17、设有如下定义:

  structsk

{inta;floatb;}data,*p;

若有p=&data;,则对data中的a域的正确引用是(p->a)

A)(*p).aB)(*p).data.aC)p.data.aD)p->data.a

18、设有说明int(*ptr)[M];其中的标识符ptr是(D)

A)M个指向整形变量的指针

B)指向M个整形变量的函数指针

C)一个指向具有M个整形元素的一维数组的指针

D)具有M个指针元素的一维指针数组,每个元素都只能指向整形变量

19、阅读程序,程序的输出结果为(D)。

intx=3;

do

{printf(“%3d”,x-=2);

}

while(!

(--x));

A)1B)30C)1-2D)死循环

20、设有10个数据进行冒泡排序,最少进行的比较次数为(C)。

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

21、设有语句chara=’\n’;,则变量a(A)。

A)包含1个字符B)包含2个字符

C)包含3个字符 D)说明不合法

22、若有定义:

doublex,y;则表达式:

x=1,y=x+3/2的值是(C)。

A)1B)2

C)2.0D)2.5

23、有以下程序:

(注意:

ch[0]在低字节,ch[1]在高字节。

#include

unionpw{inti;charch[2];}a;

main()

{a.ch[0]=0;a.ch[1]=13;

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

}

程序的输出结果是(C)。

A)13B)14C)3328D)328

24、以下程序的输出结果是(B)。

#include

main()

{charstr[12]={'a','b','c','d','f','g',’f’};

printf("%d\n",strlen(str));}

A)12B)7C)11D)6

25、设有以下语句:

structst{intn;structst*next;};

staticstructsta[3]={{5,&a[1]},{7,&a[2]},{9,'\0'}},*p;p=&a[0];

则表达式()的值是6。

A)p++->nB)++(p->n)C)(*p).n++D)p->n++

26、对于程序段

floatf1(inta)

{intb;……}

main()

{intm,n;

m=f1(n);……

}

charf2(intx,inty)

{inta;……}

变量m,n的作用范围是()

(A)整个程序段(B)main函数

(C)main函数和f2函数(D)mian函数和f1函数

27、若p1、p2都是指向整型的指针,p1已经指向数量x,要使p2也指向x,正确的是( D  )

(A)p2=p1;(B)p2=**p1;

(C)p2=&p1;(D)p2=*p1;

28、算术运算符,赋值运算符和关系运算符的运算优先级按从高到低依次为( B )

(A)算术运算、赋值运算、关系运算

(B)算术运算、关系运算、赋值运算

(C)关系运算、赋值运算、算术运算

(D)关系运算、算术运算、赋值运算

29、C语言中,运算对象必须是整型数的运算符是(A )

A)%B)/C)%和/D)*

30、若数组定义为inta[10];则下列哪个表达式是错误的?

(   )

(A)*a(B)a__

(C)&a__(D)++a

31、表达式10%2值是(  A )

(A)0(B)1

(C)5(D)5.0

32、设有说明int(*ptr)[M];其中的标识符ptr是(D)

A)M个指向整形变量的指针

B)指向M个整形变量的函数指针

C)一个指向具有M个整形元素的一维数组的指针

D)具有M个指针元素的一维指针数组,每个元素都只能指向整形变量

33、初始化一维数组a正确的语句是(C)

(A)inta[10]=(0,0,0,0,0);(B)inta[10]={};

(C)inta[]={10};(D)inta[10]={[10*1]};

34、下列程序执行后输出的结果是(A)

intd=1;

fun(intp)

{intd=5;

d+=p++;

printf("%d",d);

}

main()

{inta=3;

fun(a);

d+=a++;

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

}

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

35、函数调用语句“f((e1,e2),(e3,e4,e5))”中参数的个数是(   )

(A)1(B)2

(C)3(D)5

36、执行下列语句中,sum变量的值是(  A    )

  intI,sum=0;

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

(A)45(B)55(C)0(D)编译错误

37、以下c语言函数声明中,不正确的是(   C   )

(A)  voidfun(intx,inty);(B)  fun(intx,inty);

(C)  intfun(intx,y);(D)  char*fun(char*s);

38、以下关于typedef的叙述中错误的是  (  C    )

(A)  用typedef可以增加新的类型 

(B)  用typedef可以定义各种类型名,但不能用来定义变量

(C)  用typedef只是将已有的类型用新的标识符来代表

(D)  使用typedef有利于程序的通用和移植

39、假设指针p已经指向某个整型变量x,则*p相当于  ( A     )

(A)  &x(B)  &p(C)  x(D)  *x

40、组成C语言程序的是(B)

(A)过程(B)函数

(C)子程序(D)主程序和子程序

41、不用第三个变量,将变量a和b的值进行互换的操作是(C)

(A)a+=b;b-=a;a-=b;(B)a+=b;b=a-b;a-=b;

(C)b-=a;a-=b;a-=b;(D)b-=a;a=b-a;a+=b;

42、对do-while语言错误的说法是(C)

(A)可构成多重循环结构(B)循环次数不可能为0

(C)循环次数可能为0(D)先执行后判断

43、函数调用时,若实参是一个数组名,则向形参传递的是(C )

(A)数组的长度(B)数组的每一个元素的地址(C)数组的首地址(D)数组元素的值

二、填空题

1、下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值。

intadd(intx,inty,intz)

{z=x+y;}

2、以下定义和语句,则使指针P指向值为17的数组元素的表达式是p+3。

inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

3、设有定义:

inti,j,k;则执行语句for(i=0,j=10;i<=j;i++,j--)k=i+j;后,k的值为。

4、以下两条if语句可合并成一条if语句为。

if(a<=b)x=1;

elsey=2;

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

elseprintf("x=%d\n",x);

5、C语言程序的函数之间可通过函数名返回数据外,还可通过    进行。

6、int*p[4]的意义是,int(*p)[4]的意义是。

7、设有以下定义和语句:

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

则*(*(p+1)+1)的值为______________。

8、若有以下定义和语句:

struct{intx;chary;intz;}a,*b;

b=&a;

则sizeof(a)的值是____,而sizeof(b)的值是。

9、以下程序的输出是_________。

main()

{inta[10]={19,23,44,17,37,28,49,36},*p;

p=a;

printf("%d\n",(p+=3)[3]);

}

10、若有以下说明和定义语句,则变量w在内存中所占的字节数是

   unionaa

{floax,y;charc[6];};

structst{unionaav;floatm[5];doubleave;}w;

11、以下函数的功能是:

把两个整数指针所指的存储单元中的内容进行交换。

请填空。

exchange(int*x,int*y)

{intt;

t=*y;*y=;*x=;}

12、设有字符串STR,如下程序段用于确定其长度。

{intnum=0;

while()

num++;

return();

}

13、设单链表的结点含两个域:

data是数据域,next是指针域,请填空。

structlink{chardata;structlink*next}node;

14、下面程序的输出是。

main()

{inta[]={1,2,3,4},*p=a,i;

for(i=0;i<4;i++)a[i]=*(++p);

printf(“%d”,a[2]);

}

15、如下程序的运行结果是。

Main()

{intn=0;

while(n++<=1)

printf(“%3d”,n);

printf(“%3d\n”,n);

}

16、设for(k=0;k<10;k++)++k;则该循环共执行次。

17、结构化程序由三种基本控制结构组成,它们分别是、和。

18、初始化值是0.618的双精度变量a的定义形式为。

19、若有以下定义和语句:

struct{intx;chary;floatz;}a,*b;b=&a;

则sizeof(a)的值是____,而sizeof(b)的值是。

20、语句printf(“\%d%d”,123);执行后将输出:

21、如下程序段的输出是。

staticchara[]=”ABCD”;

char*p=a;

printf(“%s”,++p);

22、如下函数用于求出一个2x4矩阵中的最小值。

Max_value(arr)

Intarr[][4];

{intI,j,max=arr[0][0];

for(I=0;;I++)

for(j=0;;j++)

if(arr[I][j]>max)max=a[I][j];

return(max);

}

23、设单链表的结点含三个域:

data1和data2是数据域,next是指针域,请填空。

structlink{intdata1;chardata2;;}node;

24、字符串″ABCD\t\\\123″的长度是。

25、表达式a=1,a+1,a++的值是。

27、被调函数在执行结束时,这个函数中定义的类型的变量不被释放。

28、设inta[2][3]={{2},{3}};则数组元素------------------------的值为3。

29、下列程序

    intx=3;

   do{printf(″%d″,--x);}while(!

x);

循环执行的次数是。

30、若函数定义为

intdata(    )

  {  floatx=9.9;

return(x);

  }

则调用后函数返回的值是。

三、阅读如下程序,其功能是求出数组S中的最大元素,请简述其算法的基本思想,画出程序流程图;修改该算法,使其更高效。

Main()

{ints[10],I,m;

for(I=0;I<10;I++)scanf(“%d”,&s[I]);

for(I=1;I<10;I++)if(s[I]>s[0]){m=s[0];s[0]=s[I];s[I]=m;}

printf(“%d”,s[0]);

}

四、简述如下程序的功能,画出程序流程图,并对其进行修改,使其符合结构化程序的要求。

程序1:

main()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)

continue;

printf(“%d”,n);

}

}

程序2:

main()

{intn=1;

while(n<=200)

{if(n>100)

break;

printf(“%d”,n++);

}

}

五、阅读如下程序:

#include

intmain(void)

{inti;

char*name[3]={"David","Jane Wang","Tom Lee"};

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

printf("name[%d]=%s\n",i,name[i]);

}

 请描述其执行结果;修改程序显示三个字符串("David","Jane Wang","Tom Lee")的首字符。

六、设数组a中有10个整数(数据在函数main中产生),请设计一个函数把其中的偶数存放到数组b中返回并输出。

七、设有单向链表L,编程输出结点的值,并删除第一个结点。

(提示:

结点结构为:

structnode{intdata;structnode*next;};)

八、编程完成:

函数main产生整型数组s[4][4]中的数据;函数findmin求出数组s每列中最小元素的行号;函数outdata输出每列的最小元素及行号。

九、设有单向链表L,请设计函数查找链表中数据域值最大的结点并返回其地址值。

结点结构为:

structnode{intdata;structnode*next;}。

十、有一函数:

 

写一程序,输入X,输出Y值.

十一、输入若干学生成绩,统计并输出最高与最低成绩,输入负数时结束。

十二、阅读程序,说明每个语句的功能及程序的功能,并画出程序的流程图。

(结构组成,执行情况)

main()

{inta,b,c;

scanf(“%d,%d”,&a,&b);

c=max(a,b);

printf(“max=%d”,c);

}

intmax(intx,inty)

{intz;

if(x>yz=x;elsez=y;

return(z);

}

十三、设有30个学生数据,每个学生数据包括学号、姓名、成绩三项;请编写函数input输入学生数据,函数sort完成按成绩由高到低的顺序排列数据,主控函数main完成调用控制与输出结果。

十四、判断题

1、函数可以分为两个部分:

函数说明部分和函数体。

(T)

2、函数的定义和函数的调用均可以嵌套。

(F)

3、在C语言中,当我们定义了数组inta[5];则数组元素的下标从1到5。

(F)

4、在C语言中,“A”占两个字节,而‘A’占一个字节。

(T)

5、程序中定义的整型变量的初值都为0。

(F)

6、若有说明intc;则while(c=getchar());是错误的C语句。

(  T    )

7、C语言中,共用体类型的变量在程序运行期间,所有成员都在内存中。

  (    F  )

8、在一个函数内部的复合语句中定义的变量,只在该复合语句范围内有效。

  (  F    )

9、C语言程序中,一个文件中的函数可以引用存储在另一个文件中的函数和变量。

  (  T    )

10、使用continue和break语句,都可以使得C程序的执行直接从循环中跳出。

  (   T   )

十五、程序改错题

从键盘输入m和n两个整数,输出时先输入较大者,后输入较小者。

main()

{intm,n,*pm=m,*pn=n,*p;

if(a

{*p=*pm;

*pm=*pn;

*pn=*p;

}

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

}

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

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1