C语言第七章习题带答案文档格式.docx
- 文档编号:21722245
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:13
- 大小:34.85KB
C语言第七章习题带答案文档格式.docx
《C语言第七章习题带答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言第七章习题带答案文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
D.具有M个指针元素的一维数组的指针
double*p[6];
,它的含义是(C)。
A.p是指向double型变量的指针B.p是double型数组
C.p是指针数组D.p是数组指针
3.已知:
chars[10],*p=s,则在下列语句中,错误的语句是(B)。
A.p=s+5;
B.s=p+s;
C.s[2]=p[4];
D.*p=s[0];
4.已知:
chars[100];
inti;
,则在下列引用数组元素的语句中,错误的表示形式是(D)
A.s[i+10]B.*(s+i)C.*(i+s)D.*((s++)+i)
charb[5],*p=b;
A.b="
abcd"
B.*b="
C.p="
D.*p="
6.下列对字符串的定义中,错误的是(A)。
A.charstr[7]="
FORTRAN"
B.charstr[]="
C.char*str="
D.charstr[]={'
F'
'
O'
R'
T,'
'
A'
N'
0};
7.已知:
chars[20]="
programming"
*ps=s;
,则不能引用字母o的表达式是(A)。
A.ps+2B.s[2]C.ps[2]D.ps+=2,*ps
8.已知:
char**s;
,正确的语句是(B)。
A.s="
computer"
B.*s="
C.**s="
D.*s='
9.已知:
charc[8]="
beijing"
*s=c;
,则下面的输出语句中,错误的是(B)。
A.printf("
%s\n"
s);
B.printf("
*s);
C.for(i=0;
i<
7;
i++)D.for(i=0;
i++)
printf("
%c"
c[i]);
printf("
s[i]);
10.已知:
char*aa[2]={"
"
ABCD"
};
,则以下说法正确的是(D)。
A.aa数组元素的值分别是"
序列和"
序列
B.aa是指针变量,它指向含有两个数组元素的字符型一维数组
C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址
D.aa数组的两个元素中各自存放了字符’a'
和'
的地址
11.已知:
inta[3][4],*p=&
a[0][0];
p+=6;
,那么*p和(D)的值相同。
A.*(a+6)B.*(&
a[0]+6)C.*a[1]+2D.a[1][2]
12.已知:
inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;
,则值为3的表达式是(A)
A.p+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.*(&
a[0][0]+6)
13.已知:
int**p;
,则变量p是(B)。
A.指向int的指针B.指向指针的指针
C.int型变量D.以上三种说法均是错误的
14.已知:
inta[]={1,2,3,4},y,*p=&
a[1];
,则执行语句y=(*--p)++;
之后,变量y的值为(A)。
A.1B.2C.3D.4
15.已知:
intb[]={1,2,3,4},y,*p=b;
,则执行语句y=*p++;
之后,变量y的值为(A)。
16.已知:
intx[]={1,3,5,7,9,11},*ptr=x;
,则能够正确引用数组元素的表达式是(B)。
A.xB.*(ptr--)C.x[6]D.*(--ptr)
17.已知:
,则不能够正确引用数组元素的表达式是
(B)。
A.*(ptr--)B.*(--ptr)C.*(ptr++)D.*(++ptr)
18.若有以下语句且0<
=k<
6,则正确表示数组元素地址的表达式是(C)。
staticintx[]={1,3,5,7,9,11},*ptr=x,k;
A.x++B.&
ptrC.&
ptr[k]D.&
(x+1)
19.已知:
inti,x[3][4];
,则不能将x[1][1]的值赋给变量i的语句是(C)。
A.i=*(*(x+1)+1);
B.i=x[1][1];
C.i=*(*(x+1));
D.i=*(x[1]+1);
20.已知:
inta[2][3]={2,4,6,8,10,12};
,正确表示数组元素的地址是(A)。
A.*(a+1)B.*(a[1]+2)C.a[1]+3D.a[0][0]
21.已知:
int*p;
,使用如下语句动态申请一个int型的存储单元,应当使用(D)。
p=()malloc(sizeof(int));
A.intB.int*C.(*int)D.(int*)
二、填空题
22.阅读程序,下面程序的输出结果是(15)。
#include<
stdio.h>
main()
{staticinta[2][3]={{1,2,3},{4,5,6}};
intm,*ptr;
ptr=&
m=(*ptr)*(*(pt叶2))*(*(pt叶4));
%d\n"
m);
}
23.下面程序的功能是:
从键盘上输入一行字符,存入一个字符数组中,然后输出
该字符串.则①是('
\0'
或0)、②是(++)。
{charstr[81],*sptr;
inti;
for(i=0;
80;
{str[i]=getchar();
if(str[i]=='
\n'
)break;
sptr=str;
while(*sptr)putchar(*sptr②);
24•在下面的程序中若第一个printf语句的输出为ffe2,则其余语句的输出结果分别
为:
①是(fff4)、②是(a)、③是(0)、④是(b)。
{staticinta[]={1,2,3,4,5,6,7,8,9,0},*p=a;
printf("
%x\n"
/*输出结果为ffe2*/
p+9);
/*输出①*/
*p+9);
/*输出②*/
*(p+9));
/*输出③*/
*++p+9);
/*输出④*/
25.下面程序的输出结果,①是(m)、②是(a)、③是(w)、④是(z)、⑤是(mnopqr)
char*pp[2][3]={"
abc"
defgh"
ijkl"
mnopqr"
stuvw"
xyz"
main()
{printf("
%c\n"
***(pp+1));
/*输出①*/
**pp[0]);
(*(*(pp+1)+1))[4]);
/*输出③*/
*(pp[1][2]+2));
/*输出④*/
**(pp+1));
/*输出⑤*/
三、读程序,写结果
26.下面程序的运行结果是:
(□□□1□□口3□□口5□□口7
□□□9□口11□口13□口15
□□17□口19□口21□口23)。
(注:
□表示空格。
)
{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int*p,i;
for(p=a,i=0;
p<
&
a[0][0]+12;
p++,i++)
{if(i%4==0)printf("
\n"
);
%4d"
27.下面程序的运行结果是(3,3,3)。
#include<
{inta=2,*p,**pp;
pp=&
P;
P=&
a++;
%d,%d,%d\n"
a,*p,**pp);
}
练习7-3答案
1.main(argc,argv)中形式参数argv的正确说明形式应当为(A).
A.char*argv[]B.charargv叩C.charargv[]2.说明语句int(*p)();
的含义是(C)。
A.p是一个指向一维数组的指针变量
B.p是指针变量,指向一个整型数据
C.p是一个指向函数的指针,该函数的返回值是一个整型D.以上都不对
D.char*argv
3.说明语句int*(*p)();
的含义是(D)。
A.p是一个指向int型数据的指针
B.p是指针变量,它构成了指针数组
C.p是一个指向函数的指针,该函数的返回值是一个整型
D.p是一个指向函数的指针,该函数的返回值是一个指向整型的指针4.已知函数说明语句void*f();
,则它的含义是(A)。
A.函数f的返回值是一个通用型指针
B.函数f的返回值可以是任意的数据类型
C.函数f无返回值
D.指针f指向一个函数,该函数无返回值
函数的功能是交换变量x和y中的值,并且通过正确调用返回交换的结果。
能正确执行此功能的函数是(D)
A.funa(int*x,int*y)
{int*p;
*p=x;
*x=*y;
*y=*p;
C.func(int*x,int*y)
{*x=*y;
*y=*x;
阅读程序,下面程序的输出结果是假设可执行文件的文件名为:
PROGEXE
B.funb(intx,inty)
{intt;
t=x;
x=y;
y=t;
D.fund(int*x,int*y){*x=*x+*y;
*y=*x-*y;
*x=*x-*y;
运行时键入的命令行为:
PROG-386NET3<
回车>
main(intargc,char*argv[])
{inti;
argc;
i++)printf("
argv[i]);
A.-386
NET3
C.PROG.EXE
386
D.PROG
-386NET3
B.PROG.EXE
-386
7.下面程序的运行结果是(A)。
f(intx,inty)
{return(y-x);
{inta=5,b=6,c=2;
intf();
int(*g)()=f;
c=(*g)(a,b);
c);
A.1B.2C.3D.前面三个答案均是错误的
8.若用数组名作为函数调用的实参,传递给形参的是(A)。
A.数组的首地址B.数组第一个元素的值
C.数组中全部元素的值D.数组元素的个数
9.下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,则①是
(2)、②是
(2)。
fun(intx,intb[])
{intk=0,r;
do
{r=x%①;
b[k++]=r;
x/=②;
}while(x);
10.函数expand(chars[],chart[])在将字符串s复制到字符串t时,将其中的换行符和制表符转换为可见的转义字符,即用"
表示换行符,用"
\t"
表示制表符。
则①是(j++)、②是('
\\'
)、③是(j++)、④是('
)、⑤是(j++)、⑥是('
)。
expand(chars[],chart[])
{inti,j;
for(i=j=0;
s[i]!
='
switch(s[i])
{case'
:
t[①]=②;
t[j++]='
n'
break;
case'
\t'
t[③]=④;
t'
default:
t[⑤]=s[i];
}t[j]=⑥
11•以下程序的运行结果是(10753-7)。
{inta[5]={5,10,-7,3,7},i,j,t;
sort(a);
=4;
i++)printf("
%d"
a[i]);
sort(inta[])
{inti,j,t;
4;
for(j=0;
j<
4-i;
j++)
if(a[j]<
a[j+1]){t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}}
12•以下程序的运行结果是(-13689)。
{inta[5]={9,6,8,3,-1},i,j,t,p;
{inti,j,t,p;
{p=j;
for(i=j;
i++)if(a[i]<
a[p])p=i;
t=a[p];
a[p]=a[j];
a[j]=t;
13.以下程序的运行结果是(sum=6)。
{inta[3][3]={1,3,5,7,9,11,13,15,17};
intsum;
sum=func(a);
\nsum=%d\n"
sum);
func(inta[][3])
{inti,j,sum=0;
3;
{a[i][j]=i+j;
if(i==j)sum=sum+a[i][j];
return(sum);
14.下面程序的运行结果是:
(beforeswapa=5,b=10
inswapx=10,y=5
afterswapa=10,b=5)。
{inta,b;
a=5;
b=10;
beforeswapa=%d,b=%d\n"
a,b);
swap(&
a,&
b);
afterswapa=%d,b=%d\n"
swap(int*px,int*py)
{inttemp;
temp=*px;
*px=*py;
*py=temp;
inswapx=%d,y=%d\n"
*px,*py);
15.下面程序的运行结果是(0123)。
func(intb[])
{intj;
j++)b[j]=j;
{inta[4],i;
func(a);
i++)printf("
16.运行下面程序,如果从键盘上输入字符串"
qwerty"
和字符串"
,则程序的运行结果是(10)。
strle(chara[],charb[])
{intnum=O,n=0;
while(a[num]!
\O'
)num++;
while(b[n])
{a[num]=b[n];
num++;
n++;
}return(num);
{charstr1[81],str2[81];
gets(str1);
gets(str2);
strle(str1,st⑵);
17•下面程序的运行结果是(AGAAGAG)
string.h>
voidfun(char*w,intm)
{chars,*p1,*p2;
p1=w;
p2=w+m-1;
while(p1<
p2)
{s=*p1++;
*p1=*p2__;
*p2=s;
{staticchara[]="
ABCDEFG"
fun(a,strlen(a));
puts(a);
Whenyouareoldandgreyandfullofsleep,
Andnoddingbythefire,takedownthisbook,
Andslowlyread,anddreamofthesoftlook
Youreyeshadonce,andoftheirshadowsdeep;
Howmanylovedyourmomentsofgladgrace,
Andlovedyourbeautywithlovefalseortrue,
Butonemanlovedthepilgrimsoulinyou.
Andlovedthesorrowsofyourchangingface;
Andbendingdownbesidetheglowingbars,
Murmur,alittlesadly,howlovefled
Andpaceduponthemountainsoverhead
Andhidhisfaceamidacrowdofstars.
Thefurthestdistaneeintheworld
Isnotbetweenlifeanddeath
ButwhenIstandinfrontofyou
Yetyoudon'
tknowthat
Iloveyou.
IsnotwhenIstandinfrontofyou
Yetyoucan'
tseemylove
Butwhenundoubtedlyknowingthelovefromboth
Yetcannotbetogether.
Isnotbeingapartwhilebeinginlove
ButwhenIplainlycannotresisttheyearning
Yetpretendingyouhaveneverbeeninmyheart.
Isnotstrugglingagainstthetides
Butusingone'
sindifferentheart
Todiganuncrossableriver
Fortheonewholovesyou.
倚窗远眺,目光目光尽处必有一座山,那影影绰绰的黛绿色的影,是春天的颜色。
周遭流岚升腾,没露出那真实的面孔。
面对那流转的薄雾,我会幻想,那里有一个世外桃源。
在天阶夜色凉如水的夏夜,我会静静地,静静地,等待一场流星雨的来临…
许下一个愿望,不乞求去实现,至少,曾经,有那么一刻,我那还未枯萎的,青春的,诗意的心,在我最美的年华里,同星空做了一次灵魂的交流…
秋日里,阳光并不刺眼,天空是一碧如洗的蓝,点缀着飘逸的流云。
偶尔,
片飞舞的落叶,会飘到我的窗前。
斑驳的印迹里,携刻着深秋的颜色。
在一个落雪的晨,这纷纷扬扬的雪,飘落着一如千年前的洁白。
窗外,是未被污染的银白色世界。
我会去迎接,这人间的圣洁。
在这流转的岁月里,有着流转的四季,还有一颗流转的心,亘古不变的心。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第七 习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)