6.C语言指针练习题(5)
{ cp=x+y; //*cp=30+50=80 }
void main() { } A.50,30
答案:C
分析:函数fun(a,b,&c,&d)中参数 a,b是传值,参数&c,&d是传地址,因此形参cp和实参c
共用一个存储空间,形参dp和实参d共用一个存储空间,所以改变指针变量cp所指向地址的值也就改变变量c的值,同样改变指针变量dp所指向地址的值也就改变变量d的值,因此选C。
(6)要求函数的功能是交换x和y中的值,且通过正确调用返回交换结果。能正确执行此功能的函数是( )。
A.funa(int *x,int *y) { int *p=new int ; p=*x;
B.funb(int x,int y) { int t;
B.30,50
C.80,-20
D.80,20
int a,b,c,d; a=30,b=50; fun(a,b,&c,&d);
cout< t=x; x=y; y=t; } *x=*y; *y=*p; } C.func(int *x,int *y) { *x=*y; D.fund(int x,int y) { *x=*x+*y; *y=*x; } 答案:A *y=*x-*y; *x=*x-*y; } 分析:按照C++语言规则,通过参数带回运算值,只能是传地址,不能是传值 ,B和D的参数是传值,故B和D不能选。C中传回值都是指针变量y所指向地址的值,C也不能选。 (7)以下程序的输出结果是( )。 #include void main() { } A.4,2,1,1 B.4,9,3,1 答案:C 分析:C++语言中的switch语句中,如果没有break语句,一旦满足某一条件进入,就一直运行到switch的结束,如在本题s[1]=’1’,除v1加1之外,v2和v3都要加1。故运行结果是“5,,8,6,1”,选择C。如果程序做下面修改: C.5,8,6,1 D.8,8,8,8 char *s=\ int v1=0,v2=0,v3=0,v4=0; for (int k=0;s[k];k++) switch(s[k]) { } default:v4++; case '1':v1++; case '3':v3++; case '2':v2++; cout< switch(s[k]) { } default:v4++; break; case '1':v1++; break; case '3':v3++;break; case '2':v2++;break; 运行结果是“4,2,1,1”,选择A。 (8)设有如下定义,下面关于ptr正确叙述是( )。 int (*ptr)(); A.ptr是指向一维数组的指针变量 B.ptr是指向int 型数据的指针变量 C.ptr是指向函数的指针,该函数返回一个int型数据 D.ptr是一个函数名,该函数的返回值是指向int型数据的指针 答案:C 分析:参照函数指针定义。 (9)若有如下语句: int **pp,*p,a=10,b=20; pp=&p; //二级指针pp取一级指针p地址 p=&a; //一级指针p取变量a地址 p=&b; //一级指针p取变量b地址 cout<<*p<<”,”<<**pp< A.10,20 答案:D 分析:见程序注释。 B.10,10 C.20,10 D.20,20 (10)设char **s;以下正确的表达式是( )。 A.s=”computer”; B.*s=”computer”; C.**s=”computer”;D.*s=’c’; 答案:C 分析:由char**s语句可知,**s表示是一个二级字符指针变量,*s是一个指向字符串的指针变量,故A、C、D都 不正确,只有B是正确的。 2.编写程序,在堆内存中申请一个float型数组,把10个float型数据0.1、0.2、0.3、?、1.0赋予该数组,然后使用float型指针输出该数组的各元素值并求出其累加和。 #include void main() { float *p= new float[10]; //在堆内申请一个float型数组 int i; float sum=0.0; for(i=0;i<10;i++) {*(p+i)=(i+1)*.1; //给数组赋值0.1,0.2,??,1.0 cout<<*(p+i)<<'\\t'; //输出数组值 sum+=*(p+i); //求和 } cout<<\ } 3.编写一个函数f,将传入此函数的直角坐标值转换为极坐标值,并返回主调函数中。求极坐标的公式是: c= q=arctan(y/x) 若要将两值返回主调函数,有多种方式可以完成,请试之: (1) (1) 两值均以指针形参带回。 void fun(double x,double y,double *c,double *q) { cout< (2)由指针形参带回一个值,函数值返回另一个值。 double fun(double x,double y,double *p) {double c; c=sqrt(x*x+y*y); *p=atan(y/x); return c; } (3)两值均以引用形参返回。 (提示:程序中可以使用C++库函数sprt、pow及atan,它们的头文件为math.h) void fun(double x,double y,double &a,double &b) { a=sqrt(x*x+y*y); b=atan(y/x);
相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




