计算机C++程序设计实验报告.docx

上传人:b****2 文档编号:2309263 上传时间:2023-05-03 格式:DOCX 页数:43 大小:25.90KB
下载 相关 举报
计算机C++程序设计实验报告.docx_第1页
第1页 / 共43页
计算机C++程序设计实验报告.docx_第2页
第2页 / 共43页
计算机C++程序设计实验报告.docx_第3页
第3页 / 共43页
计算机C++程序设计实验报告.docx_第4页
第4页 / 共43页
计算机C++程序设计实验报告.docx_第5页
第5页 / 共43页
计算机C++程序设计实验报告.docx_第6页
第6页 / 共43页
计算机C++程序设计实验报告.docx_第7页
第7页 / 共43页
计算机C++程序设计实验报告.docx_第8页
第8页 / 共43页
计算机C++程序设计实验报告.docx_第9页
第9页 / 共43页
计算机C++程序设计实验报告.docx_第10页
第10页 / 共43页
计算机C++程序设计实验报告.docx_第11页
第11页 / 共43页
计算机C++程序设计实验报告.docx_第12页
第12页 / 共43页
计算机C++程序设计实验报告.docx_第13页
第13页 / 共43页
计算机C++程序设计实验报告.docx_第14页
第14页 / 共43页
计算机C++程序设计实验报告.docx_第15页
第15页 / 共43页
计算机C++程序设计实验报告.docx_第16页
第16页 / 共43页
计算机C++程序设计实验报告.docx_第17页
第17页 / 共43页
计算机C++程序设计实验报告.docx_第18页
第18页 / 共43页
计算机C++程序设计实验报告.docx_第19页
第19页 / 共43页
计算机C++程序设计实验报告.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机C++程序设计实验报告.docx

《计算机C++程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《计算机C++程序设计实验报告.docx(43页珍藏版)》请在冰点文库上搜索。

计算机C++程序设计实验报告.docx

计算机C++程序设计实验报告

C++程序设计

实验报告

实验一、字符和格式的输出实验

一,实验目的

1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。

2、掌握过程控制编程方法,正确编制多重循环过程,对简单问题能够临场加以解决。

3、学会使用简单的c++标准库;

4、学习良好的编程习惯和形成自己的编程风格。

二、实验设备与环境

装有C++语言工具软件(Vs2008)的计算机。

三、实验内容

a)P.30,3.2.1,字符三角形;

b)P.31,3.2.2,背靠背字符三角形;

c)P.33,3.2.5,格式阵列一。

四、实验过程及结果

1.1字符三角形

【问题描述】:

根据读入的字符值以及三角形的高,输入以该字符为填充字符的等腰三角形。

【输入描述】:

输入数据含有不超过50组的数据,每组数据包括一个可见字符c(33<=c<=126)和一个整数n(1<=n<=30)。

【输出描述】:

输出以c为填充字符、高为n的等腰三角形,勾画每个三角形时都应另起一行。

【程序代码】:

#include

#include

usingnamespacestd;

intmain(){

charc;

for(intn;cin>>c>>n;)

for(inti=1;i<=n;i++)

cout<

}

【输入】:

A5B3

【输出】:

1.2字符菱形

【问题描述】:

根据读入的字符和边长,勾画字符菱形。

【输入描述】:

输入数据含有不超过50组的数据,每组数据包括一个可见字符c和一个整数n(1<=n<=30)。

【输出描述】:

输出以c为填充字符、边长为n的菱形,勾画每个菱形时都应另起一行。

【程序代码】:

#include

#include

usingnamespacestd;

intmain(){

charc;

for(intn;cin>>c>>n;)

{

for(inti=1;i<=n;i++)

cout<

for(inti=1;i<=n-1;i++)

cout<

}

}

【输入】:

A5B3

【输出】:

1.3背靠背字符三角形

【问题描述】:

根据读入的字符和高,勾画背靠背字符三角形。

【输入描述】:

输入数据不超过50组的数据,每组数据包括一个可见字符c和一个整数n(1<=n<=30)。

【输出描述】:

输出以c为填充字符,高为n的背靠背字符三角形,勾画每个三角形时都应另起一行。

【程序代码】:

#include

#include

usingnamespacestd;

intmain(){

charc;

for(intn;cin>>c>>n;)

for(inti=1;i<=n;i++)

cout<

}

【输入】:

W5B3

【输出】:

1.4格式阵列一

【问题描述】:

根据读入的阶,按样例打印格式阵列。

【输入描述】:

输入读入的阶,按样例打印格式阵列。

【输出描述】:

输出以n为阶的格式阵列。

每行开始先打印行号,行号为两个字符宽,右对齐,行号与元素之间空2格。

每个元素占3个字符宽。

右对齐,元素值起始位置为0,以后每向右前进一个,元素值便取前一元素加1除n的余数,每进到下一行,起始的元素值为上一元素加1除以n的余数,以此类推。

每个格式阵列之间应有一空行,最前与最后不应有空行。

【程序代码】:

#include

usingnamespacestd;

intn,casen;

voidcomputing(){

for(inti=0;i

cout<<""<

cout<<""<

for(intt=1;t

cout<

}

}

intmain(){

while(cin>>n){

if(casen>0)cout<

computing();

casen++;

}

return0;

}

【输入】:

63

【输出】:

实验二、字符和数字运算实验

一、实验目的

1、重点把握各种内部数据类型、数值和逻辑运算,各种表达式、函数声明、定义和调用。

2、掌握过程控制编程方法,正确编制多重循环过程,对简单问题能够临场加以解决。

3、学会使用简单的c++标准库;

4、学习良好的编程习惯和形成自己的编程风格。

二、实验设备与环境

装有C++语言工具软件(Vs2008)的计算机。

三、实验内容

a)P.44,3.6.1,逆反01串;

b)P.44,3.6.2,倒杨辉三角形;

c)P.45,3.6.3,“顺”序列;

d)P.46,3.6.4,数字和。

4、实验过程及结果

2.1逆反01串

【输入描述】:

输入数据含有不多于50个的01串,每个字串的长度不大于200.

【输出描述】:

按输入的01串输入对应的10串,每个字串单独占一行。

【程序代码】:

#include

usingnamespacestd;

intmain()

{

strings;

inti,m=1;

for(;cin>>s;m++)

{

if(s.length()<=200)

{

for(i=0;i

{

if(s.substr(i,1)=="1")

cout<<"0";

elsecout<<"1";

}

}

elsebreak;

cout<

if(m>50)break;

}

}

【输入】:

【输出】:

2.2倒杨辉三角形

【输入描述】:

输入数据中包含了不多于50个的整数n(1<=n<=10).

【输出描述】:

以n为行数,其打印出的倒杨辉三角形(每个数据占三个字符),每个倒三角形之间没有空行,见样本输出。

【程序代码】:

#include

usingnamespacestd;

constintmaxn=10;

inta[maxn+10][maxn+10],n;

voidini(){

for(inti=1;i<=maxn;i++){

a[i][i]=1;a[i][1]=1;

}

for(inti=3;i<=maxn;i++){

for(intj=2;j

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}

}

intmain(){

ini();

while(cin>>n){

for(inti=n;i>=1;i--){

for(intj=i;j

for(intj=1;j<=i;j++){

cout<

}

cout<

}

}

return0;

}

【输入】:

5

3

【输出】:

2.3“顺”序列

【输入描述】:

输入中第一行为一个整数n(1<=n<=10),描述后面一共有n组卡片,每组卡片的第一个数m(1<=m<=100),表示后面会出现m张卡片。

【输出描述】:

输入每组卡片,判断是否能构成“顺”序列。

如果能构成“顺”序列,则输出yes,否则就输出no。

每个结果应分别不同行显示。

【程序代码】:

#include

#include

usingnamespacestd;

boolcompute(int*a,intm)

{

inti,j,max=0;

for(i=0;i

if(a[i]>max)

max=a[i];

}

for(i=0;i

for(j=0;j

if(a[i]+1==a[j]||a[i]==max)

break;

}

if(j>=m)

returnfalse;

}

returntrue;

}

intmain()

{

int*a;

intn=0;

intm=0;

string*b;

inti,j;

intrsize=0;

cout<<"请输入一个整数n:

";

cin>>n;

b=newstring[n];

j=0;

while(j

cout<<"请输入整数m:

";

cin>>m;

a=newint[m];

cout<<"请输入一连串数据:

"<

for(i=0;i

cin>>a[i];

if(compute(a,m))

b[j]="Yes";

else

b[j]="No";

delete[]a;

j++;

}

cout<<"输出:

"<

for(i=0;i

cout<

delete[]b;

return0;

}

【输入】:

2

45768

81732812783

【输出】:

2.4数字和

【输入描述】:

输入数据中包含了不多于50个的正整数n

【输出描述】:

每个正整数都应输出一个各位数字和,并独占一行。

【程序代码】:

#include

#include

usingnamespacestd;

intmain(){

stringst;

while(getline(cin,st)){

intans=0;

for(inti=0;i

if(st[i]>='0'&&st[i]<='9')ans+=st[i]-'0';

}

cout<

}

return0;

}

【输入】:

12345

56123

82

【输出】:

五、实验小结:

本次试验重点学习了各种数据类型,逻辑运算,函数的声明,定义和调用。

在过程控制过程中,熟练地使用多重循环,同时应养成良好的编程习惯和形成自己的编程风格,一边为日后的学习打下坚实的基础。

实验三、加密和解密算法实验

一、实验目的

1、重视数学方法,提高数学推算和编程表的转换能力。

2、拓展编程表达的方法,熟练运用函数等手段进行计算模块的分离计算。

3、进一步学会使用c++标准库;

4、在保证编程程序正确的条件下,关注数据结构和算法,改进效率。

二、实验设备与环境

装有C++语言工具软件(Vs2008)的计算机。

三、实验内容

a)P.98,7.2.1,密钥加密;

b)P.99,7.2.2,密钥解密;

4、实验过程及结果

3.1密钥加密

【实验代码】:

#include

#include

usingnamespacestd;

intmain()

{while

(1){

charkey[100],data[101];

cin.getline(key,100);

cin.getline(data,100);

cout<

inti=0,j=0;

for(i=0;i

for(j=0;j

if(i>=strlen(data))

break;

data[i]+=key[j]-'0';

if(data[i]>122)

data[i]=data[i]-123+32;

i++;

}

i-=1;

}

cout<

}

return0;

}

【输入】:

4972863

Theresultof3and2isnot8

123

Helloworld

【输出】:

3.2密钥解密

【实验代码】:

#include

#include

usingnamespacestd;

intmain()

{

while

(1){

charkey[100],data[101];

cin.getline(key,100);

cin.getline(data,100);

cout<

cout<

inti=0,j=0;

for(i=0;i

for(j=0;j

if(i>=strlen(data))

break;

data[i]-=key[j]-'0';

if(data[i]<32)

data[i]=data[i]-32+123;

i++;

}

i-=1;

}

cout<

}

return0;

}

【输入】:

4972863

xql”zkvyu“wl#7)hpl”5$rx”vuw$A

123

Igomq#Xqumf

【输出】:

五,实验小结:

通过本次实验,对加密解密有一定的了解,密钥加密就是将密钥数字串值循环加到明文上,使得明文不可阅读,解密就是加密的反过程。

实验中,遇到一些问题,字符串的读入和输出以及循环表达式的设计,通过查阅资料和上网查阅,最后算是解决问题。

实验四、数字算法实验

一、实验目的

1、重视数学方法,提高数学推算和编程表的转换能力。

2、拓展编程表达的方法,熟练运用函数等手段进行计算模块的分离计算。

3、进一步学会使用c++标准库;

4、在保证编程程序正确的条件下,关注数据结构和算法,改进效率。

二、实验设备与环境

装有C++语言工具软件(Vs2008)的计算机。

三、实验内容

a)P.102,7.3.1,n!

的位数;

b)P.103,7.3.2,排列对称串;

c)P.103,7.3.3,勒让德多项式表;

d)P.104,7.3.4,立方数和连续奇数和;

4、实验过程及结果

4.1n!

的位数

【基本描述】:

针对每个非负整数n,计算n!

的位数

【输入描述】:

输入数据中含有一些整数n(0<=n<10^7)

【输出描述】:

根据每个整数n,输出n!

的位数,每个数占独立一行。

【主要代码】:

#include

#include

usingnamespacestd;

intmain()

{

doubleN,logV;

inti;

while(cout<<"输入N的值:

"&&cin>>i)

{

N=i;

for(i=1,logV=0;i<=N;i++)

{

logV+=log(1.0*i);

}

logV/=log(10.0);

cout<

的位数:

"<<(int)(logV+1)<

}

return0;

}

【输入】:

56

【输出】:

4.2排列对称串

【基本描述】:

一些字串,有些是对称的,有些是不对称的。

请将那些对称的字串按从小到大的顺序输出。

字串先以长度论大小,如果长度相同,再以ASCII码值大小为标准。

【输入描述】:

输入数据中含有一些字串(1<=串长<=256)

【输出描述】:

根据每个字串,输出对称的那些串,并且要求按从小到大的顺序输出。

【代码如下】:

#include

#include

#include

#include

#include

usingnamespacestd;

boolComp(conststring&s1,conststring&s2)

{

returns1.length()!

=s2.length()?

s1.length()

s1

}

intmain(intargc,char*argv[])

{

vectorv;

stringt,s;

while(cin>>s)

{

t=s;

reverse(t.begin(),t.end());

if(t==s)

{

v.push_back(s);

}

if(cin.get()=='\n')

{

break;

}

}

sort(v.begin(),v.end(),Comp);

for(inti=0;i

{

cout<

}

system("pause");

return0;

}

【输入】:

123321

123

321

sdfsdfd

121212

\\dd\\

【输出】:

4.3勒让德多项式表

【基本描述】:

数学poly函数的展开式也称关于x的n阶勒让德多项式,它的递推公式为:

给定x,请计算n阶勒让德多项式的值。

【输入描述】:

输入数据中含有一些浮点数x(0

【输出描述】:

对于每个x,分别计算2阶,3阶,4阶,5阶,6阶的勒让德多项式的值,其每个值的精度为6位小数。

输出时,先列出x的值,保留3位小数精度,然后每输出一个阶值之前,都空出2格,由此一字排开,形成一张多项式表

【代码如下】:

#include

#include

usingnamespacestd;

doublepoly(intn,doublex);

intmain()

{inti=0;

for(doublex;cin>>x;){

if(i==0){

cout<<"xp2(x)p3(x)p4(x)p5(x)p6(x)"<

i=1;

}

cout<

for(inti=2;i<=6;i++){

cout<

}

cout<

}

}

doublepoly(intn,doublex){

if(n==0)

return1;

if(n==1)

returnx;

return((2*n-1)*x*poly(n-1,x)-(n-1)*poly(n-2,x))/n;

}

【输入】:

0.20.30.35

【输出】:

4.4立方数与连续奇数和

【基本描述】:

一个整数的立方数,可以表示为连续奇数的和,例如:

3^3=7+9+11

4^3=13+15+17+19

针对每个正整数n,输出表示其立方数的连续奇数和

【输入描述】:

输入数据中含有一些整数n(1<=n<=100)

【输出描述】:

根据每个整数n,输出其值等于n^3的连续奇数和

【代码如下】:

#include?

?

usingnamespacestd;?

intmain()?

{?

inti,n,j,a[5];?

?

?

cin>>n;?

?

?

for(i=0;i

{?

?

?

?

?

?

?

cin>>a[i];?

}?

?

?

for(i=0;i

{?

?

?

?

?

?

?

intm=a[i]*a[i]-a[i]+1;?

?

?

?

?

?

?

for(j=0;j

{?

?

?

?

?

?

?

?

?

?

?

cout<

?

?

?

?

?

?

?

?

?

?

m+=2;?

}?

?

?

?

?

?

?

cout<

?

?

}?

?

?

return0;?

}?

【输入】:

348

【输出】:

4.5斐波那契数

【基本描述】:

根据输入数据中的n,输出第n项斐波那契数。

【输入描述】:

输入数据中含有一些整数n(0<=n<=46)

【输出描述】:

根据每个整数n,输出其第n项斐波那契数,每个数独占一行。

【代码如下】:

#include

#include

usingnamespacestd;

intmain(){

intn;

vectorv;

v.push_back(0);

v.push_back

(1);

for(intk=2;k<=46;++k)

v.push_back(v[k-1]+v[k-2]);

while(cin>>n)

cout<

return0;

}

【输入】:

5678940

【输出】:

五,实验小结:

本次试验第一,三,五题均使用递归算法,即程序自己调用自己的编程技巧。

在使用递归时,要有递归边界条件,递归前进段和递归返回段。

当边界条件不满足时,递归前进,当边界条件满足时,递归返回。

应该熟练掌握递归算法的用法。

第二题中,排序比较函数的具体方法是,判断参与比较的没两个字符串的长度是否相等,若不相等则按长度从小到大的顺序返回;若相等则以ASCII码值为排序标准,即按字符串从小到大排序。

第四题中,立方数表示为连续的奇数和。

n个连续的奇数,假设第一个奇数为x,那么第n个奇数就是x+(2n-2)?

n个连续奇数的和就等于x+(x+2)+...+(x+(2n-2))=(x+n-1)*n。

正整数n的立方可以表示为n个连续奇数的和?

就可以变成?

n*n*n=(x+n-1)*n->n*n=x+n-1->x=n*n-n+1?

实验五、大数运算算法实验

一、实验目的

1、重视数学方法,提高数学推算和编程表的转换能力。

2、拓展编程表达的方法,熟练运用函数等手段进行计算模块的分离计算。

3、进一步学会使用c++标准库;

4、在保证编程程序正确的条件下,关注数据结构和算法,改进效率。

二、实验设备与环境

装有C++语言工具软件(Vs2008)的计算机。

三、实验内容

a)P.106,7.4.2,大数加;

b)P.107,7.4.3,大数和;

c)P.109,7.5.1,大数乘;

4、实验过程及结果

5.1大数加

【基本描述】:

给定一些大数,把它们加起来。

【输入描

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2