1.调试下列程序,写出输出结果,并解释输出结果。
1...原程序
//sy2_1.cpp
#include<iostream>
using namespace std;
int main()
{
double dd=3.9,de=1.3;
double &rdd=dd,&rde=de;
cout<<rdd+rde<<','<<dd+de<<endl;
rdd=2.6;
cout<<rdd<<','<<dd<<endl;
de=2.5;
cout<<rde<<','<<de<<endl;
return 0;
}
原程序输出结果:
结果分析:dd和de分别对rdd和rde进行了引用,对rdd或rde的数据操作等同于对dd与de的操作。
2...原程序
//sy2_2.cpp
#include<iostream>
using namespace std;
int main()
{
void fun(int,int&);
int a,b;
fun(2,a);
fun(3,b);
cout<<"a+b="<<a+b<<endl;
return 0;
}
void fun(int m,int &n)
{
n=m*4;
}
原程序输出结果:
结果分析:定义了一个一个对m和n进行运算的fun函数,程序调用fun函数对a和b进行同等运算。
3...原程序
//sy2_3.cpp
#include<iostream>
using namespace std;
int &fun(int);
int aa[5];
int main()
{
int a=5;
for(int i(0);i<5;i++)
fun(i)=a+i;
for(i=0;i<5;i++)
cout<<aa[i]<<" ";
cout<<endl;
return 0;
}
int &fun(int a)
{
return aa[a];
}
原程序输出结果:
修改后程序:
//sy2_3.cpp
#include<iostream>
using namespace std;
int &fun(int);
int aa[5];
int main()
{
int a=5;
int i;
for(i=0;i<5;i++)
fun(i)=a+i;
for(i=0;i<5;i++)
cout<<aa[i]<<" ";
cout<<endl;
return 0;
}
int &fun(int a)
{
return aa[a];
}
修改后输出结果:
2.编程完成下列任务。
(1)编写一个函数,用于将华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。(sy2_4。cpp)
程序:
#include<iostream>
using namespace std;
int fc(int f);
int main()
{
int c,f;
cout<<"请输入华氏度:";
cin>>f;
c=fc(f);
cout<<endl<<"对应的摄氏度:"<<c<<endl;
return 0;
}
int fc(int f)
{
return (f-32)*5/9;
}
结果:
(2)编写重载函数max1可分别求2个整数、3个整数、2个双精度数、3个双精度数的最大值(sy2_5.cpp)
程序:
#include<iostream>
using namespace std;
int max1(int,int);
int max1(int,int,int);
double max1(double,double);
double max1(double,double,double);
int main()
{
double l,a,b,c;
int i;
cout<<" 1.2个整型数据"<<endl;
cout<<" 2.3个整型数据"<<endl;
cout<<" 3.2个双精度数据"<<endl;
cout<<" 4.3个双精度数据"<<endl;
cout<<"输入所需功能的编号:";
cin>>i;
cout<<"请输入要比较的数据:";
switch(i)
{
case 1:
cin>>a>>b;
l=max1(a,b);
break;
case 2:
cin>>a>>b>>c;
l=max1(a,b,c);
break;
case 3:
cin>>a>>b;
l=max1(a,b);
break;
case 4:
cin>>a>>b>>c;
l=max1(a,b,c);
break;
}
cout<<l<<endl;
}
int max1(int a,int b)
{
return a>b?a:b;
}
int max1(int a,int b,int c)
{
return (a>b?a:(b>c?b:c));
}
double max1(double a,double b)
{
return a>b?a:b;
}
double max1(double a,double b,double c)
{
return (a>b?a:(b>c?b:c));
}
结果: