C++实验一Word格式.docx
《C++实验一Word格式.docx》由会员分享,可在线阅读,更多相关《C++实验一Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
//参考程序1
//sum.cpp
#include<
iostream.h>
intadd(inta,intb);
intmain()
{
intx,y,sum;
cout<
<
"
Entertwonumbers:
\n"
;
cin>
>
x;
y;
sum=add(x,y);
Thesumis:
sum<
endl;
return0;
}
intadd(inta,intb)
intc;
c=a+b;
returnc;
涉及知识点:
输入与输出流
Experiment1-2分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。
程序名:
lab1_2.cpp。
#include<
intmax1(inta,intb);
intmax1(inta,intb,intc);
doublemaxl(doublea,doubleb);
doublemaxl(doublea,doubleb,doublec);
main()
intx1,y1,x2,y2,z2,max_1,max_2;
doublex4,y4,z4,max_4,x3,y3,max_3;
Entertwointegernumbers:
cin>
x1>
y1;
max_1=max1(x1,y1);
cout<
Themaxnumberis:
"
max_1<
Enterthreeintegernumber:
x2>
y2>
z2;
max_2=max1(x2,y2,z2);
max_2<
Entertwodoublenumber:
x3;
y3;
max_3=max1(x3,y3);
max_3<
Enterthreedoublenumber:
x4>
y4>
z4;
max_4=max1(x4,y4,z4);
max_4<
intmax1(inta,intb)
if(a>
=b)
{
returna;
}
else{
returnb;
intmax1(inta,intb,intc)
if(a>
b&
&
a>
c)
if(b>
a&
b>
returnb;
if(c>
c>
b)
returnc;
doublemax1(doublea,doubleb)
else
doublemax1(doublea,doubleb,doublec)
函数重载
Experiment1-3编写并测试3X3矩阵转置函数,使用数组保存3X3矩阵:
voidmove(int**matrix)
{
inti,j,k,c;
for(i=0;
i<
1;
i++)
for(j=0;
j<
3;
j++){
k=matrix[i][j];
matrix[i][j]=matrix[j][i];
matrix[j][i]=k;
c=matrix[1][2];
matrix[1][2]=matrix[2][1];
matrix[2][1]=c;
}
main()
inti,j;
int**p;
p=newint*[3];
输入矩阵的元素:
p[i]=newint[3];
j++)
{
cout<
第"
<
i+1<
行第"
j+1<
个元素为:
cin>
p[i][j];
cout<
输入的矩阵的为:
endl;
for(i=0;
i<
i++)
for(j=0;
j<
j++)
cout<
p[i][j]<
move(p);
转置后的矩阵的为:
delete[]p;
数组的运用
Experiment1-4
使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能
#include<
stdio.h>
inti,j,t;
inta[3][3],(*p)[3],*q;
printf("
input%ddatas:
3*3);
for(j=0;
j++)
scanf("
%d"
&
a[i][j]);
beforechange:
);
p=a;
for(;
p<
a+3;
p++)
for(q=*p;
q<
*p+3;
q++)
%d\t"
*q);
}
afterchange:
q=a[0];
for(j=i;
t=*(q+3*i+j);
*(q+3*i+j)=*(q+3*j+i);
*(q+3*j+i)=t;
for(p=a;
指针的运用
Experiment1-5编写程序,用二进制方式读写指定的文件a.bin,在每一行前加行号,写入另一个二进制文件b.bin中,从b.bin中读取数据输出到屏幕。
iostream>
fstream>
cstdlib>
iomanip>
string>
usingnamespacestd;
voidnew_line(ifstream&
fin,char&
temp);
intmain(intargc,char*argv[])
ifstreamfin;
ofstreamfout;
intnum_line=1;
chartemp,inFileName[128];
stringbuffer;
if(argc==1)
请用格式:
SetLineNUmfilename\n"
exit(0);
else
strcpy(inFileName,argv[1]);
正打开输入文件...\n"
fin.open(inFileName);
//打开输入文件
if(fin.fail())
cout<
输入文件打开失败!
exit
(1);
正打开输出文件...\n"
fout.open("
b.bin"
//打开输出文件
if(fout.fail())
输出文件打开失败!
do
{
new_line(fin,temp);
getline(fin,buffer);
if(buffer.length()>
0)
fout<
setw(3)<
num_line++<
:
//设置行号
buffer;
}while(!
fin.eof());
fin.close();
//关闭文件
fout.close();
成功关闭输入输出文件。
程序结束。
return0;
}
voidnew_line(ifstream&
temp)
do//跳过行首空格和空行
{
fin.get(temp);
}while(isspace(temp));
文件的输入输出流
五、实验总结
1.基本掌握如何操作C++的界面,包括运行,编译,调试等过程;
2掌握基本数据类型变量和常量、运算符与表达式的简单应用;
理解了函数重载
3.学会使用vc6.0开发环境中的debug调试功能:
单步执行、设置断点、观察变量值;
熟练使用快捷键的使用。
4.基本掌握函数的运用,并对C语言的复习与运用,认识了C++与C语言的异同。
六、思考题
1)重载函数是通过什么来区分?
答:
区分重载方法的依据在于这些方法具有不同的方法特征。
所谓方法特征是指方法的参数的数量、顺序和类型。
不同的方法特征指参数的数量、顺序和类型至少有一个不相同。
2)new和delete操作符与C语言中的malloc()和free()函数有何异同点?
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。
它们都可用于申请动态内存和释放内存。
2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。
对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。
由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
3,因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。
注意new/delete不是库函数。
4,C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存
3)C++提供的输入输出操作与C语言的输入输出操作的异同点?
c语言中的scanf和printf,他们不是类型安全的,而且没有扩展性。
对于C++来说,因为类型安全和扩展性是C++的
基石,另外,scanf/printf系列函数把要读写的变量和
控制读写格式的信息分开来
4)什么是流?
使用流有那些好处?
流是C++标准库类的一个类,常见的有输入流,输出流,使用流不需要明确确定输入字符的格式,譬如输出整形,C中为printf("
i);
而C++中只要cout<
i即可搞定。
方便很多,
5)C++与定义了那些流?
他们分别与什么设备相连?
标准输入输出流
cincout控制台
文件流
ifstreamofstream文件
字符串流
istrstreamostrstream字符串
七、参考文献
无。