二级C语言辅导班冲刺课程第四节课.docx
《二级C语言辅导班冲刺课程第四节课.docx》由会员分享,可在线阅读,更多相关《二级C语言辅导班冲刺课程第四节课.docx(16页珍藏版)》请在冰豆网上搜索。
![二级C语言辅导班冲刺课程第四节课.docx](https://file1.bdocx.com/fileroot1/2022-12/12/ea4a14e4-af03-4a12-9ebb-a13121aa10d2/ea4a14e4-af03-4a12-9ebb-a13121aa10d21.gif)
二级C语言辅导班冲刺课程第四节课
第九、十章字符串
第九章(难点)
考点:
二维数组的定义、初始化、双层循环赋值,对二维数组的理解,行指针、列指针,指针数组,指向一维数组的指针变量,参数传递
第十章
考点:
字符串的赋值,用%s输入输出时需注意的地方,字符串函数
注意:
结合指针、数组考试
(2012年9月份)下列叙述中正确的是
A.可以用关系运算符比较字符串的大小
B.空字符串不占用内存,其内存空间大小是0
C.两个连续的单引号是合法的字符常量
D.两个连续的双引号是合法的字符串常量
(2012年9月份)设有定义:
intx[2][3],则以下关于二维数组x的叙述错误的是
A.x[0]可看作是由3个整型元素组成的一维数组
B.x[0]和x[1]是数组名,分别代表不同的地址常量
C.数组x包含6个元素
D.可以用语句x[0]=0;为数组所有元素赋初值0
(2012年9月份)以下选项中,合法的是
A.charstr3[]={'d','e','b','u','g','\0'};
B.charstr4;str4="helloworld";
C.charname[10];name="china";
D.charstr1[5]="pass",str2[6];str2=str1;
1.以下选项中有语法错误的是(2012年3月份)
A.char*str[]={“guest”};B.charstr[][10]={“guest”};
C.chsr*str[3];str[1]=”guest”;D.charstr[3][10];str[1]=”guest”;
2.有以下程序(2012年3月份)
#include
#include
main()
{printf(“%d\n”,strlen(“ATS\n012\|”));}
程序运行后的输出结果是
A.3B.8C.4D.9
(2012年9月份)若有定义语句:
charstr[]="0";则字符串str在内存中实际占__字节.
3、若有语句:
char*line[5];下列叙述中正确的是()。
A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量
B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C)定义line是一个指针数组,语句中的*号称为间址运算符
D)定义line是一个指向字符型函数的指针
4、以下程序的输出结果是___(2012年3月份)
#include
main()
{char*ch[4]={“red”,”green”,”blue”};
inti=0;
while(ch[i])
{
putchar(ch[i][0]);
i++;
}
}
5、以下程序:
#include
main()
{charstr[10];
scanf("%s",str);
printf("%s\n",str);
}
运行上面的程序,输入字符串howareyou,则程序的执行结果是()。
A)how
B)howareyou
C)h
D)howareyou
6、有以下程序(2012年3月份)
#include
main()
{chara[20],b[20],c[20];
scanf(“%s%s”,a,b);
gets(c);
printf(“%s%s%s\n”,a,b,c);}
程序运行时从第一列开始输入Thisisacat!
<回车>则输出结果是
A.Thisisacat!
B.ThisisaC.Thisisacat!
D.Thisisacat!
7、下面各语句行中,能正确进行赋值字符串操作的是()。
A)chars[5]={'a','b','c','d','e'};
B)char*s;gets(s);
C)char*s;s="ABCDEF";
D)chars[5];scanf("%s",&s);
8、下面程序的输出结果是()。
#include
main()
{chara[]={'a','b','c','d','f ','g'},*p;
p=a;
printf("%c\n",*p+4);
}
A)a
B)b
C)e
D)f
9、下面函数的功能是()。
sss(s,t)
char*s,*t;
{while(*s)s++;
while(*t)
*(s++)=*(t++);
returns;
}
A)将字符串s复制到字符串t中
B)比较两个字符串的大小
C)求字符串的长度
D)将字符串t续接到字符串s中
(2012年9月份)
有以下程序(strcpy为字符串赋值函数,strcat为字符串连接函数)
#include
#include
main()
{
chara[10]="abc",b[10]="012",c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c+1));
}
程序运行后的输出结果是
A.a12xyzB.12yzC.a2yzD.BC2YZ
10、设q1和q2是指向一个int型一维数组的指针变量,k为float型变量,下列不能正确执行的语句是()。
A)k=*q1*(*q2);
B)q1=k;
C)q1=q2;
D)k=*q1+*q2;
11、以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。
请填空。
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
printf("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i{x=ar[i][0];
for(j=0;jif(___________)
x=ar[i][j];
br[i]=x;
}
}
12、下面程序的运行结果是___________。
#include
#defineSIZE12
main()
{chars[SIZE];inti;
for(i=0;isub(s,5,SIZE-1);
for(i=0;iprintf("\n");
}
sub(char*a,intt1,intt2)
{charch;
while(t1{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
}
}
13、下面程序的运行结果是___________。
#include
main()
{chara[80],*p="AbabCDcd";
inti=0,j=0;
while(*p!
='\0')
{if(*p>='a'&&*p<='z'){a[i]=*p;i++;}
p++;
}
a[i]='\0';
puts(a);
}
14、“printf("%d\n",strlen("\t\"\023\xAB\nC"));”语句的输出结果是___________。
15、以下程序:
#include
main()
{
charChr[20];
scanf("%s",Chr);
printf("%s\n",Chr);
}
运行上面的程序,输入字符串MicrosoftVisualStudio,则程序的执行结果是()。
A)MicrosoftVisualStudio
B)M
C)Microsoft
D)MicrosoftVisualStudio
16、以下程序段的输出结果是()。
#include
main()
{charp[][4]={"ABC","DEF","GHI"};
inti;
for(i=0;i<3;i++)
puts(p[i]);
}
A)A
B
C
B)ADG
C)ABC
DEF
GHI
D)ABC
17、以下程序:
#include
#include
main()
{char*s1="abDuj";
Char*s2="ABdUG";
intt;
t=strcmp(s1,s2);
printf("%d",t);
}
A)正数
B)负数
C)零
D)不确定的值
18、以下程序:
#include
#include
main()
{charstr[]="abcd\n\123\xab";
printf("%d",strlen(str));
}
运行后的输出结果是()。
A)10
B)9
C)7
D)14
19、设已执行预编译命令#include,以下程序段的输出结果是()。
chars[]="abcdefg";
printf("%d\n",strlen(s));
A)7
B)8
C)9
D)10
20、若有chars[3][3]={"AAA","BBB","CCC"};说明语句,则与它等价的语句是()。
A)char**s={"AAA","BBB","CCC"};
B)char*s[3]={"AAA","BBB","CCC"};
C)chars[][5]={"AAA","BBB","CCC"};
D)chars[][3]={"AAA","BBB","CCC"};
21、当运行以下程序时,输入abcd,程序的输出结果是___________。
insert(charstr[])
{inti;
i=strlen(str);
while(i>0)
{str[2*i]=str[i];str[2*i-1]='*';i--;}
printf("%s\n",str);
}
main()
{charstr[40];
scanf("%s\n",str);insert(str);
}
22、以下程序的功能是:
通过函数func输入字符并统计输入字符的个数。
输入时用字符@作为输入结束标志。
请填空。
#include
long___________;/*函数说明语句*/
main()
{longn;
n=func();printf("n=%ld\n",n);
}
longfunc()
{longm;
for(m=0;getchar()!
='@';__);
returnm;
}
23、下面函数的功能是()。
sss(s,t)
char*s,*t;
{while((*s)&&(*t)&&(*t++==*s++));
return(*s-*t);
}
A)将字符串s复制到字符串t中
B)比较两个字符串的大小
C)求字符串的长度
D)将字符串s接续到字符串t中
24、有以下程序
#include
#include"string.h"
voidfun(char*s[],intn)
{
char*t;inti,j;
for(i=0;ifor(j=i+1;jif(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}
}
main()
{
char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);
}
程序的运行结果是()。
A)xy,aaaacc
B)aaaacc,xy
C)bcc,aabcc
D)aabcc,bcc
25、以下程序运行后的输出结果是___________。
#include
main()
{charch[]="abcd",x[4][4];inti;
for(i=0;i<4;i++)strcpy(x[i],ch);
for(i=0;i<4;i++)printf("%s",&x[i][i]);
printf("\n");
}
26、下面程序是求出数组arr的两条对角线上的元素之和,请填空。
#include"stdio.h"
main()
{
intarr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j)
a=a+arr[i][j];
for(i=0;i<3;i++)
for(;j>=0;j--)
if(==2)
b=b+arr[i][j];
printf("%d,%d\n",a,b);
}
27、以下程序输出的结果是()。
#include
#include
main()
{chara[][7]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",&a[k][k]);
}
A)ABCD
FGH
KL
M
B)ABC
EFG
IJ
C)EFG
JK
OP
D)FGH
KL
28、下列程序的功能是:
求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3,请填空。
#include
#include
#defineM81
intfun(char*ss,charc)
{inti=0;
for(;___________;ss++)
if(*ss==c)i++;
returni;}
main()
{chara[M],ch;
printf("\nPleaseenterastring:
");gets(a);
printf("\nPleaseenterachar:
");ch=getchar();
printf("\nThenumberofthecharis:
%d\n",fun(a,ch));}
29、以下程序的输出结果是___________。
main()
{char*p[]={"ABC","DEF","GHI","JKL"};
inti;
for(i=3;i>=0;i--,i--)
printf("%c",*p[i]);}
30、语句int(*ptr)()的含义是()。
A)ptr是一个返回值是int的函数
B)ptr是指向int型数据的指针变量
C)ptr是指向函数的指针,该函数返回一个int型数据
D)ptr是一个函数名,该函数的返回值是指向int型数据的指针
31、下列字符数组初始化语句中,不正确的是()。
A)charc[]='goodmorning';
B)charc[20]="goodmorning";
C)charc[]={'a','b','c','d'};
D)charc[]={"goodmorning"};
32、下列程序的运行结果为()。
#include
voidabc(char*str)
{inta,b,i,j;
for(i=j=0;str[i]!
='\0';i++)
if(str[i]!
='a')
str[j++]=str[i];
str[j]='\0';
}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);
}
A)str[]=bcdef
B)str[]=abcdef
C)str[]=a
D)str[]=ab
33、阅读下面程序,程序执行后的结果为()。
#include"stdio.h"
main()
{char*str="abcdefghijklmnopq";
while(*str++!
='e');
printf("%c\n",*str);
}
A)f
B)a
C)e
D)q
34、设有如下的程序段:
charstr[]="HelloWorld";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+10)的值为()。
A)'\0'
B)'0'
C)不确定的值
D)'0'的地址
35、下述语句中,在字符串s1和s2相等时显示“theyareEqual”的是()。
A)if(*s1==*s2)
puts("theyareEqual");
B)if(!
strcmp(s1,s2))
puts("theyareEqual");
C)if(s1==s2)
Puts("theyareEqual");
D)if(strcmp(s1,s2))
puts("theyareEqual");
36、下面程序的输出结果是___________。
#include
main()
{staticchara[]="zhao",b[]="juan";
char*ptrl=a,*ptr2=b;
intk;
for(k=0;k<4;k++)
if(*(ptrl+k)==*(ptr2+k))
printf("%c",*(ptrl+k));}
37、下列函数从字符数组s[]中删除和c一样的字符,请在下面横线处填空。
voiddelete(s,c)
chars[],c;
{inti,j;
for(i=j=0;___________;i++)
if(s[i]!
='c')
s[j++]=s[i];
s[j]="\0";}
38、下面程序的运行结果是___________。
#include
main()
{chara[80],*p="AbabCDcd";
inti=0,j=0;
while(*p!
='\0')
{if(*p>='a'&&*p<='z')
{a[i]=*p;i++;}
}
a[i]='\0';
puts(a);
}
39、设有下列程序:
#include
#include
main()
{inti;
chars[10],t[10];
gets(t);
for(i=0;i<2;i++)
{gets(s);
if(strcmp(t,s)<0)
strcpy(t,s);
}
printf("%s\n",t);
}
程序运行后,从键盘上输入(代表回车符):
CDEFBADEFQTHRG,则程序的输出结果是___________。
40、下面程序的运行结果是___________。
#defineP(a)printf("%d",a)
main()
{intj,a[]={1,2,3,4,5,6,7},i=5;
for(j=3;j>1;j--)
{switch(j)
{case1:
case2:
P(a[i++]);break;
case3:
P(a[--i]);
}
}
}