C程序设计 第八章 指针Word下载.docx

上传人:b****6 文档编号:17648759 上传时间:2022-12-07 格式:DOCX 页数:24 大小:26.69KB
下载 相关 举报
C程序设计 第八章 指针Word下载.docx_第1页
第1页 / 共24页
C程序设计 第八章 指针Word下载.docx_第2页
第2页 / 共24页
C程序设计 第八章 指针Word下载.docx_第3页
第3页 / 共24页
C程序设计 第八章 指针Word下载.docx_第4页
第4页 / 共24页
C程序设计 第八章 指针Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C程序设计 第八章 指针Word下载.docx

《C程序设计 第八章 指针Word下载.docx》由会员分享,可在线阅读,更多相关《C程序设计 第八章 指针Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

C程序设计 第八章 指针Word下载.docx

charc[3],*pc=c;

则对c数组元素地址的正确引用是()。

A.&

c[3]B.pc+2C.c++D.&

c

4.已知:

floatf[]={1.0,2.3,4.5},*pf=f;

则以下哪项不能正确引用数组元素()。

A.*pf--B.*(--pf)C.*(pf++)D.*(++pf)

5.声明语句为“inta[3][4];

”,下列表达式中与数组元素a[2][1]等价的是()。

A.*(a[2]+1)B.a[9]C.*(a[1]+2)D.*(*(a+2))+1

6.设变量定义为:

intn,*p;

charch,*q,*g;

则不正确的语句是()。

A.p=&

n;

g=q=&

ch;

B.p=&

q=&

C.p=&

g=&

chD.p=&

g=p;

7.设有定义:

inta,*pa=&

以下scanf语句中能正确为变量a读入数据的是()。

A.scanf("

%d"

pa);

B.scanf("

a);

C.scanf("

&

pa);

D.scanf("

*pa);

8.不正确的赋值或赋初值的方式是()。

A.charstr[6]={'

s'

'

t'

r'

i'

n'

g'

};

B.charstr[10]="

string"

;

C.char*str="

D.charstr[10];

str="

9.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A.chars[10]="

abcdefg"

B.chart[]="

*s=t;

C.chars[10];

s="

D.chars[10];

strcpy(s,"

);

10.设char*s;

以下正确地语句是()。

A.s=”computer”;

B.*s=”computer”;

C.*s=””;

D.*s=’c’;

11.设有程序段:

“chars[]="

chararray"

char*p;

p=s;

”则下面叙述正确的是()。

A.*p与s[0]相等B.s和p完全相同

C.s数组长度和p所指向的字符串长度相等

D.数组s中的内容和指针变量p中的内容相等

12.以下程序执行的结果()。

main()

{inta,b,k=4,m=6,*p1=&

k,*p2=&

m;

a=p1==&

b=(*p1)/(*p2)+7;

printf("

a=%d,b=%d\n"

a,b);

}

A.a=4,b=7B.a=0,b=7C.a=4,b=0D.a=0,b=0

13.下列程序段的输出结果是()。

int*p,*q,k=5,j=10;

j;

q=&

k;

p=q;

(*p)++;

printf("

*q);

A.5B.6C.10D.11

14.下列程序段的输出结果是()。

intc[]={1,7,12};

int*k=c+1;

*k++);

A.2B.7C.8D.12

15.以下程序执行的结果()。

{inta[5]={1,2,3,4,5};

int*p=&

a[1];

p[2]);

A.2;

B.3;

C.4;

D.5;

16.以下程序执行的结果()。

#include<

stdio.h>

{inta[]={1,2,3,4,5,6};

int*p;

p=a;

*(p+3)+=2;

printf(“%d,%d\n”,*p,*(p+3));

A.1,3B.1,6C.3,6D.1,4

17.下列程序的输出结果是()。

#include<

voidp(int*x,int*y)

{++*x;

--*y;

voidmain()

{intx=0,y=3;

p(&

x,&

y);

(%d,%d)"

x,y);

A.(0,2)B.(0,3)C.(1,3)D.(1,2)

18.设变量定义为inta[3]={1,4,7},*p=&

a[2]-2,则*p的值是()。

a[2]-2B.5C.2D.1

19.若变量己正确定义,下列不能使指针p成为空指针的是()。

A.p='

\0'

B.p=0C.p=NULLD.p=EOF

20.有以下定义

chara[10],*b=a;

不能给数组a输入字符串的语句是()。

A.gets(a)B.gets(a[0])C.gets(&

a[0]);

D.gets(b);

21.以下程序执行的结果()。

{chara[]="

IloveChina!

"

char*p=a;

p=p+2;

%s"

p);

A.IloveChina!

B.loveChina!

C.China!

D.l

22.阅读以下函数

intfun(char*sl,char*s2)

{inti=0;

while(sl[i]==s2[i]&

&

s2[i]!

='

)i++;

return(sl[i]=='

s2[i]=='

此函数的功能是()。

A.将s2所指字符串赋给s1

B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0

C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0

D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0

23.以下程序执行的结果()。

{charstr[]="

xyz"

*ps=str;

while(*ps)ps++;

for(ps--;

ps-str>

=0;

ps--)puts(ps);

A.yzB.zC.yD.x

xyzyzyzxy

xyzxyzxyz

24.以下程序执行的结果()。

main()

{inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int(*pa)[4]=a;

pa++;

*(*(pa+1)+2));

}

A.3B.7C.10D.l1

25.对于变量定义char*pp[100],pp是一个()。

A.函数B.数组元素C.指针变量D.数组

26.以下程序执行的结果()。

{char*s[]={"

one"

"

two"

three"

},*p;

p=s[1];

%c,%s\n"

*(p+1),s[0]);

}

A.n,twoB.t,oneC.w,oneD.o,two

27.有以下程序

main()

{char*p[10]={"

abc"

aabdfg"

dcdbe"

abbd"

cd"

%d\n"

strlen(p[4]));

执行后输出结果是()

A)2B)3C)4D)5

28.下列程序段的输出结果是()。

char*st[]={"

abcd"

efgh"

ijkl"

mnop"

},**p=st;

p++;

*p+1);

A.cdB.fghC.ijklD.出错

29.设变量定义为:

int*p[3],a[3];

以下赋值正确的是()。

a[0]B.*p=**aC.p[0]=aD.**p=a

30.设有定义:

intn=0,*p=&

n,**q=&

p;

则以下选项中,正确的赋值语句是()

A)p=1;

B)*q=2;

C)q=p;

D)*p=5;

31.以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是()。

A.main()B.main()C.main()D.main()

{int*p;

{int*p;

{int*p;

{int*p;

fun(p);

fun(&

p);

fun(p);

}}}}

intfun(int*p)intfun(int**p)intfun(int**p)intfun(int*p)

{ints;

p=&

s;

}{ints;

*p=&

}{*p=(int*)malloc

(2);

}{p=(int*)malloc(sizeof(int));

32.有以下程序

main(intarge,char*argv[])

{intn,i=0;

while(argv[1][i]!

{n=fun();

i++;

printf(%d\n"

n*argc);

intfun()

{staticints=0;

s+=1;

returns;

假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行exam123<

回车>

,则运行结果为()。

A.6B.8C.3D.4

33.有以下程序

string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;

i<

argc;

i+=2)len+=strlen(argv[i]);

5d\n"

len);

经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行

exabcdefgh3k44

A).4B.12C.8D.6

四、程序填空题

1.以下程序是完成将字符串b复制给字符串a的功能,请填空。

voidcopy_string(charfrom[],charto[])

while(【1】*(from+i)!

=’\0’)

{【2】*(from+i)=*(to+i);

}

to[i]=【3】’\0’;

main()

{char*a="

Iamateacher."

char*b="

youareastudent."

string_a=%s\nstring_b=%s\n"

a,b【4】);

copy_string(a,b)

【5】;

a,b);

2.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。

请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=*t++【1】);

{charstr1[100],str2[]="

abcdefgh"

【2】sstrcpy(str1,str2);

%s\n"

str1);

3.以下程序是计算一个字符串的长度,请填空。

{charc[20];

inti=0,s=0;

scanf("

c);

while(【1】c[i++]!

=’\0’)

{【2】s++;

}

s);

4.以下函数的功能是删除字符串s中的所有数字字符。

voiddele(char*s)

{intn=0,i;

for(i=0,s[i];

i++)

if(【1】s[i]>

=’0’&

s[i]<

=’9’)

s[n++]=s[i];

s[n]=【2】’\0’;

5.对输入的两个整数按大小输出。

swap(int*p1,int*p2)

{inttemp;

temp=【1】*p1;

*p1=*p2;

*p2=【2】temp;

{inta,b;

int*pointer_1,*pointer_2;

%d,%d"

【3】&

a,&

b);

pointer_1=【4】&

a;

pointer_2=&

if(a<

b)swap(pointer_1,【5】pointer_2);

\na=%d,b=%d\n"

6.用选择法对10个数排序(降序)。

{int*p,i,a[10];

for(i=0;

10;

【1】p++);

sort(p,【2】10);

for(p=a,i=0;

i<

i++){

%d"

【3】*p);

p++;

sort(intx[],intn)

{inti,j,k,t;

n-1;

i++){

k=i;

for(j=i+1;

j<

j++)

【4】if(*(x+j)>

*(x+k))k=j;

if(k!

=i){

t=x[i];

【5】x[i]=x[k];

x[k]=t;

7.输入一个字符串(少于80个字符),滤去所有的非八进制字符后,组成一个新字符串(八进制形式),然后将其转换为十进制整数后输出。

函数stoi(str)将八进制形式的字符串str转换为十进制整数,例如,stoi(“12”)的值为10(八进制12对应十进制10)。

voidmain()

{inti,k;

chars[10];

intstoi(char*str);

gets(s);

for(i=k=0;

s[i]!

=’\0’;

if(s[i]<

=’7’&

s[i]>

=’0’)

【1】s[k++]=s[i];

【2】s[k]=’\0’;

printf(“digit=%d\n”,【3】stoi(s));

intstoi(char*str)

{inti,n=0;

for(i=0;

str[i]!

【4】n=n*8+(str[i]-’0’);

returnn;

s

8.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:

yes!

,否则函数返回字符串:

no!

,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:

adgda。

char*huiwen(char*str)

{char*p1,*p2;

inti,t=0;

p1=str;

p2=【1】str[strlen(str)];

=strlen(str)/2;

if(*p1++!

=*p2--){t=1;

break;

if(【2】t==1)return("

elsereturn("

{charstr[50];

Input:

str);

【3】huiwen(str));

9.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。

voidfun(int,int,int(*)[4],int*);

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}};

intb[3],i;

【1】fun(3,4,a,b);

3;

i++)printf("

%4d"

b[i]);

\n"

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

{x=【2】*(*(ar+i));

for(j=0;

j++)

if(x<

ar[i][j])x=ar[i][j];

【3】*(br+i)=x;

10.设函数findbig已定义为求3个数中的最大值。

以下程序将利用函数指针调用findbig函数。

{intfindbig(int,int,int);

int(*f)(),x,yz,z,big;

f=【1】findbig;

%d%d%d"

x,&

y,&

z);

big=(*f)(x,y,z);

bing=%d\n"

big);

11.以下程序的功能是:

将从键盘输入的无符号八进制数字构成的字符串转换为十进制整数。

例如输入字符串为“556”,则输出十进制整数为366。

{

char*p,s[6];

intn;

Scanf(“%s”,s);

n=*p-‘0’;

while(*(++p)!

=’\0’)n=n*8+*p-‘0’;

printf(“%d\n”,n);

12.以下程序统计从键盘输入的字符中每个大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推。

用#号结束输入,请填空。

#include“stdio.h”

#include“ctype.h”

{inti,num[26]={0};

charc;

while(【8】

(c=getchar())!

=’#’)

if(【9】c>

=’A’&

c<

=’Z’)num[【10】c-’A’]+=1;

for(i=0;

26;

if(num[i])printf(“%c:

%d\n”,i+’A’,num[i]);

13.下面的函数用以删除所给字符串(最多含80个字符)中的所有空白符。

以下程序中,调用C语言提供的isspace函数来判断某字符是不是空白符,如果是空白符该函数返回1,否则返回0。

voidrmv(【5】char*string)

{chartstr[81];

intj,k;

for(j=0,k=0;

string[j]!

=NULL;

if(isspace(string[i])==0)tstr[k++【6】]=string[j];

【7】tstr[k]=’\0’;

strcpy(string,tstr);

14.以下程序调用invert函数按逆序重新放置a数组中元素的值,a数组中的值在main函数中读入。

请填空:

#defineN10

voidinvert(int*s,intk,intj)

{intt;

if(k<

j)

{t=*(s+k);

*(s+k)=*(s+j)【8】;

*(s+j)=t;

invert(s,k+1【9】,j-1);

{inta[N],k;

for(k=0;

k<

N;

k++)scanf(“%d”,*(a+k)【10】);

invert(a,0,N-1);

k++)printf(“%d”,a[k]);

printf(“\n”);

五、程序阅读题

1.以下程序执行的结果()。

{char*p="

Becareful!

”;

%c"

try(p));

chartry(char*s)

for(;

*(s+i)!

++i);

return(*s);

B

2.以下程序执行的结果()。

intx=1;

intp(int*y)

{++*y;

return

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1