无忧服务:
娱乐交友:
全职实习:
微信号:school51
扫一下,立即关注
===大学生成长生活平台===
当前位置: >
2013年计算机二级考试C语言课后模拟题九及答案
来源/作者:卫凯 点击次数:1088
一、单项选择题 1.以下程序的输出结果是( B)。 main( ) {char a[10]={'1','2','3','4','5','6','7','8','9',0},*p; int i; i=8; p=a+i; printf("%s\n",p-3); } A) 6 B) 6789 C) ‘6’ D) 789 2.以下程序的运行结果是( A )。 #include "stdio.h" main( ) {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 %d\n", *p, *q); } A) 运行后报错 B) 6 6 C) 6 11 D) 5 5 3.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是( C )。 int t[3][3],*pt[3],k; for(k=0; k&3; k++) pt[k]=&t[k][0]; A) t[2][0] B) t[2][2] C) t[l][2] D) t[2][l] 4.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( B )。 main( ) {int a[10]={6,7,2,9,1,10,5,8,4,3}, *p=a, for(i=0; i&10; i++, p++) if(________) *a=*p; printf("%d",*a); } A) p&a B) *p&a[0] C) *p&*a[0] D) *p[0]& *a[0] 5.以下程序的输出结果是( A )。 #include&stdio.h& #include&string.h& main( ) {char *a="abcdefghi"; fun (a); puts(a); } fun(char *s) {int x, for(x=0, y=strlen(s)-1; x&y; x++, y--) {c=s[y]; s[y]=s[x]; s[x]=c;} } A) ihgfedcba B) abcdefghi C) abcdedeba D) ihgfefghi 6.以下程序的输出结果是( B )。 main( ) {char *s="";int v[4]={0,0,0,0},k,i; for(k=0;s[k];k++) {switch(s[k]) {case '1':i=0; case '2':i=1; case '3':i=2; case '4':i=3; } v[i]++; } for(k=0;k&4;k++) printf("%d ",v[k]); } A) 4 2 1 1 B) 0 0 0 8 C) 4 6 7 8 D) 8 8 8 8 7.以下程序的输出结果是( D )。 #include&string.h& main( ) {char *p1,*p2,str[50]="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的位置,同时复制‘\0’ } A) AfghdEFG B) Abfhd C) Afghd D) Afgd 8.若有以下定义和语句: double r=99,*p=&r; *p=r; 则以下正确的叙述是( D )。 A) 以上两处的*p含义相同,都说明给指针变量p赋值 B) 在"double r=99,*p=&r; "中,把r的地址赋给了p所指的存储单元 C) 语句"*p=r; "把变量r的值赋给指针变量p D) 语句"*p=r; "取变量r的值放回r中 9.若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a, 其中0≤ i ≤9, 则对a数组元素不正确的引用是( D )。 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))=*a[i]
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
10.下列程序执行后的输出结果是( A )。 void func(int *a, int b[ ]) {b[0]=*a+6;} main() {int a, b[5]; a=0; b[0]=3; func(&a, B); printf("%d\n", b[0]); } A) 6 B) 3 C) 8 D) 9 11.下列程序执行后的输出结果是( B )。 main() {int a[3][3], *p, p=&a[0][0]; for(i=0; i&9; i++) p[i]=i+1; printf("%d\n", a[1][2]); } A) 3 B) 6 C) 9 D) 随机数 12.请选出正确的程序段( C )。 A) int *p; B) int *s, C) int *s, D) int *s, scanf("%d", p); *s=100; char *p, char *p, s=&k; s=&k; p=&c; p=&c; *p='a'; s=p; *s=1; 13.已知指针p的指向如下图所示,则执行语句 *- -p; 后*p的值是( B )。 a[0] a[1] a[2] a[3] a[4]
50 A) 30 B) 20 C) 19 D) 29 14.设已有定义: char *st="how are you";下列程序段中正确的是( A )。 A) char a[11], *p; strcpy(p=a+1, &st[4]); B) char a[11]; strcpy(++a, st); C) char a[11]; strcpy(a, st); D) char a[ ], *p; strcpy(p=&a[1], st+2); 15.以下程序的输出结果是( C )。 main( ) {int i, x[3][3]={9, 8, 7, 6, 5, 4, 3, 2, 1}, *p=&x[1][1]; for(i=0; i&4; i+=2) printf("%d ", p[i]); } A) 5 2 B) 5 1 C) 5 3 D) 9 7 16.若有说明: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 *a[3]; C) char s[10]="test"; D) int n=5,a[n]; 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 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
19.下列程序的输出结果是( C )。 main() {char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5; printf("%d",*--p); } A) 非法 B) a[4]的地址 C) 5 D) 3 20.下列程序的运行结果是( 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 3 B) 3 6 C) 编译出错 D) 0 0 21.下面程序的输出结果是( C )。 main() {int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%d\n",*p+9); } A) 0 B) 1 C) 10 D) 9 22.假定以下程序经编译和连接后生成可执行文件PROG . EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCD EFGH IJKL&回车&,则输出结果为( D )。 main( int argc, char *argv[ ]) {while(--argc&0) printf("%s", argv[argc]); printf("\n"); } 来源:考试大 A) ABCDEFGH B) IJHL C) ABCDEFGHIJKL D) IJKLEFGHABCD 23.对于基类型相同的两个指针变量之间,不能进行的运算是( C )。 A) & B) = C) + D) - 24.有以下函数: char * fun (char *p) {} 该函数的返回值是( B )。 A) 无确切的值 B) 形参p中存放的地址值 C) 一个临时存储单元的地址 D) 形参p自身的地址值 25.若有以下说明和定义 fun(int *C){…} main() {int (*a)()=fun,*b(),w[10],c; ┆ } 在必要的赋值之后,对fun函数的正确调用语句是( B )。 A) a=a(w); B) (*a)(&C); C) b=*b(w); D) fun (B); 26.有如下说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则数值为9的表达式是( B )。 A) *p+9 B) *(p+8) C) *p+=9 D) p+8 27.有如下程序: main() {char ch[2][5]={“6937”,“8254”},*p[2]; int i,j,s=0; for(i=0;i&2;i++) p[i]=ch[i]; for(i=0;i&2;i++) for(j=0;p[i][j]&‘\0’;j+=2) s=10*s+p[i][j]-‘0’; printf(“%d\n”,s); } 该程序的输出结果是( C )。 A) 69825 B 63825 C) 6385 D) 693825
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
28.若有以下定义和语句: char *s1=“12345”,*s2=“1234”; printf(“%d\n”, strlen(strcpy (s1, s2))); 则输出结果是( A )。 A) 4 B) 5 C) 9 D) 10 29.下面程序的输出结果是( C )。 main( ) {char *s=“121”; int k=0, a=0, b=0; do {k++; if(k%2= =0) {a=a+s[k]-‘0’;} b=b+s[k]-‘0’; a=a+s[k]-‘0’; } while(s[k+1]); printf(“k=%d a=%d b=%d\n”, k, a, B); } A) k=3 a=2 b=3 B) k=3 a=3 b=2 C) k=2 a=3 b=2 D) k=2 a=2 b=3 30.若有以下的定义: int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a; 则值为3的表达式是( A )。 A) p+=2,*(p++) B) p+=2,*++p C) p+=3,*p++ D) p+=2,++*p 31.以下程序的输出结果是( A )。 #include&stdio.h& sub1(char a, char B) { c=a; a=b; b=c;} sub2(char *a, char B) { c=*a; *a=b; b=c;} sub3(char *a, char *B) { c=*a; *a=*b; *b=c;} main() {char a, 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) BABBAB B) ABBBBA C) BABABA D) BAABBA 32.设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 * 则下列程序段的输出结果是( D )。 ptr= *(ptr+2)+=2; printf(“%d, %d\n”, *ptr, *(ptr+2)); A) 8,10 B) 6,8 C) 7,9 D) 6,10 34.以下程序的输出结果是( D )。 main() {char a[ ]=“programming”, b[ ]= “language”; char *p1, *p2; p1=a; p2=b; for(i=0; i&7; i++) if(*(p1+i)= =*(p2+i)) printf(“%c”, *(p1+i)); } A) gm B) rg C) or D) ga 35.以下程序运行后,输出结果是( C )。 main() {char *s=“abcde”; s+=2; printf(“%ld\n”, s); } A) cde B) 字符c的ASCII码值 C) 字符c的地址 D) 出错 36.以下程序运行后,如果从键盘上输入ABCDE&回车&,则输出结果为( D )。 #include&stdio.h& #include&string.h& func(char str[ ]) {int num=0; while(*(str+num)!=’\0’) num++; return(num); } main() {char str[10], *p= gets (p); printf(“%d\n”, func (p)); } A) 8 B) 7 C) 6 D) 5
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
37.以下程序执行后,a的值是( C )。 main() {int a, k=4, m=6, *p1=&k, *p2=&m; a=p1= =&m;(等于运算符==优先级高于赋值运算符=,即为a=(p1==&m)) printf(“%d\n”, a); } A) 4 B) 1 C) 0 D) 运行时出错,a无定值 38.以下程序运行后,如果从键盘上输入: book&回车& book&空格&&回车& 则输出结果是( B )。 #include&string.h& main() {char a1[80], a2[80], *s1=a1, *s2=a2; gets(s1); gets(s2); if(!strcmp(s1, s2)) printf(“*”); else printf(“#”); printf(“%d\n”, strlen(strcat(s1, s2))); } A) *8 B) #9 C) #6 D) *9 39.若有以下调用语句,则不正确的fun函数的首部是( D )。 main() { … int a[50], … fun (n, &a[9]); … } A) void fun(int m,int x[ ]) B) void fun(int s,int h[41]) 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[ ]) { if(argc&=0) for(i=1; i& i++) printf(“%c”, *argv[i]); } A) hello good B) hg C) hel D) hellogood 41.以下程序的输出结果是( D )。 main( ) {char s[ ]=”ABCD”, *p; for(p=s+1; p&s+4; p++) printf(“%s ”, p); } A) ABCD BCD CD D B) A B C D C) B C D D) BCD CD D 42.若已定义:int a[9], *p=a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C )。 A) p+1 B) a+1 C) a++ D) ++p 43.执行以下程序后,y的值是( C )。 main( ) {int a[ ]={2, 4, 6, 8, 10}; int y=1, x, *p; p=&a[1]; for(x=0;x&3;x++) y+=*(p+x); printf(“%d\n”, y); } A) 17 B) 18 C) 19 D) 20 44.下列程序的输出结果是( C )。 main( ) {int a[5]={2, 4, 6, 8, 10}, *p, **k; p=a; k=&p; printf(“%d ”, *(p++)); printf(“%d\n”, **k); } A) 4 4 B) 2 2 C) 2 4 D) 4 6 45.下列程序的输出结果是( D )。 #include&string.h& main( ) {char *p1,*p2,str[50]="xyz"; p1="abcd";p2="ABCD"; strcpy(str+2, strcat(p1+2,p2+1)); printf("%s",str); } A) xyabcAB B) abcABz C) ABabcz D) xycdBCD
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
46.设有以下定义: int a[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)+2 D) *(*(a+1)+2) 47.阅读程序: main( ) {int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p; p=a; printf("%x\n",p); printf("%x\n",p+9); } 该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是( D )。 A) 203 B) 204 C) 1a4 D) 1a6 48.以下程序的输出结果是( C )。 #include&string.h& #include&stdio.h& void fun(char *w, int m) {char s, *p1, *p2; p1=w; p2=w+m-1; while(p1&p2) {s=*p1++; *p1=*p2--; *p2=s;} } main( ) {char a[ ]="ABCDEFG"; fun(a, strlen(a)); puts(a); } A) GEFDCBA B) AGADAGA C) AGAAGAG D) GAGGAGA 49.以下程序的输出结果是( C )。 #include&stdio.h& void fun(int *s) {static int j=0; www.E do s[j]+=s[j+1]; while (++j&2); } main( ) {int k, a[10]={1, 2, 3, 4, 5}; for(k=1; k&3; k++) fun (a); for(k=0; k&5; k++) printf (“%d”, a[k]); } A) 34756 B) 23445 C) 35745 D) 12345 50.请读程序: #include&stdio.h& char fun(char *C) {if(*c&=‘Z’&&*c&=‘A’) *c-=‘A’-‘a’; return *c; } main( ) {char s[81], *p=s; gets (s); while(*p) {*p=fun(p); putchar(*p); p++;} putchar(‘\n’); } 若运行时从键盘上输入OPEN THE DOOR&回车&,则上面程序的输出结果为(B )。 A) oPEN tHE dOOR B) open the door C) OPEN THE DOOR D) Open The Door 51.以下程序的输出结果是( B )。 #include&string.h& main( ) {char *s1="AbCdEf",*s2="aB"; s1++;s2++; printf("%d\n",strcmp(s1, s2)); } A) 正数 B) 负数 C) 零 D) 不确定的值 52.下面各语句行中,能正确进行赋字符串操作的语句行是( C )。 A) char st[4][5]={“ABCDE”}; B) char s[5]={‘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, i=n1; j=n2; while(i&j) {t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; i++; j--; } } main( ) {int a[10]={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; i&10; i++) printf("%d ", *(a+i)); printf(“\n”); } A) 0 9 8 7 6 5 4 3 2 1 B) 4 3 2 1 0 9 8 7 6 5 C) 5 6 7 8 9 0 1 2 3 4 D) 0 9 8 7 6 5 1 2 3 4 54.下面函数的功能是( B )。 sss (char *s, char *t) {while((*s)&&(*t)&&(*t= =*s)) s++, t++; return(*s-*t); } A) 求字符串的长度 B) 比较两个字符串的大小 C) 将字符串s复制到字符串t中 D) 将字符串s连接到字符串t中
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
55.以下程序段给数组所有的元素输入数据,则以下正确答案为( A )。 main() {int a[10], i=0; while (i&10) scanf(“%d”, ); … } A) a+(i++) B) &a[i+1] C) a+i D) &a[++i] 56.在下列叙述中,正确的一条是( B )。 A) 语句int *pt中的*pt是指针变量名 B) 语句int *p=a;等价于int *p; p=&a[0]; C) 运算符*和&都是取变量地址的运算符 D) 已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值 57.下列语句执行后的结果是( A )。 y=5; p=&y; x=*p++; A) x=5,y=5 B) x=5,y=6 C) x=6, y=5 D) x=6, y=6 58.在下列语句中,其含义为“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 a[10]; for(i=0;i&10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i&10;i++) printf(“%d”,a[i]); } B) main() {int a[10]; for(i=0;i&10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i&10;i++) printf(“%d”,*(a+i)); } C) main() {int a[10]; int i, *p; for(i=0;i&10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(p=a;p&(a+10);p++) printf(“%d”,*p); } D) main() {int a[10]; int i, *p; for(i=0;i&10;i++) scanf(“%d”,&a[i]); printf(“\n”); for(i=0;i&10;i++) printf(“%d”,*(p+i)); } 61.以下程序的输出结果是( D )。 sub(int *s, int y) {static int t=3; y=s[t]; t--; } main() {int a[ ]={1, 2, 3, 4}, int x=4; for(n=0; n&4; n++) {sub(a, x); printf(“%d”, x); } printf(“\n”); } A) 1234 B) 3333 C) 4321 D) 4444 62.以下程序的输出结果为( B )。 #idefine FORMAT “%u, %u” main() {int a[3][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; printf(“\n”); printf(FORMAT, **a, *a[0]); printf(FORMAT, *(a[0]+1), *&a[0][1]); printf(FORMAT, a[1][1], *(*(a+1)+1)); } A) 3,3 5,5 9,9 B) 1,1 3,3 9,9 C) 1,1 3,3 5,5 D) 5,5 7,7 9,9 63.以下程序的输出结果为(D )。 f(char *s) {char *p=s; while(*p!=‘\0’) p++; return(p-s); } main() { printf(“%d\n”, f(“”)); } A) B) 7 C) 1 D) 8
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
64.以下程序的输出结果为( C )。 move(int array[6], int n, int m) {int *p, array_ array_end=*(array+n-1); for(p=array+n-1;p&p--) *p=*(p-1); *array=array_ m--; if(m&0) move (array, n, m); } main() {static int number[6]={1, 2, 3, 4, 5, 6}; int m=4, move(number, 6, m); for(j=0;j&5;j++) printf(“%d,”, number[i]); printf(“%d”, number[5]); } A) 1,2,3,4,5,6 B) 6,5,4,3,2,1 C) 3,4,5,6,1,2 D) 6,1,2,3,4,5 65.在下列叙述中,正确的一条是( B )。 A) 以下程序运行结果为Computer and c: main() {char str[4]; str=“Computer and c”; printf(“%s\n”, str); } B) 下面两种表示方式等价 (1) int fun(int x,int y) (2) int fun(x,y) int x,y; C) 若输入1、2,以下程序的运行结果为12 main() {int *p,i,a[2]; p=a; for(i=0;i&2;i++) scanf(“%d”,p++); for(i=0;i&2;i++,p++) printf(“%d”,*p); } D) 以下程序的运行结果为3 main() {int *p,a[5]={1,3,4,5,6}; p=a; printf(“%d”,*p++); } 66.以下程序的输出结果是( A )。 point(char *pt); main() {char b[4]={‘a’, ‘c’, ‘s’, ‘f’}, *pt=b; point(pt); printf(“%c\n”, *pt); } point(char *p) {p+=3; } A) a B) c www.E C) s D) f 67.以下程序的输出结果为( A )。 void move(int *pointer) {int i, j, for(i=0; i&3; i++) for(j=i; j&3; j++) {t=*(pointer+3*i+j); *(pointer+3*i+j)=*(pointer+3*j+i); *(pointer+3*j+i)=t; } } main() {int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p, p=&a[0][0]; move(p); for(i=0; i&3; i++) printf(“%d%d%d”, a[i][0], a[i][1], a[i][2]); } A) B) C) D) 68.以下程序的输出结果是( A )。 sub(int x, int y, int *z) {*z=y-x+2;} main() {int a, b, sub(16, 7, &a); sub(9, a, &B); sub(a, b, &C); printf(“%d, %d, %d\n”, a, b, C); } A) –7,-14,-5 B) –7,-16,-9 C) –7,-12,-9 D) –9,-14,-5 69.变量p为指针变量,若p=&a,下列说法不正确的是( D )。 A) &*p==&a B) *&a==a C) (*p)++==a++ D) *(p++)==a++ 70.若输入10,以下程序的输出结果是( B )。 #define MAX 50 main() {int i, k, m, n, num[MAX], *p; scanf(“%d”, &n); p= for(i=0; i&n; i++) *(p+i)=i+1; i=0; k=0; m=0; while(m&n-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(“%d\n”, *p); } A) 10 B) 4 C) 50 D) 60 71.以下程序的输出结果是( B )。 main() {char *alpha[5]={“a”, “bc”, “def”, “1”, “23”}, **p; p= for(i=0; i&3; i++, p++) printf(“%s”, *p); printf(“\t”); p=p-3; for(i=0; i&3; i++, p++) printf(“%c\t”,**p); } A) abcdef d e f B) abcdef a b d C) abcdef 1 23 D) defabc 1 23
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
二、填空题 1.下列程序的输出结果是 GDABC 。 #include&string.h& main( ) {char b[30],*chp; strcpy(&b[0],"GH"); strcpy(&b[1],"DEF"); strcpy(&b[2],"ABC"); printf("%s\n",B); } 2.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是 How does she 。 #include&string.h& main( ) {char strl[ ]="How do you do",*p1=strl; strcpy (strl+strlen(strl)/2,"es she"); printf("%s\n",pl); } 3.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。 a[0] a[1] a[2] a[3] a[4]
(1)若p已指向存储单元a[1]。通过指针p给s赋值,使s指向最后一个存储单元a[4]的语句是 s=p+3 。 (2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是 2 。 4.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。 #include&stdio.h& main() {char *p, s[6]; p=s; gets (p); n=*p-'0'; while( *(++p) !='\0') n=n*8+*p-'0'; printf("%d\n", n); } 5.设有以下程序: main() {int a, b, k=4, m=6, *p1=&k, *p2=&m; a=(pl= =&m); b=(*p1)/(*p2)+7; printf("a=%d\n", a); printf("b=%d\n", 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= p++; printf("%d\n", *(p+3)); } 8.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 *(p+5) 。 int w[10]={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 (b[n]){*(a+num)=b[n]; num++; n++ ;} return(num); } 10.函数void fun(float *sn,int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。 void fun(float *sn, int n) {float s=0.0, w, f= -1.0; int i=0; for(i=0; i&=n; i++) {f= -1 *f; w=f/ (2*i+1); s+=w; } *sn = } 11.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。 int add(int x,int y, int * z) { *z =x+y;} 12.以下fun函数的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。请填空。 fun(int b[ ],int n,int *x) {int k,r=0; for(k=0;k&n;k++) r= r+b[k] ; *x =r; } 13.以下函数的功能是:把两个整型指针变量所指的存储单元中的内容进行交换。请填空。 exchange(int *x,int *y) { t=*y; *y= *x ; *x= t ; } 14.以下程序的输出是 49 。 main() {int a[10]={19,23,44,17,37,28,49,36},*p; p=a; printf(“%d\n”,(p+=3)[3]); } 15.下面程序的输出结果是 024 。 #define MAX 3 int a[MAX]; main() {fun1();fun2(a);printf(“\n”);} fun1() {int k,t=0; for(k=0;k&MAX;k++,t++) a[k]=t+t; } fun2(int b[]) { for(k=0;k&MAX;k++) printf(“%d”,*(b+k)); }
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
16.下面程序的输出结果是 ABCDCD 。 char b[]=“ABCD”; main() {char * for(chp=b; * chp+=2) printf(“%s”, chp); printf(“\n”); } 17.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 #include&stdio.h& main() {char str[81],* for(i=0;i&80;i++) {str[i]=getchar(); if(str[i]==‘\n’) } str[i]= '\0' ; sptr= while(*sptr) putchar( *sptr++ ); } 18.fun1函数的调用语句为:fun1(&a,&b,&C);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。 void fun2(int *x, int *y) { t=*x; *x=*y; *y=t; } void fun1(int *pa,int *pb,int *pC) {if(*pc&*pB) fun2( pc,pb ); if(*pa&*pC) fun2( pa,pb ); if(*pa&*pB) fun2( pa,pc ); } 19.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。 void fun(char *w,char x,int *n) {int i,p; p=0; w[*n]=x; while(x&w[p]) p++ ; for(i=*n;i&p;i--) w[i]= w[i-1] ; w[p]=x; ++*n; } 20.阅读程序: main() {char str1[]=“how do you do”, str2[10]; char *p1=str1, *p2=str2; scanf(“%s”, p2); printf(“%s ”, p2); printf(“%s\n”, p1); } 运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you do 。 21.下面程序的输出结果是 SO 。 main() {char *p[]={“BOOL”, “OPK”, “H”, “SP”}; for(i=3;i&=0;i--,i--) printf(“%c”,*p[i]); printf(“\n”); } 22.下面程序的输出结果是 17 。 funa(int a,int B) {return a+b;} funb(int a,int B) {return a-b;} sub(int(*t)(),int x,int y) {return((*t)(x,y));} main() {int x,(*p)(); p= x=sub(p,9,3); x+=sub(funb,8,3); printf(“%d\n”, x); } 23.下面程序的输出结果是 XYZA 。 #include&stdio.h& void fun(char *a1,char *a2,int n) { for(k=0;k&n;k++) a2[k]=(a1[k]-‘A’-3+26)%26+‘A’; a2[n]=‘\0’; } main() {char s1[5]=“ABCD”, s2[5]; fun (s1, s2, 4); puts(s2); } 24.下面程序的输出结果是 7 1 。 void as(int x,int y,int *cp,int *dp) {*cp=x+y; *dp=x-y; } main() {int a=4,b=3,c,d; as(a,b,&c,&D); printf(“%d %d\n”,c,D); } 25.下面程序的输出结果是 eybdooG 。 #include&stdio.h& main() {static char b[]=“Goodbye”; char *chp=&b[7]; while(--chp&=&b[0]) putchar(*chp); putchar(‘\n’); } 26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。 #include&string.h& #define MAXLINE 20 main() { char *pstr[3],str[3][MAXLINE]; for(i=0;i&3;i++) pstr[i]=str[i]; for(i=0;i&3;i++) scanf(“%s”,pstr[i]); sort(pstr); for(i=0;i&3;i++) printf(“%s\n”,pstr[i]); } sort( char *pstr [3] ) {int i,j; char *p; for(i=0;i&3;i++) {for(j=i+1;j&3;j++) {if(strcmp(*(pstr+i),*(pstr+j))&0) {p=*(pstr+i); *(pstr+i)= *(patr+j) ; *(pstr+j)=p; } } } } 27.以下程序利用指针法将两个数按从小到大的顺序输出来。 main() {int a,b, *p1,*p2 , p ; printf(“input a, b:”); scanf(“%d%d”, &a,&B); p1=&a ; p2=&b; if(a&B) {p=p1; p1=p2; p2=p;} printf(“a=%d b=%d\n”,a,B); printf(“max=%d min=%d\n”, *p1,*p2 ); } 28.以下程序的输出结果是 8 。 fun(int n,int *s) {int f1,f2; if(n==1||n==2) *s=1; else {fun(n-1,&f1); fun(n-2,&f2); *s=f1+f2; } } main() { fun(6,&x); printf(“%d\n”,x); } 29.下面的程序通过函数average计算数组中各元素的平均值,请填空。 float average(int *pa,int n) { float avg=0.0; for(i=0;i&n;i++) avg=avg+ *(pa+i) ; avg= avg/n ; } main() {int i,a[5]={2,4,6,8,10}; mean=average(a,5); printf(“mean=%f\n”,mean); } 30.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。 #include&stdio.h& void replace(char *s1,char *s2,char *str1,char *str2) {char *t0,*t1,*t2; while( *s1 ) {for(t0=s1,t1=str1;(*t1!=‘\0’&& *t0=*t1 );t0++,t1++); if(*t1!=‘\0’) *s2++ = *s1++ ; else {for(t1=str2;*t1!=‘\0’;) *s2++ = *t1++ ; s1=t0 ; } } *s2=‘\0’; } main() {static char s1[]=“abcef ababcd abab.”, s2[25]; replace (s1, s2, “abc”, “XYZ”); printf(“%s\n”, s2); } 31.以下语句的输出结果是 hELLO! 。 char s[80],*sp=“HELLO!”; sp=strcpy (s, sp); s[0]=‘h’; puts(s);
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
:5:5:7:027-:6::5:1::1
:0:9:029-:::2::025-::2
:::5:8::8::::
::::::::::010-
:5:::023-:5::::22:50}