已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【达内培训】2013年计算机二级考试C语言课后模拟题九及答案一、单项选择题1.以下程序的输出结果是( B)。main( )char a10=1,2,3,4,5,6,7,8,9,0,*p;int i;i=8;p=a+i;printf(%sn,p-3);A) 6B) 6789C) 6D) 7892.以下程序的运行结果是( A )。#include stdio.hmain( )int a =1,2,3,4,5,6,7,8,9,10,11,12;int *p=a+5,*q=NULL;*q=*(p+5);printf(%d %dn, *p, *q);A) 运行后报错B) 6 6C) 6 11D) 5 53.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是( C )。int t33,*pt3,k;for(k=0; k3; k+) ptk=&tk0;A) t20B) t22C) tl2D) t2l4.下面程序把数组元素中的最大值放入a0中,则在if语句中的条件表达式应该是( B )。main( )int a10=6,7,2,9,1,10,5,8,4,3, *p=a, i;for(i=0; iaB) *pa0C) *p*a0D) *p0 *a05.以下程序的输出结果是( A )。#include#includemain( )char *a=abcdefghi;int k;fun (a); puts(a);fun(char *s)int x, y;char c;for(x=0, y=strlen(s)-1; xy; x+, y-)c=sy; sy=sx; sx=c;A) ihgfedcbaB) abcdefghiC) abcdedebaD) ihgfefghi6.以下程序的输出结果是( B )。main( )char *s=12134211;int v4=0,0,0,0,k,i;for(k=0;sk;k+)switch(sk)case 1:i=0;case 2:i=1;case 3:i=2;case 4:i=3;vi+;for(k=0;k4;k+) printf(%d ,vk);A) 4 2 1 1B) 0 0 0 8C) 4 6 7 8D) 8 8 8 87.以下程序的输出结果是( D )。#includemain( )char *p1,*p2,str50=ABCDEFG;p1=abcd;p2=efgh;strcpy(str+1,p2+1);strcpy(str+3,p1+3);printf(%s,str);str+1表示数组第二个数据B,p2+1指向f,即把fgh复制到BCD的位置,同时复制0A) AfghdEFGB) AbfhdC) AfghdD) Afgd8.若有以下定义和语句:double r=99,*p=&r;*p=r;则以下正确的叙述是( D )。A) 以上两处的*p含义相同,都说明给指针变量p赋值B) 在double r=99,*p=&r; 中,把r的地址赋给了p所指的存储单元C) 语句*p=r; 把变量r的值赋给指针变量pD) 语句*p=r; 取变量r的值放回r中9.若已定义:int a =0,1,2,3,4,5,6,7,8,9, *p=a, i;其中0 i 9, 则对a数组元素不正确的引用是( D )。A) ap-aB) *(&ai)C) piD) *(*(a+i)=*ai10.下列程序执行后的输出结果是( A )。void func(int *a, int b )b0=*a+6;main()int a, b5;a=0; b0=3;func(&a, B);printf(%dn, b0);A) 6B) 3C) 8D) 911.下列程序执行后的输出结果是( B )。main()int a33, *p, i;p=&a00;for(i=0; i9; i+) pi=i+1;printf(%dn, a12);A) 3B) 6C) 9D) 随机数12.请选出正确的程序段( C )。A) int *p;B) int *s, k;C) int *s, k;D) int *s, k;scanf(%d, p); *s=100; char *p, c; char *p, c;s=&k; s=&k;p=&c; p=&c;*p=a; s=p;*s=1;13.已知指针p的指向如下图所示,则执行语句 *- -p; 后*p的值是( B )。a0 a1 a2 a3 a41020304050A) 30B) 20C) 19D) 2914.设已有定义: 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=&a1, st+2);15.以下程序的输出结果是( C )。main( )int i, x33=9, 8, 7, 6, 5, 4, 3, 2, 1, *p=&x11;for(i=0; i4; i+=2) printf(%d , pi);A) 5 2B) 5 1C) 5 3D) 9 716.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是( B )。A) i=*p;B) *p=*&j;C) i=&j;D) i=*p;17.以下定义语句中,错误的是(D )。A) int a =1,2;B) char *a3;C) char s10=test;D) int n=5,an;18.下列程序段的输出结果是(A )。void fun(int *x, int *y)printf(%d %d, *x, *y); *x=3; *y=4;main()int x=1,y=2;fun(&y, &x);printf(%d %d, x, y);A) 2 1 4 3B) 1 2 1 2C) 1 2 3 4D) 2 1 1 219.下列程序的输出结果是( C )。main()char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5;printf(%d,*-p);A) 非法B) a4的地址C) 5D) 320.下列程序的运行结果是( B )。void fun(int *a, int *B)int *k;k=a; a=b; b=k;main()int a=3, b=6, *x=&a, *y=&b;fun(x, y);printf(%d %d, a, B);A) 6 3B) 3 6C) 编译出错D) 0 021.下面程序的输出结果是( C )。main()int a =1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(%dn,*p+9);A) 0B) 1C) 10D) 922.假定以下程序经编译和连接后生成可执行文件PROG . EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCD EFGH IJKL,则输出结果为( D )。main( int argc, char *argv )while(-argc0) printf(%s, argvargc);printf(n); 来源:考试大A) ABCDEFGHB) IJHLC) ABCDEFGHIJKLD) IJKLEFGHABCD23.对于基类型相同的两个指针变量之间,不能进行的运算是( C )。A) B) =C) +D) -24.有以下函数:char * fun (char *p)return p;该函数的返回值是( B )。A) 无确切的值B) 形参p中存放的地址值C) 一个临时存储单元的地址D) 形参p自身的地址值25.若有以下说明和定义fun(int *C)main()int (*a)()=fun,*b(),w10,c;在必要的赋值之后,对fun函数的正确调用语句是( B )。A) a=a(w);B) (*a)(&C);C) b=*b(w);D) fun (B);26.有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为9的表达式是( B )。A) *p+9B) *(p+8)C) *p+=9D) p+827.有如下程序:main()char ch25=“6937”,“8254”,*p2;int i,j,s=0;for(i=0;i2;i+) pi=chi;for(i=0;i0;j+=2)s=10*s+pij-0;printf(“%dn”,s);该程序的输出结果是( C )。A) 69825B 63825C) 6385D) 69382528.若有以下定义和语句:char *s1=“12345”,*s2=“1234”;printf(“%dn”, strlen(strcpy (s1, s2);则输出结果是( A )。A) 4B) 5C) 9D) 1029.下面程序的输出结果是( C )。main( )char *s=“121”;int k=0, a=0, b=0;dok+;if(k%2= =0) a=a+sk-0; continue;b=b+sk-0; a=a+sk-0;while(sk+1);printf(“k=%d a=%d b=%dn”, k, a, B);A) k=3 a=2 b=3B) k=3 a=3 b=2C) k=2 a=3 b=2D) k=2 a=2 b=330.若有以下的定义:int a =1, 2, 3, 4, 5, 6, 7, 8, 9, 10, *p=a;则值为3的表达式是( A )。A) p+=2,*(p+)B) p+=2,*+pC) p+=3,*p+D) p+=2,+*p31.以下程序的输出结果是( A )。#includesub1(char a, char B) char c; c=a; a=b; b=c;sub2(char *a, char B) char c; c=*a; *a=b; b=c;sub3(char *a, char *B) char c; c=*a; *a=*b; *b=c;main()char a, b;a=A; b=B; sub3 (&a, &B); putchar(a); putchar(B);a=A; b=B; sub2 (&a, B); putchar(a); putchar(B);a=A; b=B; sub1 (a, B); putchar(a); putchar(B);A) BABBABB) ABBBBAC) BABABAD) BAABBA32.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( B )。A) k=*p1+*p2;B) p2=k;来源:C) p1=p2;D) k=*p1*(*p2);33.设有如下定义:int arr =6, 7, 8, 9, 10; int *ptr;则下列程序段的输出结果是( D )。ptr=arr;*(ptr+2)+=2;printf(“%d, %dn”, *ptr, *(ptr+2);A) 8,10B) 6,8C) 7,9D) 6,1034.以下程序的输出结果是( D )。main()char a =“programming”, b = “language”;char *p1, *p2;int i;p1=a; p2=b;for(i=0; i7; i+)if(*(p1+i)= =*(p2+i) printf(“%c”, *(p1+i);A) gmB) rgC) orD) ga35.以下程序运行后,输出结果是( C )。main()char *s=“abcde”;s+=2;printf(“%ldn”, s);A) cdeB) 字符c的ASCII码值C) 字符c的地址D) 出错36.以下程序运行后,如果从键盘上输入ABCDE,则输出结果为( D )。#include#includefunc(char str )int num=0;while(*(str+num)!=0) num+;return(num);main()char str10, *p=str;gets (p);printf(“%dn”, func (p);A) 8B) 7C) 6D) 537.以下程序执行后,a的值是( C )。main()int a, k=4, m=6, *p1=&k, *p2=&m;a=p1= =&m;(等于运算符=优先级高于赋值运算符=,即为a=(p1=&m)printf(“%dn”, a);A) 4B) 1C) 0D) 运行时出错,a无定值38.以下程序运行后,如果从键盘上输入:bookbook则输出结果是( B )。#includemain()char a180, a280, *s1=a1, *s2=a2;gets(s1); gets(s2);if(!strcmp(s1, s2) printf(“*”);else printf(“#”);printf(“%dn”, strlen(strcat(s1, s2);A) *8B) #9C) #6D) *939.若有以下调用语句,则不正确的fun函数的首部是( D )。main() int a50, n;fun (n, &a9);A) void fun(int m,int x )B) void fun(int s,int h41)C) void fun(int p,int *s) D) void fun(int n,int a)40.假定下列程序的可执行文件名为prg . exe,则在该程序所在的子目录下输入命令行:prg hello good后,程序的输出结果是( B )。main(int argc, char *argv )int i;if(argc=0) return;for(i=1; iargc; i+) printf(“%c”, *argvi);A) hello goodB) hgC) helD) hellogood41.以下程序的输出结果是( D )。main( )char s =”ABCD”, *p;for(p=s+1; ps+4; p+) printf(“%s ”, p);A) ABCD BCD CD DB) A B C DC) B C DD) BCD CD D42.若已定义:int a9, *p=a; 并在以后的语句中未改变p的值,不能表示a1地址的表达式是( C )。A) p+1B) a+1C) a+D) +p43.执行以下程序后,y的值是( C )。main( )int a =2, 4, 6, 8, 10;int y=1, x, *p;p=&a1;for(x=0;x3;x+)y+=*(p+x);printf(“%dn”, y);A) 17B) 18C) 19D) 2044.下列程序的输出结果是( C )。main( )int a5=2, 4, 6, 8, 10, *p, *k;p=a;k=&p;printf(“%d ”, *(p+);printf(“%dn”, *k);A) 4 4B) 2 2C) 2 4D) 4 645.下列程序的输出结果是( D )。#includemain( )char *p1,*p2,str50=xyz;p1=abcd;p2=ABCD;strcpy(str+2, strcat(p1+2,p2+1);printf(%s,str);A) xyabcABB) abcABzC) ABabczD) xycdBCD46.设有以下定义:int a43=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12;int (*prt)3=a, *p=a0;则下列能够正确表示数组元素a12的表达式是( D )。A) *(*prt+1)2)B) *(*(p+5)C) (*prt+1)+2 D) *(*(a+1)+2)47.阅读程序:main( )int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *p;p=a;printf(%xn,p);printf(%xn,p+9);该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是( D )。A) 203B) 204C) 1a4D) 1a648.以下程序的输出结果是( C )。#include#includevoid fun(char *w, int m)char s, *p1, *p2;p1=w; p2=w+m-1;while(p1p2)s=*p1+; *p1=*p2-; *p2=s;main( )char a =ABCDEFG;fun(a, strlen(a);puts(a);A) GEFDCBAB) AGADAGAC) AGAAGAGD) GAGGAGA49.以下程序的输出结果是( C )。#includevoid fun(int *s)static int j=0;www.Examda.CoMdosj+=sj+1;while (+j2);main( )int k, a10=1, 2, 3, 4, 5;for(k=1; k3; k+) fun (a);for(k=0; k5; k+) printf (“%d”, ak);A) 34756B) 23445C) 35745D) 1234550.请读程序:#includechar fun(char *C)if(*c=A) *c-=A-a;return *c;main( )char s81, *p=s;gets (s);while(*p)*p=fun(p); putchar(*p); p+;putchar(n);若运行时从键盘上输入OPEN THE DOOR,则上面程序的输出结果为(B )。A) oPEN tHE dOORB) open the doorC) OPEN THE DOORD) Open The Door51.以下程序的输出结果是( B )。#includemain( )char *s1=AbCdEf,*s2=aB;s1+;s2+;printf(%dn,strcmp(s1, s2);A) 正数B) 负数C) 零D) 不确定的值52.下面各语句行中,能正确进行赋字符串操作的语句行是( C )。A) char st45=“ABCDE”;B) char s5=A, B, C, D, E;C) char *s; s= “ABCDE”;D) char *s; scanf(“%s”,s);53.以下程序的输出结果是( C )。fun(int *s, int n1, int n2)int i, j, t;i=n1; j=n2;while(ij)t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;i+; j-;main( )int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i, *p=a;fun (p, 0, 3); fun (p, 4, 9); fun (p, 0, 9);for(i=0; i10; i+) printf(%d , *(a+i);printf(“n”);A) 0 9 8 7 6 5 4 3 2 1B) 4 3 2 1 0 9 8 7 6 5C) 5 6 7 8 9 0 1 2 3 4D) 0 9 8 7 6 5 1 2 3 454.下面函数的功能是( B )。sss (char *s, char *t)while(*s)&(*t)&(*t= =*s) s+, t+;return(*s-*t);A) 求字符串的长度B) 比较两个字符串的大小C) 将字符串s复制到字符串t中D) 将字符串s连接到字符串t中55.以下程序段给数组所有的元素输入数据,则以下正确答案为( A )。main()int a10, i=0;while (i10) scanf(“%d”, );A) a+(i+)B) &ai+1C) a+iD) &a+i56.在下列叙述中,正确的一条是( B )。A) 语句int *pt中的*pt是指针变量名B) 语句int *p=a;等价于int *p; p=&a0;C) 运算符*和&都是取变量地址的运算符D) 已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值57.下列语句执行后的结果是( A )。y=5; p=&y; x=*p+;A) x=5,y=5B) x=5,y=6C) x=6, y=5D) x=6, y=658.在下列语句中,其含义为“p为带回一个指针的函数,该指针指向整型数据”的定义语句是( A )。A) int *p();B) int *p;C) int (*p)();D) int *p;59.在下面关于指针的说法中,错误的一条是( B )。A) 变量的指针就是变量的地址B) 可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量C) 一个指针变量只能指向同一个类型的变量D) 指针变量中只能存放地址60.在下列程序中,输出结果与其它程序不同的是( D )。A) main()int a10;int i;for(i=0;i10;i+) scanf(“%d”,&ai);printf(“n”);for(i=0;i10;i+) printf(“%d”,ai);B) main()int a10;int i;for(i=0;i10;i+) scanf(“%d”,&ai);printf(“n”);for(i=0;i10;i+) printf(“%d”,*(a+i);C) main()int a10;int i, *p;for(i=0;i10;i+) scanf(“%d”,&ai);printf(“n”);for(p=a;p(a+10);p+) printf(“%d”,*p);D) main()int a10;int i, *p;for(i=0;i10;i+) scanf(“%d”,&ai);printf(“n”);for(i=0;i10;i+) printf(“%d”,*(p+i);61.以下程序的输出结果是( D )。sub(int *s, int y)static int t=3;y=st; t-;main()int a =1, 2, 3, 4, n;int x=4;for(n=0; narray;p-)*p=*(p-1);*array=array_end;m-;if(m0) move (array, n, m);main()static int number6=1, 2, 3, 4, 5, 6;int m=4, j;move(number, 6, m);for(j=0;j5;j+)printf(“%d,”, numberi);printf(“%d”, number5);A) 1,2,3,4,5,6B) 6,5,4,3,2,1C) 3,4,5,6,1,2D) 6,1,2,3,4,565.在下列叙述中,正确的一条是( B )。A) 以下程序运行结果为Computer and c:main()char str4;str=“Computer and c”;printf(“%sn”, str);B) 下面两种表示方式等价(1) int fun(int x,int y)(2) int fun(x,y)int x,y;C) 若输入1、2,以下程序的运行结果为12main()int *p,i,a2;p=a;for(i=0;i2;i+) scanf(“%d”,p+);for(i=0;i2;i+,p+) printf(“%d”,*p);D) 以下程序的运行结果为3main()int *p,a5=1,3,4,5,6;p=a;printf(“%d”,*p+);66.以下程序的输出结果是( A )。point(char *pt);main()char b4=a, c, s, f, *pt=b;point(pt);printf(“%cn”, *pt);point(char *p)p+=3;A) aB) cwww.Examda.CoMC) sD) f67.以下程序的输出结果为( A )。void move(int *pointer)int i, j, t;for(i=0; i3; i+)for(j=i; j3; j+)t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;main()int a33=1, 2, 3, 4, 5, 6, 7, 8, 9, *p, i;p=&a00;move(p);for(i=0; i3; i+)printf(“%d%d%d”, ai0, ai1, ai2);A) 147258369B) 123456789C) 987654321D) 12748563968.以下程序的输出结果是( A )。sub(int x, int y, int *z)*z=y-x+2;main()int a, b, c;sub(16, 7, &a); sub(9, a, &B); sub(a, b, &C);printf(“%d, %d, %dn”, a, b, C);A) 7,-14,-5B) 7,-16,-9C) 7,-12,-9D) 9,-14,-569.变量p为指针变量,若p=&a,下列说法不正确的是( D )。A) &*p=&aB) *&a=a C) (*p)+=a+D) *(p+)=a+70.若输入10,以下程序的输出结果是( B )。#define MAX 50main()int i, k, m, n, numMAX, *p;scanf(“%d”, &n);p=num;for(i=0; in; i+)*(p+i)=i+1;i=0; k=0; m=0;while(mn-1)if(*(p+i)!=0) k+;if(k= =3)*(p+i)=0; k=0; m+;i+;if(i= =n) i=0;while(*p= =0) p+;printf(“%dn”, *p);A) 10B) 4C) 50D) 6071.以下程序的输出结果是( B )。main()char *alpha5=“a”, “bc”, “def”, “1”, “23”, *p;int i;p=alpha;for(i=0; i3; i+, p+) printf(“%s”, *p);printf(“t”);p=p-3;for(i=0; i3; i+, p+) printf(“%ct”,*p);A) abcdef d e fB) abcdef a b dC) abcdef 1 23D) defabc 1 23二、填空题1.下列程序的输出结果是 GDABC 。#includemain( )char b30,*chp;strcpy(&b0,GH);strcpy(&b1,DEF);strcpy(&b2,ABC);printf(%sn,B);2.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是 How does she 。#includemain( )char strl =How do you do,*p1=strl;strcpy (strl+strlen(strl)/2,es she);printf(%sn,pl);3.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a0的地址小于a4的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。a0 a1 a2 a3 a42233445566(1)若p已指向存储单元a1。通过指针p给s赋值,使s指向最后一个存储单元a4的语句是s=p+3 。(2)若指针s指向存储单元a2,p指向存储单元a0,表达式s-p的值是 2 。4.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。#includemain()char *p, s6;int n;p=s;gets (p);n=*p-0;while( *(+p) !=0) n=n*8+*p-0;printf(%dn, n);5.设有以下程序:main()int a, b, k=4, m=6, *p1=&k, *p2=&m;a=(pl= =&m);b=(*p1)/(*p2)+7;printf(a=%dn, a);printf(b=%dn,B);执行该程序后,a的值为 0 ,b的值为 7 。6.下列程序的输出结果是 0 。void fun(int *n)while(*n)-);printf(%d, +(*n);main()int a=100;fun (&a);7.以下程序的输出结果是 10 。main()int arr =30, 25, 20, 15, 10, 5, *p=arr;p+;printf(%dn, *(p+3);8.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 *(p+5) 。int w10=23,54,10,33,47,98,72,80,61, *p=w;9.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。strlen (char a , char b )int num=0, n=0;while (*(a+num)!= 0 ) num+;while (bn)*(a+num)=bn; num+; n+ ;return(num);来源:www.tarena.ne
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8.2.1化肥、农药的合理施用与合理用药+课件高一下学期化学人教版必修第二册
- 2025-2030能源金融项目融资商业计划书
- 电子商务网站功能设计与实现要点
- 2025-2030再生资源产业规划专项研究报告
- 2025年事业单位教师招聘体育学科专业知识试卷(体育教学与实施)
- 2025年初中生物植物光合作用影响因素
- 伊宁五年级数学专项训练卷2025年
- 2026农业生物技术领域现状分析发展投资前景课题
- 2026农业众筹模式创新与投资者保护机制分析
- 2026中国镍钴锂新能源金属期货市场发展前景预测报告
- 2026年就业市场:挑战与机遇并存高校毕业生就业指导与策略
- 医疗广告审查标准与医美宣传红线
- 袖阀管注浆地基加固规范方案
- 2026年建筑智能化对电气节能的推动
- 精美护士礼仪培训
- T-GDSX 001-2024 装配式园林景观设计指引
- 贵州银行笔试题库及答案
- CT成像基础课件
- CVC和PICC导管护理要点说明
- 2025年南师附中特长试卷及答案
- 基于多因素Logistic回归分析构建成人肠梗阻手术决策精准预测模型
评论
0/150
提交评论