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