C期末考试复习题2Word版_第1页
C期末考试复习题2Word版_第2页
C期末考试复习题2Word版_第3页
C期末考试复习题2Word版_第4页
C期末考试复习题2Word版_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

整理为word格式整理为word格式整理为word格式(1)

int

a[4]={5,3,8,9};其中

a[3]的值为(

D

)。

A.

5

B.

3

C.

8

D.

9(2)

以下

4

个数组定义中,(D

)是错误的。

A.

int

a[7];

B.intn=5;

long

b[n];

C.

char

c[5];

D.

int

n,d[7];(3)

对字符数组进行初始化,(

B

)形式是错误。

A.

char

c1[

]={'1',

'2',

'3'};

B.

char

c2[

]=123;

C.

char

c3[10

]={

'1',

'2',

'3',

'\0'};

D.

char

c4[

]="123";(5)

在数组中,数组名表示(

A.

)。

A.

数组第

1

个元素的首地址

B.数组第

2

个元素的首地址

C.

数组所有元素的首地址

D.数组最后

1

个元素的首地址(6)

若有以下数组说明,则数值最小的和最大的元素下标分别是(B

)。

int

a[12]

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

A.

1,12

B.

0,11

C.

1,11

D.

0,12

(7)

若有以下说明,则数值为

4

的表达式是(

D

)。

int

a[12]

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

char

c=’a’,

d=4,

g=3

A.

a[g-c]

B.

a[4]

C.

a['d'-'c']

D.

a['d'-c]

(8)

设有定义:char

s[12]

=

"string"

;

则printf(

"%d\n",strlen(s));

的输出是(

A

)。

A.

6

B.

7

C.

11

D.

12(9)

设有定义:char

s[12]

=

"string";

则printf("%d\n

",

sizeof(s));

的输出是(

D)。

A.

6

B.

7

C.

11

D.

12(10)

合法的数组定义是(

A)。

A.

char

a[

]=

"string

"

;

B.

int

a[5]

={0,1,2,3,4,5};

C.

char

a=

"string

"

;

D.

char

a[

]={0,1,2,3,4,5}(11)

下面的程序中哪一行有错误(

D

)。

#include

<stdio.h>

main()

{

float

array[5]={0.0};

//第A行

int

i;

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

scanf("%f",&array[i]);

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

array[0]=array[0]+array[i];//第B行

printf("%f\n",array[0]);

//第C行

}

}

A.

第A行

B.

第B行

C.

第C行

D.

没有(12)

下面哪一项是不正确的字符串赋值或赋初值的方式(

C

)。

C

A.

char

*str;

str="string";

B.

char

str[7]={'s','t','r','i','n','g'};

C.

char

str1[10];str1="string";

整理为word格式整理为word格式整理为word格式

D.

char

str1[]="string",str2[]="12345678";(13)

若有以下说明和语句,则输出结果是哪一项(

C

)。

(strlen(s)为求字符串s的长度的函数)

char

s[12]="a

book!";

printf("%d",strlen(s));

A.

12

B.

8

C.

7

D.

11(14)

若有以下说明和语句,则输出结果是(

C

)。char

str[]="\"c:\\abc.dat\"";

printf("%s",str);

A.

字符串中有非法字符

B.

\"c:\\abc.dat\"

C.

"c:\abc.dat"

D.

"c:\\abc.dat"

(15)若有以下语句,则下面

是正确的描述。char

x[]="123456";

char

y[]={'1',

'2','3','4','5','6'};

(B)A.

x数组与y数组长度相同。

B.

x数组长度大于y数组长度。

C.

x数组长度小于y数组长度。

D.

x数组和y数组的赋值是非法的。(16)在C语言中,引用数组元素时,其数组下标的数据类型允许是。CA)整型常量 B)整型表达式C)整型常量或整型表达式 D)任何类型的表达式(17)以下对一维整型数组a的正确说明是。DA)inta(10); B)intn=10,a[n];C) intn; D) #defineSIZE10scanf(“%d”,&n); inta[SIZE];inta[n];(18)若有说明:inta[10];则对a数组元素的正确引用是。CA)a[10] B)a[3.5] C)a(5) D)a[10-10](19)在C语言中,一维数组的定义方式为:类型说明符数组名;(C)A)[整型常量表达式] B)[整型表达式]C)[整型常量]或[整型表达式] D)[常量](20)以下能对一维数组a进行正确初始化的语句是。(C)A)inta[10]=(0,0,0,0,0); B)inta[10]={};C)inta[]={0}; D)inta[10]=”10*1”;(21)下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号)。(A)1main()2{3 floata[3]={3*0};4 inti;5 for(i=0;i<3;i++)scanf(“%d”,&a[i]);6 for(i=1;i<3;i++)a[0]=a[0]+a[i];7 printf(“%d\n”,a[0]);8}整理为word格式整理为word格式整理为word格式A)第3行有错误 B)第7行有错误C)第5行有错误 D)没有错误(22)下面程序中有错误9*/的行是(每行程序前面的数字表示行号)。(D)1main()2{3 floata[3]={1};4 inti;5 scanf(“%d”,&a);6 for(i=1;i<3;i++)a[0]=a[0]+a[i];7 printf(“a[0]=%d\n”,a[0]);8}A)3 B)6 C)7 D)5(23)下面程序(每行程序前面的数字表示行号)。(D)1main()2{3 floata[3]={0};4 inti;5 for(i=0;i<3;i++)scanf(“%f”,&a[i]);6 for(i=1;i<4;i++)a[0]=a[0]+a[i];7 printf(“%f\n”,a[0]);8}A)没有错误 B)第3行有错误C)第5行有错误 D)第6行有错误(24)对以下说明语句的正确理解是。(B)inta[10]={6,7,8,9,10};A)将5个初值依次赋给a[1]至a[5]B)将5个初值依次赋给a[0]至a[4]C)将5个初值依次赋给a[6]至a[10]D)因为数组长度与初值的个数不相同,所以此语句不正确整理为word格式整理为word格式整理为word格式1.变量的指针,其含义是指该变量的____B_____.a)值b)地址c)名d)一个标志2.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是___D__.a)a,point,*&ab)&*a,&a,*pointc)*&point,*point,&ad)&a,&*point,point3.若有说明;int*p,m=5,n;以下正确的程序段的是_____D___.a)p=&n;b)p=&n;scanf("%d",&p);scanf("%d",*p);c)scanf("%d",&n);d)p=&n;*p=n;*p=m;4.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是____B____.main(){ int*p,*q,a,b;p=&a;printf(“inputa:”);scanf(“%d”,*p);……}a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5.已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是_____D___.voidprint_value(int*x){printf(“%d\n”,++*x);}a)23b)24c)25d)6.若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是AA)*p=&a;scanf("%ld",p);B)p=(long*)malloc(8);scanf("%ld",p);C)scanf("%ld",p=&a);D)scanf("%ld",&a);7.有以下程序B#include<stdio.h>main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1整理为word格式整理为word格式整理为word格式C)2,1,2,1 D)2,1,1,28.有以下程序C main() {inta=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",c); }执行后的输出结果是A)1 B)2 C)3 D)49.有以下程序main(){inta,k=4,m=4,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}程序运行后的输出结果是(C)A)4 B)1 C)0 10.在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是(A)A)p向高地址移了一个字节 B)p向高地址移了一个存储单元C)p向高地址移了两个字节 D)p与a+1等价11.有以下程序段

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;

b=p[5];

b中的值是(C)

A)5B)6C)812.若有以下定义,则对a数组元素的正确引用是___d______.inta[5],*p=a;a)*&a[5]b)a+2c)*(p+5)d)*(a+2)13.若有以下定义,则p+5表示____A___.inta[10],*p=a;a)元素a[5]的地址b)元素a[5]的值c)元素a[6]的地址d)元素a[6]的值14.设已有定义:inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是(B)A)for(p=a;a<(p+10);a++);B)for(p=a;p<(a+10);p++);C)for(p=a,a=a+10;p<a;p++);D)for(p=a;a<p+10;++a);整理为word格式整理为word格式整理为word格式15.有以下程序段

#include<stdio.h>intmain(){intx[]={10,20,30};int*px=x;printf("%d,",++*px);printf("%d,",*px);px=x;printf("%d,",(*px)++);printf("%d,",*px);px=x;printf("%d,",*px++);printf("%d,",*px);px=x;printf("%d,",*++px);printf("%d\n",*px);return0;}程序运行后的输出结果是(A)A)11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20D)20,10,11,20,11,12,20,2016.设有如下定义:intarr[]={6,7,8,9,10};int*ptr;ptr=arr;*(ptr+2)+=2;printf("%d,%d\n",*ptr,*(ptr+2));则程序段的输出结果为

DA)8,10B)6,8C)7,9D)6,1017.若有定义:inta[]={2,4,6,8,10,12},*p=a;则*(p+1)的值是______.*(a+5)的值是_____A____.A)412B)410C)28D)51721.有以下定义

chara[10],*b=a;

不能给数组a输入字符串的语句是(B)

A)gets(a)B)gets(a[0])C)gets(&a[0]);D)gets(b);22.下面程序段的运行结果是__C_______.char*s="abcde";s+=2;printf("%d",s);a)cdeb)字符'c'c)字符'c'的地址d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(C)

A)chars[10]="abcdefg";B)chart[]="abcdefg",*s=t;

C)chars[10];s="abcdefg";D)chars[10];strcpy(s,"abcdefg");整理为word格式整理为word格式整理为word格式24.设已有定义:char*st="howareyou";下列程序段中正确的是(A)A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];strcpy(++a,st);C)chara[11];strcpy(a,st);D)chara[],*p;strcpy(p=&a[1],st+2);25.有以下程序

main(){chara[]="programming",b[]="language";char*p1,*p2;inti;p1=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))printf("%c",*(p1+i));}输出结果是(D)

A)gmB)rgC)orD)ga26.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是___B_____.a)c=*p1+*p2;b)p2=cc)p1=p2d)c=*p1*(*p2);27.以下正确的程序段是__C_______.a)charstr[20];b)char*p;scanf("%s",&str);scanf("%s",p);c)charstr[20];d)charstr[20],*p=str;scanf("%s",&str[2]);scanf("%s",p[2]);28.若有说明语句chara[]="Itismine";char*p="Itismine";则以下不正确的叙述是____D____.a)a+1表示的是字符t的地址b)p指向另外的字符串时,字符串的长度不受限制c)p变量中存放的地址值可以改变d)a中只能存放10个字符29.下面程序的运行结果是____B___.#include<stdio.h>整理为word格式整理为word格式整理为word格式#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}a)正数b)负数c)零d)不确定的值30.有以下程序voidf(int*x,int*y){intt;t=*x;*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(*p!=*q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是__C____。

A)8,2,3,4,5,6,7,1,B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8,D)8,7,6,5,4,3,2,1,31.已定义以下函数C

fun(int

*p)

{

return

*p;}

该函数的返回值是

A)不确定的值

B)形参p中存放的值

C)形参p所指存储单元中的值

D)形参p的地址值33.若有以下函数首部 intfun(doublex[10],int*n)则下面针对此函数的函数声明语句中正确的是DA)intfun(doublex,int*n); B)intfun(double,int);C)intfun(double*x,intn); D)intfun(double*,int*);34.有以下程序Avoidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;整理为word格式整理为word格式整理为word格式for(i=2;i>=0;i--)sum(&aa[i]);printf("%d\n",aa[0]);}执行后的输出结果是()A)4B)3C)2D)135.下段代码的运行结果是:Dintmain()

{

chara;

char*str=&a;

strcpy(str,"hello");

printf(str);

return0;

}A)helloB)nullC)hD)发生异常36.下段程序的运行结果是:Bvoidmain(){char*p,*q;charstr[]="Hello,World\n";q=p=str;p++;print(q);print(p);}voidprint(char*s){printf(“%s”,s);}A)HeB)Hello,Worldello,WorldC)Hello,WorldHello,WorldD)ello,Worldell,World37.有以下程序

voidfun(char*c,intd)

{*c=*c+1;d=d+1;printf("%c,%c,",*c,d);

}

voidmain()

{chara='A',b='a';整理为word格式整理为word格式整理为word格式fun(&b,a);printf("%c,%c\n",a,b);

}

程序运行后的输出结果是____D__。

A)B,a,B,aB)a,B,a,BC)A,b,A,bD)b,B,A,b38、下面选项属于函数指针的是:DA、(int*)p(int,int)B、int*p(int,int)C、两者都是D、两者都不是39、若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是___C____.A)(*p)max(a,b);B)*pmax(a,b);C)(*p)(a,b);D)*p(a,b);41、下列选项中声明了一个指针数组的是:EA)int*p[2];B)int(*p)[2];C)typedefint*intPtr;intPtrp[2];D)A和BE)A和CF)B和C42、下面代码能通过编译的是:AA)intmain(){ inta[3]={1,2,3}; int*b[3]={&a[1],&a[2],&a[3]}; int**p=b; return0;}B)intmain(){ inta[3]={1,2,3}; int*b[3]={a[1],a[2],a[3]}; int**p=b; return0;}C)intmain(){ inta[3]={1,2,3}; int*b[3]={&a[1],&a[2],&a[3]}; int*p=b; return0;}D)intmain(){ inta[3]={1,2,3};整理为word格式整理为word格式整理为word格式 int*b[3]={&a[1],&a[2],&a[3]}; int*p=&b; return0;}整理为word格式整理为word格式整理为word格式2.当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和4.定义以下结构体数组cstructc{intx;inty;}s[2]={1,3,2,7};语句printf("%d",s[0].x*s[1].x)的输出结果为【】 A)14 B)6 C)2 D)215.运行下列程序段,输出结果是【a】structcountry{intnum;charname[10];}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};structcountry*p;p=x+2;printf("%d,%c",p->num,(*p).name[2]); A)3,a B)4,g C)2,U D)5,S6.下面程序的运行结果是【c】。structKeyWord{ charKey[20]; intID;}kw[]={"void",1,"char",2,"int",3,"float",4,"double",5};main(){ printf("%c,%d\n",kw[3].Key[0],kw[3].ID);}A)i,3 B)n,3 C)f,4 D)l,48.如果有下面的定义和赋值,则使用【】不可以输出n中data的值。astructSNode{ unsignedid; intdata;}n,*p;整理为word格式整理为word格式整理为word格式p=&n;A)p.data B)n.data C)p->data D)(*p).data9.根据下面的定义,能输出Mary的语句是B【】。 structperson { charname[9]; intage; };structpersonclass[5]={"John",17,"Paul",19,"Mary",18,"Adam",16};A)printf("%s\n",class[1].name);B)printf("%s\n",class[2].name);C)printf("%s\n",class[3].name);D)printf("%s\n",class[0].name);10.定义以下结构体数组Astructdate{intyear;intmonth;intday;};structs{structdatebirthday;charname[20];}x[4]={{2008,10,1,"guangzhou"},{2009,12,25,"Tianjin"}};语句printf("%s,%d,%d,%d",x[0].name,x[1].birthday.year);的输出结果为【】。A)guangzhou,2009B)guangzhou,2008C)Tianjin,2008D)Tianjin,200911.运行下列程序段,输出结果是【D】。structcountry{intnum;charname[20];}x[5]={1,"China",2,"USA",3,"France",4,"England",5,"Spanish"};structcountry*p;p=x+2;printf("%d,%s",p->num,x[0].name);A)2,FranceB)3,FranceC)4,EnglandD)3,China12.定义以下结构体数组Dstruct{intnum;charname[10];}x[3]={1,"china",2,"USA",3,"England"};整理为word格式整理为word格式整理为word格式语句printf("\n%d,%s",x[1].num,x[2].name)的输出结果为【】DA)2,USA B)3,EnglandC)1,china D)2,England13.定义以下结构体数组structdate{intyear;intmonth;};structs{structdatebirth;charname[20];}x[4]={{2008,8,"hangzhou"},{2009,3,"Tianjin"}};语句printf("%c,%d",x[1].

温馨提示

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

评论

0/150

提交评论