}
inlineintf1(intx,inty)
{
returnx>y?
x:
y;
}
3.分析程序出错的原因,并更正、输出正确的结果。
要求对有注释标记的语句进行功能注释。
//这个程序的错误在于:
重载函数用于实现功能相似而处理的数据类型不同的问题,而编译器不以函数类型区分重载函数,认为是同一个函数声明两次,编译出错。
#include
usingnamespacestd;
intsum1(inta,intb)//定义整型函数,函数名称为sum1,括号内为形参a,b(均为整型)
{
returna+b;
}
doublesum2(doublex,doubley,doublez)//定义double类型函数,名称为sum2,形参为x,y,z,均为double类型
{
returnx+y+z;
}
floatsum3(floatx,floaty)
{
returnx+y;
}
voidmain()
{
cout<<"调用函数sum1(int,int)的结果为:
"<cout<<"调用函数sum2(double,double,double)的结果为:
"<cout<<"调用函数sum3(float,float)的结果为:
"<}
4.分析下列程序所完成的功能,并标出程序中各个变量的存储类型。
//这个程序的功能为:
通过定义变量的存储类型不同,了解变量作用域的不同,从而使输出的结果不同。
#include
usingnamespacestd;
intf1(int);
voidmain()
{
intx=5;//x是auto型
staticinty;//y在此处是static型中的静态局部变量
y=y+f1(x);
cout<<"x="<y=y+f1(x);
cout<<"x="<}
staticintx=12;//x在此处是static型中的静态全局变量
intf1(inta)//a是auto型
{staticinty=300;//y在此处是static型中的静态局部变量
y=y+a;
cout<<"x="<returny;
}
5.分析下列程序所完成的功能,并输出正确的结果。
//这个程序的功能是:
输入一个正整数,将此正整数的各个位的数字按逆序排列,即个位的数字作为最高位,十位的数字作为第二高位,以此循环类推,直到x对10取商的值为0时循环结束。
经过函数运算后的数称为逆转数,并将此数在屏幕上显示出来。
#include
usingnamespacestd;
voidf1(intx)
{intd;
cout<<"输出该数的逆转数为:
";
do
{
d=x%10;
cout<x=x/10;
}while(x!
=0);
cout<}
voidmain()
{
intn;
cout<<"输入一个正整数:
";
cin>>n;
f1(n);
}
二、编程题
1.设计一个函数求100以内能被13整除的最大数。
#include
usingnamespacestd;
intf(intx)
{
inty;
y=x-x%13;
returny;
}
voidmain()
{
intn;
cout<<"请输入一个非0整数:
"<cin>>n;
f(n);
cout<"<}
2.设计一个可以计算阶乘的函数,由用户输入n值,计算出1!
+2!
+3!
+4!
+……+n!
的值,并打印出来。
#include
usingnamespacestd;
longlongf(longlongn)
{
longlongfn;
if(n==0)
fn=1;
else
fn=n*f(n-1);
returnfn;
}
voidmain()
{
cout<<"请输入整数n值:
";
longlongn,sum=0,i;
cin>>n;
for(i=1;i<=n;i++)
{f(i);
sum+=f(i);}
cout<<"1!
直到"<的和为:
"<}
3.设计一个函数,完成将一个十进制数转换成2、8、16进制数。
#include
#include
usingnamespacestd;
voidf1(intx)
{
inta,i=0,b[16]={0};
do
{
a=x%2;
b[i++]=a;
x=x/2;
}while(x!
=0);
cout<<"二进制数转化为:
";
for(intk=i-1;k>=0;k--)
{cout<
cout<}
voidf2(inty)
{
cout<<"八进制数转化为:
"<}
voidf3(intz)
{
cout<<"十六进制数转化为:
"<}
voidmain()
{
intn;
cout<<"请输入一个数:
";
cin>>n;
f1(n);
f2(n);
f3(n);
}
4.设计一个递归函数,求满足以下条件的最大的n:
12+22+32+……+n2<1000
#include
usingnamespacestd;
intf(intn)
{
intfn;
if(n==0)
fn=0;
else
fn=n*n+f(n-1);
returnfn;
}
voidmain()
{
intn=1,fn;
for(n=1;n<100;n++)
{
f(n);
if(f(n)>1000)break;
}
cout<<"满足条件的最大n值为:
"<}
5.设计一个重载函数area,用于求出长方形和圆形的面积,其中长方形的长和宽、圆的半径由用户从键盘输入。
#include
#include
usingnamespacestd;
doublearea(doublex,doubley)
{
return(x+y)*2;
}
doublearea(doubler)
{
doublepi=3.1415926;
returnpi*r*r;
}
voidmain()
{
cout<<"请输入长方形的长和宽:
"<doublex,y;
cin>>x>>y;
cout<<"长方形的面积为:
"<
cout<<"请输入圆的半径:
"<doubler;
cin>>r;
cout<<"圆的面积为:
"<
}
6.编写一个程序,将一个文件中所有大写字母转换成小写字母,并存储到另一个文件中。
#include
#include
usingnamespacestd;
voidmain()
{
ifstreamifile("wenjian1.txt");
ofstreamofile("wenjian2.txt");
charv;
cout<<"转换后的字符串为:
";
inta;
while(ifile>>v)
{
a=v;
if(a<97)
{cout<ofile<else{cout<ofile<}
ofile.close();
cout<}
7.编写一个程序,实现将存放在文件中的学号、姓名、电话等信息读出并显示出来。
#include
#include
#include
usingnamespacestd;
intmain()
{
strings;
ifstreaminf("D:
\\test.txt");
if(!
inf)
{
cout<<"打开失败"<return-1;
}
while(getline(inf,s))
{
cout<
}
}