指针字符串练习题及答案Word下载.docx
《指针字符串练习题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《指针字符串练习题及答案Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
![指针字符串练习题及答案Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/6/4c46e7dd-009e-4462-a4a2-9ed8a7b4ba12/4c46e7dd-009e-4462-a4a2-9ed8a7b4ba121.gif)
4165
阅读下面程序,程序执行后的结果为().
#include"
stdio.h"
{char*str="
abcdefghijklmnopq"
;
while(*str++!
='
e'
);
printf("
%c\n"
*str);
A、f
B、q
C、e
D、a
A
4167
关于指针概念说法不正确的是().
A、指针变量可以由整数赋,不能用浮点赋
B、只有同一类型变量的地址才能放到指向该类型变量的指针变量之中,
C、一个指针变量只能指向同一类型变量
D、一个变量的地址称为该变量的指针
4173
设有以下定义:
intw[2][3],(*pw)[3];
pw=w;
则对w数组元素非法引用是().
A、pw[0][0]
B、*(pw[1]+2)
C、*(pw+1)[2]
D、*(w[0]+2)
C
4532
若有定义:
chars[3][10],*k[3],*p;
则以下赋值语句正确的是().
A、k=s;
B、p=k;
C、p=s;
D、p=s[0];
4174
当运行以下程序时输入OPENTHEDOOR<
CR>
则输出结果是
#include<
stdio.h>
charfun(char*c)
{if(*c<
Z'
&
&
*c>
A'
)
*c-='
-'
a'
return*c;
{chars[8],*p=s;
gets(s);
while(*p)
{*p=fun(p);
putcahr(*p);
p++;
putchar('
\n'
A、OpenTheDoor
B、OPENTHEDOOR
C、openthedoor
D、oPENtHEdOOR
4175
下列程序执行后的输出结果是().
voidfunc(int*a,intb[])
{b[0]=*a+6;
{inta,b[5]={0};
a=0;
b[0]=3;
func(&
a,b);
%d\n"
b[0]);
A、8
B、9
C、7
D、6
4390
已知有声明"
chara[]="
prongram"
*p=a+1;
"
则执行以下语句不会输出字符a的是()o
A、putchar(*p+4);
B、putchar(*(p+4));
C、putchar(a[sizeof(a)-3]);
D、putchar(*(a+5));
4181
定义语句int*swap();
指的是
A、其他说法都不对
B、swap是一个返回指向整型值指针的函数
C、swap是一个返回整型值的函数
D、swap是一个指向函数的指针
4184
有以下程序:
voidswap(char*x,char*y)
{chart;
t=*x;
*x=*y;
*y=t;
{char*s1="
abc"
*s2="
123"
swap(s1,s2);
%s,%s\n"
s1,s2);
程序执行后的输出结果是().
A、1bc,a23
B、123,abc
C、321,cba
D、abc,123
4211
若有inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
则输出结果不为5
的语句为().
A、printf("
p[5]);
B、printf("
*p[5]);
C、printf("
*(a+5));
D、printf("
*(p+5));
4215
voidfun(int*a,inti,intj)
{intt;
if(i<
j)
{t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
{inta[]={1,2,3,4,5,6},i;
fun(a,0,5);
6;
i++)
a[i]);
执行后输出结果是().
A、654321
B、214365
C、324156
D、123456
4113
以下程序运行后的输出结果是().
main(){charch[]="
uvwxyz"
*pc;
pc=ch;
*(pc+5));
A、字符y的地址
B、0
C、元素ch[5]地址
D、z
4695
有以下程序
{inta[]={1,2,3,4},y,*p=&
a[3];
--p;
y=*p;
y=%d\n"
y);
程序的运行结果是().
A、y=0
B、y=2
C、y=1
D、y=3
4298
若有语句:
char*line[5];
下列叙述中正确的是().
A、定义line是一个指针数组,语句中的*号称为间址运算符
B、定义line是一个数组,每个数组元素是一个基类型为char的指针变量
C、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
D、定义line是一个指向字符型函数的指针
2457
设有数组定义:
chararray[]="
China"
则数组array所占的空间为().
A、5个字节
B、4个字节
C、6个字节
D、7个字节
2468
下述对C语言字符数组的描述中错误的是().
A、字符数组中的字符串可以整体输入,输出.
B、不可以用关系运算符对字符数组中的字符串进行比较.
C、字符数组中可以存放字符串.
D、可以通过赋值运算符"
="
对字符数组整体赋值.
2479
以下程序:
string.h>
{charstr[]="
abcd\n\123\xab"
strlen(str));
运行后的输出结果是().
A、10
C、14
D、7
2485
chars[20]="
Hello"
在程序运行过程中若要想使数组s中的内容修改为"
Good"
则以下语句能够实现此功能的是().
A、strcpy(s,"
B、strcat(s,"
C、s[20]="
D、s="
2499
以下程序段的输出结果是
pritnf("
strlen("
ATS\n012\1\\"
));
A、11
B、8
C、9
D、10
2510
chara1[]="
a2[80]="
1234"
将a1串连接到a2串后面的语句是().
A、strcat(a2,a1);
B、strcpy(a2,a1);
C、strcpy(a1,a2);
D、strcat(a1,a2);
2530
设有以下语句,若0<
k<
4,下列选项中对字符串的非法引用是().
charstr[4][2]={"
aaa"
"
bbb"
ccc"
ddd"
},*strp[4];
intj;
for(j=0;
j<
4;
j++)
strp[j]=str[j];
A、*strp
B、strp
C、strp[k]
D、str[k]
2543
选择正确的输入语句().
(其中:
charstring[10];
)使得string的内容为"
.
%s"
string);
B、scanf("
%c"
string);
C、scanf("
D、scanf("
2874
下列数组说明中正确的是().
A、staticcharstr1[5],str2[]={"
};
str1=str2;
B、staticcharstr[];
str="
C、staticcharstr1[],str2[];
str2={"
strcpy(str1,str2);
D、staticcharstr[]="
2633
已定义charstring[20];
使得string的内容为"
Youarestudent"
的正确输入语句是().
B、gets(string);
填空题
==================================================
4875
charch;
定义指针p,并使其指向变量ch的初始化语句是_____。
(必须使用一条语句)
空1:
char*p=&
ch;
【或】char*p=&
ch
4101
在c程序中,只能给指针变量赋NULL值和_____值.
指针【或】地址
4235
inta[3][2]={{1,2},{3,4},{5,6}},*p=a[0];
,则执行语句"
{printf("
%i
d\n"
,*(p+4));
后的输出结果为______。
5
4313
执行语句chars[3]="
ab"
*p;
p=s;
*(p+_____)的值是'
\0'
2
4363
设变量定义为"
intx=3,*p=&
x;
设变量x的地址为2000,则*p=_____,&
(*p)=_____(填数字)
3
空2:
2000
4399
若有程序段“inta[10],*p=a,*q;
q=&a[5];
”,则表达式q-p的值是(______)。
2707
chars[]="
china"
则C编译系统为数组s开辟_____个字节的内存单元.
6
2708
以下findmax返回s中最大元素的下标,数组中元素的个数由t传入。
请填空。
fndmax(ints[],intt)
{intk,p;
for(p=0,k=p;
p<
t;
p++)
if(s[p]>
s[k])
_____;
return_____;
k=p
k
2799
已知chars[]={'
H'
'
l'
o'
则s数组中含有_____个元素.
2820
C语言中,二维数组在内存中的存放方式为按_____连续存放.
行
程序填空
547
/*给定程序中,函数fun的功能是:
找出N×
N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:
不得增行或删行,也不得更改程序的结构!
*/
#include<
#defineN4
voidfun(int(*a)[N],int*b)
{inti,j;
for(i=0;
i<
N;
i++){
/**********FILL**********/
b[i]=__1__;
for(j=1;
j<
j++)
if(b[i]__2__a[j][i])b[i]=a[j][i];
}
{intx[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],i,j;
\nThematrix:
\n"
i++)
{for(j=0;
j++)printf("
%4d"
x[i][j]);
fun(__3__);
\nTheresultis:
i++)printf("
%3d"
y[i]);
位置1:
a[0][i]
位置2:
<
位置3:
x,y
565
判断形参s所指字符串是否是"
回文"
(Palindrome),
若是,函数返回值为1;
不是,函数返回值为0。
是正读和反读都一样的字符串(不区分大小写字母)。
例如,LEVEL和Level是"
,而LEVLEV不是"
。
ctype.h>
intfun(char*s)
{char*lp,*rp;
lp=__1__;
rp=s+strlen(s)-1;
while((toupper(*lp)==toupper(*rp))&
(lp<
rp)){
lp++;
rp__2__;
if(lp<
rp)__3__;
elsereturn1;
{chars[81];
Enterastring:
"
scanf("
s);
if(fun(s))printf("
\n\"
%s\"
isaPalindrome.\n\n"
elseprintf("
isn'
taPalindrome.\n\n"
s
--
return0
561
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
题目:
输出连接后的字符串。
-------------------------------------------------------*/
#include"
/***********FILL***********/
_____
{
charss[10]="
12345"
strcat(ss,"
6789"
/***********FILL***********/
printf(_____,ss);
【或】#include"
string.h"
%s\n"
【或】"
568
本程序用printf函数输出字符串"
Iamstudent"
,完善程序。
inti;
char*s1="
s1[i]!
_____'
_____"
s1[i]);
}
\0
%c
689
对形参ss所指字符串数组中的M个字符串按长度由短到长进行排序。
ss所指字符串数组中共有M个字符串,且串长<
N。
#defineM5
#defineN20
voidfun(char(*ss)[N])
{inti,j,k,n[M];
chart[N];
M;
i++)n[i]=strlen(ss[i]);
M-1;
{k=i;
for(j=___1___;
if(n[k]>
n[j])___2___;
if(k!
=i)
{strcpy(t,ss[i]);
strcpy(ss[i],ss[k]);
strcpy(ss[k],___3___);
n[k]=n[i];
{charss[M][N]={"
shanghai"
guangzhou"
beijing"
"
tianjing"
cchongqing"
\nTheoriginalstringsare:
ss[i]);
fun(ss);
\nTheresult:
i+1
k=j
t
程序改错
694
/*给定程序中函数fun的功能是:
将m(1≤m≤10)个字符串连接起来,组成一个新串,放入pt所指存储区中。
例如:
把3个串:
,"
CD"
EF"
连接起来,结果是"
abcCDEF"
请改正程序中的错误,使它能得出正确的结果。
不要改动main函数,不得增行或删行,也不得更改程序的结构!
voidfun(charstr[][10],intm,char*pt)
/**********ERROR**********/
Intk,q,i;
for(k=0;
k<
m;
k++)
{q=strlen(str[k]);
for(i=0;
q;
pt[i]=str[k,i];
pt+=q;
pt[0]=0;
{intm,h;
chars[10][10],p[120];
\nPleaseenterm:
&
m);
gets(s[0]);
\nPleaseenter%dstring:
m);
for(h=0;
h<
h++)gets(s[h]);
fun(s,m,p);
\nTheresultis:
%s\n"
p);
intk,q,i;
pt[i]=str[k][i];
704
比较两个字符