2013年计算机二级考试C语言第十章课后题及参考答案
第十章 字符串
一、选择题
10.1 以下能正确进行字符串赋值,赋初值的语句是
A) char
s[5]={\’\’a\’\’,\’\’e\’\’,\’\’i\’\’,\’\’o\’\’,\’\’u\’\’};
B) char *s; s="good!";
C) char s[5]="good!";
D) char s[5]; s="good!";
答案: B
10.2 以下程序段的输出结果是
A) 68
B) 0
C) 字符D的地址
D) 不确定的值
char str[]="ABCD",*p=str;
printf("%d\\n",*(p+4));
答案: B
10.3 以下程序段的输出结果是
A) 11
B) 10
C) 9
D) 8
printf("%d\\n",strlen("ATS\\n012\\1\\\\"));
答案: C
10.4 当运行以下程序时输入OPEN T H E DOOR<CR>(此处<CR>代表Enter键),则输出结果是
A) oPEN tHE dOOR
B) open the door
C) OPEN T H E DOOR
D) Open The Door
#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\’\’);
}
答案: B
10.5 以下程序的输出结果是
A)GFEDCBA
B) AGADAGA
C) AGAAGAG
D) GAGGAGA
#include "stdio.h"
#include "string.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);
}
答案: C
计算机二级C语言章节练习在线测试 | ||
第10章 | 字符串 |
10.6 以下程序的输出结果是
A) ABCD
B) A
C) D
D) ABCD
BCD B C ABC
CD C B AB
D D A A
main()
{ char s[]="ABCD",*p;
for(p=s; p<s+4; p++) printf("%s\\n",p);
}
答案: A
10.7 设有如下定义:
char *aa[2]={"abcd","ABCD"};
则以下说法中正确的是
A) aa数组元素的值分别是"abcd"和"ABCD"
B) aa是指针变量,它指向含有两个数组元素的字符型一维数组
C) aa数组的两个元素分别存放的是含有四个字符的一维数组的首地址
D) aa数组的两个元素中各自存放了字符\’\’a\’\’和\’\’A\’\’的地址
答案: C
10.8 以下程序的输出结果是
A) 6385
B) 69825
C) 63825
D) 693825
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\’\’&&p[i][j]<=\’\’9\’\’; j+=2)
s=10*s+p[i][j]-\’\’0\’\’;
printf("%d\\n",s);
}
答案: A
10.9 以下程序的输出结果是
A) ABCDEFGHIJKL
B) ABCD
C) ABCDEFGHIJKLMNOP
D) AELM
main()
{ char
*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};
char **p;
int i;
p=alpha;
for(i=0; i<4; i++) printf("%s",p[i]);
printf("\\n");
}
答案: C
10.10 库函数strcpy用以复制字符串。若有以下定义和语句:
char str1[]="string",str2[8],*str3,*str4="string";
则对库函数strcpy的不正确调用是
A) strcpy(str1,"HELLO1");B) strcpy(str2,"HELLO2");
C) strcpy(str3,"HELLO3");D) strcpy(str4,"HELLO4");
答案: C
计算机二级C语言章节练习在线测试 | ||
第10章 | 字符串 |
二、填空题
10.11 以下程序的输出结果是____。
#include "stdio.h"
main()
{ char b[]="ABCDEFG",*chp=&b[7];
while(--chp>&b[0]) putchar(*chp);
putchar(\’\’\\n\’\’);
}
答案: GFEDCB
10.12 以下程序的输出结果是_____。
#include "stdio.h"
void fun(char *a1,char *a2,int n)
{ int k;
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);
}
答案:XYZA
10.13 以下程序的输出结果是____。
main()
{ char *p[]={"BOOL","OPK","H","SP"};
int i;
for(i=3; i>0; i--,i--) printf("%c",*p[i]);
printf("\\n");
}
答案:SO
10.14 当运行以下程序时从键盘输入字符串qwerty和abcd,则程序的输出结果是____。
#include "string.h"
#include "stdio.h"
strle(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);
}
main()
{ char str1[81],str2[81],*p1=str1,*p2=str2;
gets(p1); gets(p2);
printf("%d\\n",strle(p1,p2));
}
答案:10
10.15 以下程序的输出结果是____。
#include "string.h"
#include "ctype.h"
void fun(char str[])
{ int i,j;
for(i=0,j=0; str[i]; i++)
if(isalpha(str[i])) str[j++]=str[i];
str[j]=\’\’\\0\’\’;
}
main()
{ char ss[80]="It is!";
fun(ss);
printf("%s\\n",ss);
}
答案:Itiss!
10.16 以下fun函数的功能是将一个字符串的内容颠倒过来,请填空。
#include "string.h"
void fun(char str[])
{ int i,j,k;
for(i=0,j=____; i<j; i++,____)
{ k=str[i]; str[i]=str[j]; str[j]=k; }
}
答案:strlen(str)-1j--
10.17 以下程序段的输出结果是_____。
printf("%d\\n",strlen("s\\n\\0160end"));
答案:3
10.18 以下程序段的输出结果是_____。
char s[20]="goodgood!",*sp=s;
sp=sp+2;
sp="to";
puts(s);
答案:goodgood!
计算机二级C语言章节练习在线测试 | ||
第10章 | 字符串 |