C++指针函数习题.pdf

上传人:l**** 文档编号:72144000 上传时间:2023-02-08 格式:PDF 页数:10 大小:480.89KB
返回 下载 相关 举报
C++指针函数习题.pdf_第1页
第1页 / 共10页
C++指针函数习题.pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《C++指针函数习题.pdf》由会员分享,可在线阅读,更多相关《C++指针函数习题.pdf(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、.C+C+指针函数习题指针函数习题一、选择题一、选择题1以下程序的运行结果是()。sub(int x,int y,int*z)*z=y-x;voidmain()int a,b;sub(10,5,&a);sub(7,a,&b);couta”,”b;A)5,2B)-5,-2C)-5,-12D)5,-22.函数调用过程中,如果函数funA 调用了函数 funB,函数 funB 又调用了函数 funA,则()。A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C 语言中不允许这样的递归调用3变量的指针,其含义是指该变量的()。A)地址B)值C)名D)一个标志4.已有定义 i

2、nt k=2;int*ptr1,*ptr2;且 ptr1 和 ptr2 均已指向变量 k,下面不能正确执行的赋值语句是(A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);5.(去掉)若有说明语句:double*p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是A)*p=&a;scanf(“%lf”,p);B)*p=&a;scanf(“%f”,p);C)p=&a;scanf(“%lf”,*p);D)p=&a;scanf(“%lf”,p);6.若有语句 int*point,a=4;和 point=&a;下面均代表地址的一组选

3、项是()。A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point7.设 char*s=ta103bc;则指针变量 s 指向的字符串所占的字节数是()。A)9B)5C)6D)78.下面程序段的运行结果是()。char*s=abcde;s+=2;couts;A)cdeB)字符cC)字符c的地址D)无确定的输出结果9.设有下面的程序段:则下列叙述正确的是()。char s=china;char*p;p=s;A)s 和 p 完全相同B)数组 s 中的容和指针变量 p 中的容相等C)*p 与 s0相等D)s 数组长度和 p 所指

4、向的字符串长度相等10.若有定义 int a5,*p=a;则对 a 数组元素的正确引用是()。A)*&a5B)a+2C)*(p+5)D)*(a+2)11.若已定义 char s10;则在下面表达式中不表示s1的地址的是()。A)s+1B)s+C)&s0+1D)&s112.下面程序的运行结果是()。#include.)。.#includeint main()char*s1=AbDeG;char*s2=Abdeg;s1+=2;s2+=2;coutstrcmp(s1,s2);A)负数B)正数C)零D)不确定的值13.若有定义:int*p4;则标识符 p()。A)是一个指向整型变量的指针B)是一个指针

5、数组名C)是一个指针,它指向一个含有四个整型元素的一维数组D)说明不合法14.若有 int a10,*p=a;则 p+5 表示()。A)元素 a5的地址B)元素 a5的值C)元素 a6的地址D)元素 a6的值15.设有以下定义:则正确的叙述是()。char*cc2=1234,5678;A)cc 数组的两个元素中各自存放了字符串1234和5678的首地址B)cc 数组的两个元素分别存放的是含有4 个字符的一维字符数组的首地址C)cc 是指针变量,它指向含有两个数组元素的字符型一维数组D)cc 数组元素的值分别是1234和567816.若有以下定义,则能够正确表示数组元素x12的表达式是()。in

6、t x43=1,2,3,4,5,6,7,8,9,10,11,12;int*p=&x00;A)p12B)(*p+1)+2C)p+5D)p517.语句 int(*ptr)();的含义是()。A)ptr 是指向一维数组的指针变量B)ptr 是指向 int 型数据的指针变量C)ptr 是指向函数的指针,该函数返回一个int 型数据D)ptr 是一个函数名,该函数的返回值是指向int 型数据的指针18已有函数 max(a,b),为了让函数指针变量 p 指向函数 max,正确的赋值方法是(A)p=max;B)*p=max;C)p=max(a,b);D)*p=max(a,b);19.下面程序段的运行结果是(

7、)。char a=language,*p;p=a;while(*p!=u)cout(*p-32);p+;A)LANGUAGEB)languageC)LANGD)language20.关于语句 int*ptr();以下说确的是()。A)ptr 是一个指针变量B)*ptr 是一个函数名C)这个语句是定义函数的语句D)ptr 是一个函数名,该函数的返回值是指向int 型数据的指针.)。.21.以下叙述中正确的是()。A)局部变量说明为 static 存储类,其生存期将得到延长B)全局变量说明为 static 存储类,其作用域将被扩大C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的

8、存储类说明符与局部变量完全相同22.有以下程序,程序运行后的输出结果是()。A)64,28B)4,4C)4,3D)64,64#include#define f(x)(x*x)intmain()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);couti1”,”i2;23.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(A)地址传递B)单向值传递C)由实参传给形参,再由形参传回实参D)传递方式由用户指定24.有以下程序,#includeint fun(int n)if(n=1)return 1;elsereturn(n+fun(n-1);intm

9、ain()int x;cinx;x=fun(x);coutx;程序执行时,给变量 x 输入 10,程序的输出结果是()A)55B)54C)65D)4525.已有定义:char a=xyz,b=x,y,z;,以下叙述中正确的是()。A)数组 a 和 b 的长度相同B)a 数组长度小于 b 数组长度C)a 数组长度大于 b 数组长度D)上述说法都不对26.以下程序的输出结果是()。#include#includemain()char st20=“hello0t”;coutstrlen(st)”,”sizeof(st);.)。.A)9 9B)5 20C)13 20D)20 2027.当说明一个结构体

10、变量时系统分配给它的存是()。A)各成员所需存量的总和B)结构中第一个成员所需存量C)成员中占存量最大者所需存D)结构中最后一个成员所需存量28.C 语言结构体类型变量在程序执行期间()。A)所有成员一直驻留在存中B)只有一个成员驻留在存中C)部分成员驻留在存中D)没有成员驻留在存中29.以下程序的结果是()。#includestructWWW int X;int Y;void main()struct WWWA3=7,8,9,10,12,13;int a;a=A1.X+A2.Y;couta;A)17B)22C)16D)2130.以下程序的输出结果是()。strucSTUchar name10

11、;int num;voidf1(struct STUc)structSTUb=“LiSiGuo”,2042;c=b;voidf2(struct STU*c)structSTUb=“SunDan”,2044;*c=b;main()structSTUa=“YangSan”,2041,b=“WangYin”,2043;f1(a);f2(&b);couta.num”,”b.num;执行后的输出结果是A)2041 2044B)2041 2043C)20422044D)20422043二、填空题二、填空题1.若想输出 b 数组的十个元素,下面存在错误的程序行是。(每个程序行前面的数字代表行号)1int m

12、ain()2int b10=1,3,5,7,9,2,4,6,8,10,k;3452.若有定义语句int x10,*p=x;在程序中引用数据元素xi的四种形是:,和 xi(假设 i 已正确说明并赋值)。3.C+语言中,数组名是一个不可改变的,不能对它进行赋值运算;数组在存中占用一段连续的存储.for(k=0;k10;k+,b+)cout*b;.空间,它的首地址由表示。4.在 C+语言中,形参的缺省存储类是。三、读程序写结果。三、读程序写结果。1.#includeint i=1;test()int i;couti;i=2;return(i);intmain()couti;i=test();cout

13、i/3;2.下面程序的运行结果是。#includeint main()int x=0,1,2,3,4,5,6,7,8,9;int s,i,*p;s=0;p=&x0;for(i=1;i10;i+=2)s+=*(p+i);3.下面程序的运行结果是。#includeint main()int x4=1,3,5,7;int*p;p=x;Cout(+*p);return0;四、程序填空。四、程序填空。.cout“sum=”s;return 0;.1.以下程序对数组 a 中的数据进行降序排序,请填空。#define N 10int main()int aN,i,j,k=N;2.下面程序的功能是将两个字符串

14、s1 和 s2 连接起来,请填空。#includeintmain()char s180,s280;gets(s1);gets(s2);conj(s1,s2);puts(s1);return 0;voidconj(char*p1,char*p2)/此函数实现把字符串 p2 连接在 p1 的后面。while(*p1)!=0);while(*p2)!=0)3.下面程序的功能是比较2 个字符串的大小,请填空。#includeintmain()chars180,s280;gets(s1);gets(s2);Cout“Result is:”comp(s1,s2);return 0;.cout“Enter“

15、k”data that will be sortedn”;for(i=0;i*(a+i);for(k=0;k+)for(i=0;iN-k;i+)if(*(a+i)*(a+i+1)j=*(a+i);*(a+i)=*();*()=j;for(i=0;iN;i+)cout*(a+i);return 0;*p1=;p1+;p2+;./以下函数实现比较 2 个字符串的大小,若 p1 比 p2 大,返回数值 1,否则返回数值-1,intcomp(char*p1,char*p2)五、编程题。五、编程题。1.编写程序,把一个从键盘输入字符串间隔的输出,请用指针完成。例如:输入字符串:hello,输出:hlo2

16、.编写程序,把一个字符串中的第m 个字符开始的全部字符复制生成另一个字符串。要求从键盘输入字符串及m的值并输出生成的字符串。3.请编写一个函数,它的功能是:对一个数组进行从小到大的排序。函数首部为voidsort(int a,int n),其中a 为数组名,n 为数组元素的个数。主函数如下,请把子函数补充完整。#include#define N 10int main()/以下为子函数部分。int numN,i=0;while(*p1!=0)&(*p2!=0)if()return1;elsereturn-1;if(*p1!=*p2);p1+;for(i=0;inumi;/输入数据sort(num

17、,N);/调用子函数,对数组的元素进行排序。printf(n 排序之后:);for(i=0;iN;i+)coutnumi”;/输出数据return 0;.一一选择题选择题1C11B21A二二填空题填空题第 1 题第 2 题第 3 题第 4 题三三读程序写结果。读程序写结果。1.3.四四程序填空。程序填空。1.23.五五编程题编程题第一题:思路#define N 100int main()/*以下为子函数,请补充完整.2B12A22C3A13B23B4B14A24A5D15A25C6D16D26B7C17C27A8C18A28A9C19C29B10D20D30A3*(x+i)地址常量auto*(

18、p+i)数组名pi1,随机数,0,22.Sum=25k*p2char strN;voidfun(char*s);/子函数说明gets(str);/读入字符串fun(str);/函数调用return 0;.把参数字符串间隔输出要求使用指针,在这里,参数是指针,满足要求在子函数中,使用一个while 循环,使得指针每次递增2,输出它所指向的字符即可。也就是说,子函数只需要一个while 语句。*/voidfun(char*s)。第二题:思路#define N 100int main()/*以下为子函数部分要现把字符串 s1 中从第 n 个字符开始的所有数据复制到字符串s2 中例如 s1 为“stu

19、dents”,n 为 4,则运算之后,s2 应该是“dents”*/voidfun(char*s1,char*s2,int n)参考算法,1、找到 s1 的第 n 个字符2、开始复制:从当前 s1 所对应的字符开始,逐个复制到s2 里面第三题:思路int n=10;/数组的成员个数int main().char str1N,str2N;int m;voidfun(char*s1,char*s2,int n);/函数声明gets(str1);Cinm;fun(str1,str2,m);/函数调用puts(str2);return 0;int aN;int*p=a;/三个函数,分别是输入,输出,处

20、理数组函数void scan(int*),print(int*),pro(int*);scan(p);/调用函数,给数组输入数据coutn 原始数据为:n;.print(p);/调用函数,输出数组pro(p);/调用函数,对数组进行处理coutn 交换之后的数据为:n;print(p);/调用函数,输出数组void scan(int*p)/给数组输入数据,数组成员个数为全部变量 n。void print(int*p)/输出数组,数组成员个数为全部变量 n。/*以下为子函数,处理函数,按照要求对数组进行处理,数组的成员个数为全局变量 n*/void pro(int*p)int max=0,min=0;int i,temp;/以下循环求出数组的最大值放在max 变量中for(/以下循环求出数组的最小值放在min 变量中for(/*以下为交换语句最小的数和第一个数对换把最大的数和最后一个对换。*/.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com