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

下载本文档

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

文档简介

1、(1) int a4=5,3,8,9;其中 a3的值为(  D  )。 A. 5       B. 3       C. 8       D. 9(2) 以下 4 个数组定义中,(D  )是错误的。 A.

2、60;int a7;      B.int n=5;  long bn;    C. char c5;    D.  int n,d7;(3) 对字符数组进行初始化,(   B  )形式是错误。 A. char c1 ='1', '2',

3、 '3'    B. char c2 =123;    C. char c310 = '1', '2', '3', '0'    D. char c4 ="123"(5) 在数组中,数组名表示( A. 

4、0; )。 A. 数组第 1 个元素的首地址     B.数组第 2 个元素的首地址 C. 数组所有元素的首地址        D.数组最后 1 个元素的首地址(6) 若有以下数组说明,则数值最小的和最大的元素下标分别是(B    )。 int a12 =1,2,3,4,5,6,

5、7,8,9,10,11,12;  A. 1,12    B. 0,11    C. 1,11    D. 0,12 (7) 若有以下说明,则数值为 4 的表达式是(  D )。   int a12 =1,2,3,4,5,6,7,8,9,10,11,12;   char&

6、#160;c=a, d=4, g=3   A. ag-c    B. a4    C. a'd'-'c'    D. a'd'-c  (8) 设有定义:char s12 = "string"   则printf( &quo

7、t;%dn",strlen(s);  的输出是(  A  )。 A. 6    B. 7    C. 11    D. 12(9) 设有定义:char s12 = "string"  则printf("%dn ", sizeof(s);&#

8、160;的输出是(    D)。 A. 6    B. 7    C. 11    D. 12(10) 合法的数组定义是(   A)。  A. char a = "string "    B. int 

9、;a5 =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 arra

10、y5=0.0;       /第A行   int i;    for(i=0;i<5;i+)    scanf("%f",&arrayi);   for(i=1;i<5;i+)     array0=array0+arrayi;/第B行   printf("%fn&qu

11、ot;,array0);    /第C行     A. 第A行   B. 第B行   C. 第C行   D. 没有(12) 下面哪一项是不正确的字符串赋值或赋初值的方式( C   )。 C    A. char *str; str="str

12、ing"    B. char str7='s','t','r','i','n','g'    C. char str110;str1="string"    D. char str1="string",str2="12345678"(13) 

13、若有以下说明和语句,则输出结果是哪一项(   C )。  (strlen(s)为求字符串s的长度的函数)  char s12="a book!"    printf("%d",strlen(s);    A. 12   B. 8   C. 7   D.

14、0;11(14) 若有以下说明和语句,则输出结果是(   C )。char str=""c:abc.dat""    printf("%s",str); A. 字符串中有非法字符    B. "c:abc.dat"     C. "c:abc.dat" 

15、60;   D. "c:abc.dat" (15)若有以下语句,则下面       是正确的描述。char x="123456" char y='1', '2','3','4','5','6' (B )A. x数组与y数组长度相同。 B. x数组长度大于y数组长度

16、。 C. x数组长度小于y数组长度。 D. x数组和y数组的赋值是非法的。(16)在C 语言中,引用数组元素时,其数组下标的数据类型允许是。C A)整型常量B)整型表达式C)整型常量或整型表达式D)任何类型的表达式(17)以下对一维整型数组a 的正确说明是。 DA)inta(10);B)int n=10,an;C)int n;D)#define SIZE 10scanf(“%d”,&n);int aSIZE;int an;(18)若有说明:int a10;则对a 数组元素的正确引用是。 C A)a10 B)a3.5 C)a(5) D)a10-10

17、(19)在C 语言中,一维数组的定义方式为:类型说明符数组名; (C) A)整型常量表达式 B)整型表达式C)整型常量 或整型表达式 D)常量(20)以下能对一维数组a 进行正确初始化的语句是。 ( C)A)int a10=(0,0,0,0,0); B)int a10=;C)int a=0; D)int a10=”10*1”;(21)下面程序如果只有一个错误,那么是(每行程序前面的数字表示行号) 。(A)1 main()2 3 float a3=3*0;4 int i;5 for(i=0;i<3;i+) scanf(“%d”,&ai);6for(i=1;i<3;i+) a0

18、=a0+ai;7 printf(“%dn”,a0);8 A)第3 行有错误B)第7 行有错误C)第5 行有错误D)没有错误(22)下面程序中有错误9*/的行是(每行程序前面的数字表示行号)。(D)1 main()2 3 float a3=1;4 int i;5 scanf(“%d”,&a);6 for(i=1;i<3;i+) a0=a0+ai;7printf(“a0=%dn”,a0);8 A)3 B)6 C)7 D)5(23)下面程序(每行程序前面的数字表示行号)。 (D)1 main()2 3float a3=0;4 int i;5 for(i=0;i<3;i+) sca

19、nf(“%f”,&ai);6 for(i=1;i<4;i+) a0=a0+ai;7 printf(“%fn”,a0);8 A)没有错误B)第3 行有错误C)第5 行有错误D)第6 行有错误(24)对以下说明语句的正确理解是。 (B)int a10=6,7,8,9,10;A)将5 个初值依次赋给a1至a5B)将5 个初值依次赋给a0至a4C)将5 个初值依次赋给a6至a10D)因为数组长度与初值的个数不相同,所以此语句不正确1.变量的指针,其含义是指该变量的_B_. a)值 b)地址 c)名 d)一个标志2若有语句int *point,a=4;和point=&a;下面均代表

20、地址的一组选项是_D_. a)a,point,*&a b)&*a,&a,*point c)*&point,*point,&a d)&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输入数

21、值的方法是错误的,其错误原因是_B_. main()int *p,*q,a,b;p=&a;printf(“input a:”);scanf(“%d”,*p);a)*p表示的是指针变量p的地址b)*p表示的是变量a的值,而不是变量a的地址c)*p表示的是指针变量p的值d)*p只能用来说明p是一个指针变量5. 已有变量定义和函数调用语句:int a=25; print_value(&a); 下面函数的正确输出结果是_D_. voidprint_value(int *x) printf(“%dn”,+*x);a)23b)24 c)25 d)266.若有说明:long *p,a;则不能

22、通过scanf语句正确给输入项读入数据的程序段是A A) *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() int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r;printf("%d,%d,%d,%dn&quo

23、t;,m,n,*p,*q);程序运行后的输出结果是A)1,2,1,2 B)1,2,2,1C)2,1,2,1 D)2,1,1,28.有以下程序 Cmain() int a=1, b=3, c=5;int *p1=&a, *p2=&b, *p=&c; *p =*p1*(*p2);printf("%dn",c);执行后的输出结果是A)1B)2C)3D)49.有以下程序 main() inta,k=4,m=4,*p1=&k,*p2=&m;a=p1=&m;printf("%dn",a);程序运行后的输出结果是(C)A

24、)4B)1C)0 D)运行时出错,无定值10.在16位编译系统上,若有定义int a=10,20,30, *p=&a;,当执行p+;后,下列说法错误的是(A) A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价11.有以下程序段int a10=1,2,3,4,5,6,7,8,9,10,*p=&a3,b;b=p5;b中的值是(C) A)5 B)6 C)8 D)912.若有以下定义,则对a数组元素的正确引用是_d_. int a5,*p=a; a)*&a5 b)a+2 c)*(p+5) d)*(a+2)13.若有以下定义,则

25、p+5表示_A_.int a10,*p=a; a)元素a5的地址 b)元素a5的值 c)元素a6的地址 d)元素a6的值14.设已有定义: int a10=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);15.有以下程序段#include <stdio.h>int main() int x = 10, 20, 30;in

26、t *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("%dn", *px); return 0;程序运行后的输出结果是(A )A)

27、11,11,11,12,12,20,20,20 B)20,10,11,10,11,10,11,10C)11,11,11,12,12,13,20,20 D)20,10,11,20,11,12,20,2016.设有如下定义:intarr=6,7,8,9,10;int *ptr;ptr=arr; *(ptr+2)+=2;printf ("%d,%dn",*ptr,*(ptr+2);则程序段的输出结果为 DA)8,10 B)6,8 C)7,9 D)6,1017.若有定义:int a=2,4,6,8,10,12,*p=a;则*(p+1)的值是_. *(a+5)的值是_A_.

28、A)4 12 B)4 10 C)2 8 D)5 1721.有以下定义 char a10,*b=a;不能给数组a输入字符串的语句是(B)A)gets(a) B)gets(a0) C)gets(&a0); D)gets(b);22.下面程序段的运行结果是_C_. char *s="abcde" s+=2;printf("%d",s); a)cde b)字符'c' c)字符'c'的地址 d)无确定的输出结果23.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(C)A) char s10="abcde

29、fg" B) char t="abcdefg",*s=t;C) char s10;s="abcdefg" D) char s10;strcpy(s,"abcdefg");24.设已有定义: char *st="how are you" 下列程序段中正确的是(A) A) char a11, *p; strcpy(p=a+1,&st4); B) char a11; strcpy(+a, st); C) char a11; strcpy(a, st);D) char a, *p; strcpy(p=&a

30、mp;a1,st+2);25.有以下程序  main()char a="programming",b="language"char *p1,*p2;int i;p1=a;p2=b;for(i=0;i<7;i+)if(*(p1+i)=*(p2+i)printf("%c",*(p1+i);输出结果是(D) A)gm B)rg C)or D)ga26设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是_B_. a)c=*p1+*p2; b)p2=c c)p1=p2 d)c=*p1*

31、(*p2);27以下正确的程序段是_C_. a)char str20; b)char *p;scanf("%s",&str); scanf("%s",p); c)char str20; d)char str20,*p=str;scanf("%s",&str2); scanf("%s",p2);28若有说明语句 char a="It is mine" char *p="It is mine"则以下不正确的叙述是_D_. a)a+1表示的是字符t的地址 b)p指向

32、另外的字符串时,字符串的长度不受限制 c)p变量中存放的地址值可以改变 d)a中只能存放10个字符29下面程序的运行结果是_B_. #include <stdio.h> #include <string.h> main() char *s1="AbDeG" char *s2="AbdEg" s1+=2;s2+=2;printf("%dn",strcmp(s1,s2); a)正数 b)负数 c)零 d)不确定的值30.有以下程序 void f(int *x,int *y) int t; t=*x;*x=*y;*y

33、=t; main() int a8=1,2,3,4,5,6,7,8,i,*p,*q; p=a;q=&a7; while(*p!=*q)f(p,q);p+;q-; for(i=0;i<8;i+) printf("%d,",ai); 程序运行后的输出结果是_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)     retur

34、n  *p;    该函数的返回值是  A)不确定的值                      B)形参p中存放的值  C)形参p所指存储单元中的值        D)形参p的地址值33.若有以下函数首部 int fun(dou

35、ble x10, int *n)则下面针对此函数的函数声明语句中正确的是DA)int fun(double x, int *n);B)int fun(double , int );C)int fun(double *x, int n);D)int fun(double *, int *);34.有以下程序Avoid sum(int *a) a0=a1;main( ) intaa10=1,2,3,4,5,6,7,8,9,10,i;for(i=2;i>=0;i-) sum(&aai);printf("%dn",aa0); 执行后的输出结果是()A)4 B)3 C)

36、2 D)135.下段代码的运行结果是:Dint main()char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;A)hello B)null C)h D)发生异常36.下段程序的运行结果是:Bvoid main()char *p,*q;char str="Hello,Worldn"q = p = str;p+;print(q);print(p);void print(char *s)printf(“%s”,s);A)H e B)Hello,World ello,WorldC)H

37、ello,World Hello,World D)ello,World ell,World37.有以下程序void fun(char *c,int d)*c=*c+1;d=d+1;printf("%c,%c,",*c,d);void main()char a='A',b='a'fun(&b,a); printf("%c,%cn",a,b);程序运行后的输出结果是_D_。A) B,a,B,aB) a,B,a,BC) A,b,A,bD) b,B,A,b38、下面选项属于函数指针的是:DA、(int*)p(int, in

38、t) 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 *p2; B)int (*p)2; C)typedefint* intPtr;intPtr p2;D)A和BE)A和CF)B和C42、下面代码能通过编译的是:AA)int main()int a3=1,2,3;int *b3=&a1,&a2

39、,&a3;int *p = b;return 0;B)int main()int a3=1,2,3;int *b3=a1,a2,a3;int *p = b;return 0;C)int main()int a3=1,2,3;int *b3=&a1,&a2,&a3;int *p = b; return 0;D)int main()int a3=1,2,3;int *b3=&a1,&a2,&a3;int *p = &b;return 0;2当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量B)结构中

40、第一个成员所需的内存容量C)结构体中占内存容量最大者所需的容量D)结构中各成员所需内存容量之和4定义以下结构体数组cstruct c int x;int y; s2=1,3,2,7;语句printf("%d",s0.x*s1.x)的输出结果为 【 】 A) 14 B) 6 C) 2D) 215运行下列程序段,输出结果是 【a 】 struct country intnum; char name10; x5=1,"China",2,"USA",3,"France",4, "England",5,

41、"Spanish"struct country *p; p=x+2;printf("%d,%c",p->num,(*p).name2);A) 3,a B) 4,g C) 2,U D) 5,S6下面程序的运行结果是【c 】。structKeyWordchar Key20;int ID;kw="void",1,"char",2,"int",3,"float",4,"double",5;main()printf("%c,%dn",kw3

42、.Key0, kw3.ID);A) i,3B) n,3C) f,4D) l,48如果有下面的定义和赋值,则使用【 】不可以输出n中data的值。astructSNodeunsigned id;int data;n,*p;p=&n;A) p.dataB) n.dataC) p->dataD) (*p).data9.根据下面的定义,能输出Mary的语句是B【】。struct person char name9;int age;structperson class5="John",17,"Paul",19,"Mary",18,

43、"Adam",16;A) printf("%sn",); B) printf("%sn",);C) printf("%sn",); D) printf("%sn",);10.定义以下结构体数组 Astruct date int year;int month;int day; ;struct s struct date birthday; char name20; x4=2008, 10, 1, "g

44、uangzhou", 2009, 12, 25, "Tianjin"语句printf("%s,%d,%d,%d",,x1.birthday.year); 的输出结果为 【】。A) guangzhou,2009 B) guangzhou,2008 C) Tianjin,2008 D) Tianjin,200911运行下列程序段,输出结果是【D】。struct country intnum; char name20; x5=1,"China",2,"USA",3,"France&quo

45、t;,4, "England",5, "Spanish"struct country *p; p=x+2;printf("%d,%s",p->num,);A) 2,FranceB) 3,FranceC) 4,EnglandD) 3, China12定义以下结构体数组Dstruct intnum; char name10; x3=1,"china",2,"USA",3,"England"语句printf("n%d,%s",x1.num,x

46、2.name)的输出结果为【】DA)2,USAB)3,England C)1,chinaD)2,England13定义以下结构体数组struct date int year;int month; ;struct s struct date birth; char name20; x4=2008,8,"hangzhou",2009,3,"Tianjin"语句printf("%c,%d",1,x1.birth.year);的输出结果为【】CA)a,2008B)hangzhou,2008C)i,2009D)Tianjin,200914运行下列程序,输出

温馨提示

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

评论

0/150

提交评论