资源描述:
《第6章练习与思考答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、练习与思考1.单选题(1)以下选项中,对两个基类型相同的指针变量不能进行运算的运算符是(A)。A.+B.--C.==D.=(2)若定义:inta[3][4];下列选项不能表示数组元素a[1][1]地址的是(D)。A.a[1]+1B.&a[1][1]C.*(a+1)[1]D.*(a+5)(3)设char*s=”tx 17yz”;则指针变量s指向的字符串所占的字节数是(C)。A.9B.7C.6D.5(4)在int(*p)[3];语句中,对p正确的解释是(C)。A.定义不合法;B.一个指向整型变量的指针C.一个指针,它指向一个具有三个元素的一维数组D.一个指针数组名,每个元素是一个
2、指向整型变量的指针(5)下列选区项中与int*p[5];等价的定义是(C)。A.intp[5];B.intp;C.int*(p[5]);D.int(*p)[5];(6)对语句char*a[2]={“abcd”,”ABCD”};的正确的解释是(C)。A.数组a的元素值分别为“abcd”,”ABCD”B.是指针变量,它指向含有两个数组元素的字符数组C.数组a的两个元素分别存入含有四个字符的一维数组的首地址D.数组a的两个元素中各自存放了字符‘a’和’A’的地址(7)若有语句:chars1[]=”book”,s2[10],*s3,*s4=”pencil”;则对库函数strcpy的错误调
3、用是(D)。A.strcpy(s1,”book”);B.strcpy(s4,”book”);C.strcpy(s3,”pencil”);D.strcpy(s1,s2);(8)若有以下语句:inta[]={0,1,2,3,4,5,6,7,8,9};int*p=a,i;对数组元素地址正确表示的选项是(B)。A.&(a+1)B.a++C.&pD.&p[i](9)以下不正确的程序段是(D)。A.charstr[20];B.char*p;Scanf(“%s”,&str);scanf(“%s”,p);C.charstr[20];D.charstr[20],*p=str;Scanf(“%s”,
4、&str[2]);scanf(“%s”,p[2]);(10)下面能正确进行字符串赋值操作的选项是(C)。A.chars[5]=(“net”);B.chars[5]={‘n’,’e’,’t’};C.char*s;s=”net”;D.char*s;scanf(“%s”,s);2.分析下列各程序的运行结果(1)下面的程序完成了什么功能?该程序实现了两个字符串的连接。#include5voidmyst(char*,constchar*);main(){charstring1[80],string2[80];printf(“Entertwostrings:”);scanf
5、(“%s%s”,string1,string2);myst(string1,string2);printf(“%s”,string1);return0;}voidmyst(char*s1,constchar*s2){while(*s1!=’ ’)++s1;for(;*s1=*s2;s1++,s2++);}(1)下面的程序完成了什么功能?该程序统计输入结束后数组中的字符个数。#includeintmyst(constchar*);main(){charstring[80];printf(“Enterastring:”);scanf(“%s”,string);
6、printf(“%d”,myst(string));return0;}intmyst(constchar*s){intx=0;for(;*s!=‘ ’;s++)x++;returnx;}3.设计程序(红色部分为答案)(1)用一条语句分别完成下列要求。假定已经声明了浮点数变量number1和number2,并且number1被初始化为7.3。floatnumber1=7.3;floatnumber2;①将变量fPtr声明为指向float类型的对象的指针。float*fptr;5②把变量number1的地址赋给指针变量fPtr。fptr=&number1;③打印fPtr所指向的
7、对象的值。printf("%f",*fptr);④指导fPtr所指向的对象的值赋给变更number2。number2=*fptr;⑤打印number2的值。printf("%f",number2);⑥用转换说明符%p打印number1的地址。printf("%p",&number1);⑦用转换说明符%p打印存储在fPtr中的地址。打印出的值等于number1的地址吗?printf("%p",fptr);打印出来的值相等(1)用指针表示法拷贝字符串。(不用标准函数)