二级C语言教程章节测试10.docx
《二级C语言教程章节测试10.docx》由会员分享,可在线阅读,更多相关《二级C语言教程章节测试10.docx(40页珍藏版)》请在冰豆网上搜索。
二级C语言教程章节测试10
二级C语言教程章节测试10.字符串
一、选择题
(1)若有语句:
char *line[5];,以下叙述中正确的是
A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
(2)有以下程序
#include
main()
{char p[]={'a','b','c'}, q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是
A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D)由于p和q数组中都没有字符串结束符,故长度都不能确定
(3)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序
#include
voidf(char *p[],int n)
{char *t; int i,j;
for(i=0;i
for(j=i+1;j
if(strcmp(p[i],p[j])>0){t=p[i]; p[i]=p[j]; p[j]=t; }
}
main()
{char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[1]));
}
程序运行后的输出结果是
A)2 B)3 C)6 D)4
(4)有定义语句:
int b;char c[10]; ,则正确的输入语句是_____
A)scanf("%d%s",&b,&c);
B)scanf("%d%s",&b,c);
C)scanf("%d%s",b,c);
D)scanf("%d%s",b,&c);
(5)以下能正确定义一维数组的选项是_____
A)int a[5]={0,1,2,3,4,5};
B)char a[]={0,1,2,3,4,5};
C)char a={'A','B','C'};
D)int a[5]="0123";
(6)已有定义:
chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是_____
A)数组a和b的长度相同
B)a数组长度小于b数组长度
C)a数组长度大于b数组长度
D)上述说法都不对
(7)以下语句或语句组中,能正确进行字符串赋值的是
A)char *sp; *sp="right!
";
B)chars[10]; s="right!
";
C)char s[10]; *s="right!
";
D)char *sp="right!
";
(8)有以下程序
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
程序运行后的输出结果是
A)15
B)16
C)12
D)59
(9)有以下函数
fun(char *a,char *b)
{
while((*a!
='\0')&&(*b!
='\0')&&(*a==*b))
{ a++; b++;}
return (*a-*b);
}
该函数的功能是
A)计算a和b所指字符串的长度之差
B)将b所指字符串复制到a所指字符串中
C)将b所指字符串连接到a所指字符串后面
D)比较a和b所指字符串的大小
(10)有以下程序
point(char *p)
{
p+=3;
}
main()
{ char b[4]={'a','b','c','d'},*p=b;
point(p); printf("%c\n",*p);
}
程序运行后的输出结果是
A)a
B)b
C)c
D)d
(11)s12和s2已正确定义并分别指向两个字符串。
若要求:
当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是_____
A)if(s1>s2)S; B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1)>0)S; D)if(strcmp(s1,s2)>0)S;
(12)有以下程序
main()
{charstr[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
程序运行后的输出结果是
A)China B)Bejing C)ng D)ing
(13)有以下程序
main()
{chars[]="ABCD",*p;
for(p=s+1;p
}
程序运行后的输出结果是
A)ABCD B)A C)B D)BCD
BCD B C CD
CD C D D
D D
(14)有以下程序
main()
{chars[]"Yes\n/No",*ps=s;
puts(ps+4);
*(ps+4)=0;
puts(s);
}
程序运行后的输出结果是(选项D中的第一行是空行)
A)n/No B)/No C)n/NO D)
Yes Yes Yes /No
/No /No Yes
(15)有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是
A)gets(A) B)gets(a[0]) C)gets(&a[0]); D)gets(B);
(16)有以下程序
main()
{char*p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
printf(“%d\n”,strlen(p[4]));
}
执行后输出结果是
A)2 B)3 C)4 D)5
(17)以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是
A)chars[10]=”abcdefg”; B)chart[]=”abcdefg”,*s=t;
C)chars[10];s=”abcdefg”; D)chars[10];strcpy(s,”abcdefg”);
(18)下列选项中正确的语句组是
A)char s[8]; s={"Beijing"}; B)char *s; s={"Beijing"};
C)char s[8]; s="Beijing"; D)char *s; s="Beijing";
(19)以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址
#include
#include
char *scmp(char *s1, char *s2)
{ if(strcmp(s1,s2<0)
return(s1);
else return(s2);
}
main()
{ int I; char string[20], str[3][20];
for(i=0;i<3;i++) gets(str[i]);
strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
运行时依次输入:
abcd、abba和abc三个字符串,则输出结果为
A)abcd B)abba C)abc D)abca
(20)有以下程序
#include
main()
{char str[][20]={"Hello","Beijing"},*p=str;
printf("%d\n",strlin(p+20));
}
程序运行后的输出结果是
A)0 B)5 C)7 D)20
(21)已定义以下函数
fun(char *p2, char *p1)
{ while((*p2=*p1)!
=‘\0’){p1++;p2++;} }
函数的功能是
A)将p1所指字符串复制到p2所指内存空间
B)将p1所指字符串的地址赋给指针p2
C)对p1和p2两个指针所指字符串进行比较
D)检查p1和p2两个指针所指字符串中是否有‘\0’
(22)有以下程序
main()
{ char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是
A)n,two B)t,one C)w,one D)o,two
(23)阅读以下函数
fun(char *s1,char *s2)
{ int i=0;
while(s1[i]==s2[i]&&s2[i]!
=‘\0’)i++;
return(s1[i]==&&s2{i}!
==‘\0’);
}
此函数的功能是
A)将s2所指字符串赋给s1
B)比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0
C)比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0
D)比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0
(24)有以下程序
main()
{ char str[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--) puts(ps);
}
执行后的输出结果是
A)yz B)z C)z D)x
xyz yz yz xy
xyz xyz
(25)有以下程序
#include
main()
{char*p=“abcde\Ofghjik\0”;
printf(“%d\n”,strlen(p));
}
程序运行后的输出结果是
A)12 B)15 C)6 D)5
(26)有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-‘a’+’A’;
s++;
}
}
main()
{charstr1[100]=“abcddfefdbd”,c=’d’;
ss(str1,c); printf(“%s\n”,str1);
}
程序运行后的输出结果是
A)ABCDDEFEDBD B)abcDDfefDbD
C)abcAAfefAbA D)Abcddfefdbd
(27)以下程序的输出结果是
char cchar(char ch)
{
if(ch>=‘A’&&ch<=‘Z') ch=ch-‘A'+‘a';
return ch;
}
main()
{ char s[]="ABC+abc=defDEF",*p=s;
while(*p)
{*p=cchar(*p);
p++;
}
printf("%s\n",s);
}
A)abc+ABC=DEFdef B)abc+abc=defdef
C)abcaABCDEFdef D)abcabcdefdef
(28)以下程序段的输出结果是
char s[]="\\141\141abc\t";
printf ("%d\n",strlen(s));
A)9 B)12 C)13 D)14
(29)以下程序的输出结果是
main()
{ char cf[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A)"AAAA" B)"BBB" C)"BBBCC" D)"CC"
(30)以下程序的输出结果是
#include
#include
main()
{ char b1[8]="abcdefg",b2[8],*pb=b1+3;
while(--pb>=b1) strcpy(b2,pb);
printf("%d\n",strlen(b2));
}
A)8 B)3 C)1 D)7
(31)以下定义语句中,错误的是
A)int a[]={1,2}; B)char *a[3];
C)chars[10]=”test”; D)int n=5,a[n];
(32)以下选项中,不能正确赋值的是
A)char s1[10];s1=“Ctest”;
B)char s2[]={‘C’,‘t’,‘e’,‘s’,‘t’};
C)char s3[20]=“Ctest”;
D)char *s4=“Ctest\n”
(33)以下程序的输出结果是
A)ABCD B)ABCD C)EFG D)EFGH
FGH EFG JK IJKL
KL IJ O
M
main()
{char w[][10]={“ABCD”,”EFGH”,”IJKL”,”MNOP”},k;
for(k=1;k<3;k++) printf(“%s\n”,w[k]);
}
(34)当执行下面的程序时,如果输入ABC,则输出结果是
A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789
#include “stdio.h”
#include “string.h”
main()
{char ss[10]=“1,2,3,4,5”;
gets(ss);strcat(ss,“6789”); printf(“%s\n”,ss);
}
(35)有如下程序
main()
{ char s[]=”ABCD”, *P;
for(p=s+l;p
}
该程序的输出结果是
A)ABCD B)A C)B D)BCD
BCD B C CD
CD C D D
D D
(36)有如下程序
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);
}
该程序的输出结果是
A)69825 B)63825 C)6385 D)693825
(37)设有数组定义:
chararray[]="China";则数组array所占的空间为
A)4个字节 B)5个字节 C)6个字节 D)7个字节
(38)设已有定义:
char*st="howareyou";下列程序段中正确的是
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);
(39)下列程序执行后的输出结果是
A)you&ne B)you C)me D)err
mai()
{char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
(40)执行下列程序时输入:
123<空格>456<空格>789<回车>,输出结果是
A)123,456,789 B)1,456,789
C)1,23,456,789 D)1,23,456
main()
{ char s[100]; int c,i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
}转贴于:
计算机等级考试_考试大
(41)下列描述中不正确的是
A)字符型数组中可以存放字符串
B)可以对字符型数组进行整体输入、输出
C)可以对整型数组进行整体输入、输出
D)不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值
(42)以下程序的输出结果是
A)123456780 B)123 456 780 C)12345678 D)147
main( )
{ char ch[3][4]={"123","456","78"},*p[3]; int i;
for(i=0;i<3;i++) p[i]=ch[i];
for(i=0;i<3;i++) printf("%s",p[i]);
}
(43)以下程序的输出结果是
A)4211