2014秋C++ 第15周项目3参考解答 在OJ上玩指针

来源:互联网 发布:linux ntpd 配置 编辑:程序博客网 时间:2024/05/14 07:31
课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂“贺老师课堂”同步展示,使用的帐号请到课程主页中查看。 


【项目3-在OJ上玩指针】
(1)指针的基本操作(1)
下面的程序,输入10 100和100 10,均可以输出max=100 min=10,请补充完整程序
#include <iostream>using namespace std;int main( ){   int *p1,*p2,a,b,t;   cin>>a>>b;   p1=&a;   p2=&b;   //下面加入的代码,只许出现p1,p2和t,不许出现a和b   cout<<"Max="<<a<<" Min="<<b<<endl;   return 0;}
参考解答:
#include <iostream>using namespace std;int main( ){    int *p1,*p2,a,b,t;    cin>>a>>b;    p1=&a;    p2=&b;    //下面加入代码,只许出现p1,p2和t,不许出现a和b    if(*p1<*p2)    {        t=*p1;        *p1=*p2;        *p2=t;    }    cout<<"Max="<<a<<" Min="<<b<<endl;    return 0;}

(2)指针的基本操作(2)
下面的程序,输入10 100和100 10,均可以输出max=100 min=10,请补充完整程序#include <iostream>using namespace std;int main( ){    int *p1,*p2,t;   //本程序以下不准再加入新的变量,下面用new操作符分配空间,并用p1、p2分别保存其地址   //下面输入两个整数。若无上面分配的空间,这样操作指赂的空间,极其危险   cin>>*p1>>*p2;   //下面加入的代码,只许出现p1,p2和t,不许出现a和b   cout<<"Max="<<*p1<<" Min="<<*p2<<endl;  //p1和p2指向的分别是大值和小值,无论输入大小   //下面写释放p1和p2所指向空间的语句   return 0;}
参考解答:
#include <iostream>using namespace std;int main( ){    int *p1,*p2,t;    //本程序以下不准再加入新的变量,下面用new操作符分配空间,并用p1、p2分别保存其地址    p1=new int;    p2=new int;    //下面输入两个整数。若无上面分配的空间,这样操作指赂的空间,极其危险    cin>>*p1>>*p2;    //下面加入的代码,只许出现p1,p2和t,不许出现a和b    if(*p1<*p2)    {        t=*p1;        *p1=*p2;        *p2=t;    }    cout<<"Max="<<*p1<<" Min="<<*p2<<endl;  //p1和p2指向的分别是大值和小值,无论输入大小    //下面写释放p1和p2所指向空间的语句    delete p1;    delete p2;    return 0;}

(3)指针当形参
下面的程序将调用函数进行变量的交换,请设计出交换的函数
#include <iostream>using namespace std;void jiaohuan(int *p1, int *p2);int main( ){   int a,b;   cin>>a>>b;   jiaohuan(&a,&b);   cout<<a<<" "<<b<<endl;   return 0;}//下面定义jiaohuan;
参考解答:
#include <iostream>using namespace std;void jiaohuan(int *p1, int *p2);int main( ){    int a,b;    cin>>a>>b;    jiaohuan(&a,&b);    cout<<a<<" "<<b<<endl;    return 0;}//下面定义jiaohuan;void jiaohuan(int *p1, int *p2){    int t;    t=*p1;    *p1=*p2;    *p2=t;    return;}

(4)两数和与差(用参数带回结果)
下面的程序,输入两个整数,调用函数ast后,输出了两数之和及两数之差。阅读程序,补全程序中空白处。
#include <iostream>using namespace std;void ast(int x,int y,int *cp,int *dp){   //补全函数的定义   ___(1)____=x+y;   ___(2)____=x-y;}int main(){   int a,b,c,d;   cin>>a>>b;   //下面调用函数ast   ______(3)______   cout<<c<<" "<<d<<endl;   return 0;}
参考解答:
#include <iostream>using namespace std;void ast(int x,int y,int *cp,int *dp){    //补全函数的定义    *cp=x+y;    *dp=x-y;}int main(){    int a,b,c,d;    cin>>a>>b;    //下面调用函数ast    ast(a,b,&c,&d);    cout<<c<<" "<<d<<endl;    return 0;}




=================== 迂者 贺利坚 CSDN博客专栏=================|== IT学子成长指导专栏 专栏文章的分类目录(不定期更新) ==||== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==||== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====



0 0
原创粉丝点击