计算机程序设计语言C++实验报告.docx
《计算机程序设计语言C++实验报告.docx》由会员分享,可在线阅读,更多相关《计算机程序设计语言C++实验报告.docx(26页珍藏版)》请在冰点文库上搜索。
计算机程序设计语言C++实验报告
计算机程序设计语言C++
实验报告
班级工商管理
学号20124130
姓名沈栋
指导教师何耀琴
经济管理学院
二O一一年六月
题目1:
输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
#include
usingnamespacestd;
intmain()
{
intn1,n2,n3,i;
for(i=100;i<=999;i++)
{
n1=i/100;
n2=(i%100)/10;
n3=i%10;
if(n1*n1*n1+n2*n2*n2+n3*n3*n3==i)
cout<
}
return0;
}
题目2:
输入一行字符,分别统计出其中英语字母、空格、数字和其他字符的个数
#include
usingnamespacestd;
intmain()
{intl,s,n,o;
cout<<"请输入一行字符"<{
chare;
l=s=n=o=0;
while((e=getchar())!
='\n')
{if((e>='a'&&e<='z')||(e>='A'&&e<='Z'))l++;
elseif(e>='0'&&e<='9')n++;
elseif(e=='')s++;
elseo++;
}
printf("l:
%d\n",l);
printf("s:
%d\n",s);
printf("n:
%d\n",n);
printf("o:
%d\n",o);
}
return0;}
题目3:
输入两个正整数m和n,求其最大公约数和最小公倍数
#include
usingnamespacestd;
intmain()
{
intm,n,a,b,X,Y;
cout<<"输入两个正整数";
cin>>m>>n;
X=m*n;
Y=1;
for(a=m*n;a>=m&&a>=n;a--)
{
if(a%m==0&&a%n==0&&aX=a;
}
for(b=m;b>=1;b--)
{
if(m%b==0&&n%b==0&&b>Y)
Y=b;
}
cout<<"最小公倍数"<cout<<"最大公约数"<return0;
}
题目4:
输出以“*”表示的正金字塔与倒金字塔模型
#include
usingnamespacestd;
voidprint(intn)
{
inti,j;
for(i=1;i<=n;i++)
{for(j=n-1;j>=i;j--)cout<<"";
for(j=1;j<=2*i-1;j++)cout<<"*";
cout<}
}
voidprintstar(intn)
{
inti,j;
for(i=1;i<=n;i++)
{for(j=1;j<=i-1;j++)cout<<"";
for(j=n-1;j>=i;j--)cout<<"**";
cout<<"*";
cout<}
}
intmain()
{
inti,m;
for(i=1;i<=5;i++)
{cin>>m;
print(m);
printstar(m);
}
return0;
}
题目5:
输入十个整数,要求按倒序排列输出
#include
usingnamespacestd;
intmain()
{
voiddaoxu(int*);
inta[10];
cout<<"输入10个数";
inti,*p=a;
for(i=0;i<10;i++)cin>>*(p+i);
cout<daoxu(p);
for(p=a;p<(a+10);p++)cout<<*p<<"";
cout<return0;
}
voiddaoxu(int*p)
{voidswap(int*,int*);
inti;
for(i=0;i<5;i++)swap((p+i),(p+9-i));
}
voidswap(int*p1,int*p2)
{
inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
题目6:
输入5位学生的5门课成绩,要求计算这5位学生的各自5门课平均成绩及所有5位学生的平均成绩,并输出
#include
usingnamespacestd;
intmain()
{
structStudent
{
charname[10];
intscore[5];
floataverage;
};
inti,sum;
Studentstu;
cout<<"输入学生姓名:
";
cin>>stu.name;
cout<<"输入五门课的成绩:
";
for(i=0;i<5;i++)
cin>>stu.score[i];
sum=0;
for(i=0;i<5;i++)
sum+=stu.score[i];
stu.average=(float)sum/5;
cout<inta1=stu.average;
cout<<"输入学生姓名:
";
cin>>stu.name;
cout<<"输入五门课的成绩:
";
for(i=0;i<5;i++)
cin>>stu.score[i];
sum=0;
for(i=0;i<5;i++)
sum+=stu.score[i];
stu.average=(float)sum/5;
cout<inta2=stu.average;
cout<<"输入学生姓名:
";
cin>>stu.name;
cout<<"输入五门课的成绩:
";
for(i=0;i<5;i++)
cin>>stu.score[i];
sum=0;
for(i=0;i<5;i++)
sum+=stu.score[i];
stu.average=(float)sum/5;
cout<inta3=stu.average;
cout<<"输入学生姓名:
";
cin>>stu.name;
cout<<"输入五门课的成绩:
";
for(i=0;i<5;i++)
cin>>stu.score[i];
sum=0;
for(i=0;i<5;i++)
sum+=stu.score[i];
stu.average=(float)sum/5;
cout<inta4=stu.average;
cout<<"输入学生姓名:
";
cin>>stu.name;
cout<<"输入五门课的成绩:
";
for(i=0;i<5;i++)
cin>>stu.score[i];
sum=0;
for(i=0;i<5;i++)
sum+=stu.score[i];
stu.average=(float)sum/5;
cout<inta5=stu.average;
cout<<"所有人平均成绩"<<':
'<<(a1+a2+a3+a4+a5)/5<
return0;
}
题目7:
输入5位学生的5门课成绩,要求输出按由高到低排列的这5位学生的各自5门课平均成绩及所有学生的5门课平均成绩。
#include
#include
usingnamespacestd;
structStudent
{
stringname;
floatscore[5];
floataverage;
};
intmain()
{floattotal_average,temp;
stringc;
Studentstu[5];
inti,j;
stu[0].name="stone";
stu[1].name="eva";
stu[2].name="demon";
stu[3].name="kevin";
stu[4].name="lucy";
for(i=0;i<5;i++)
{cout<<"输入学生"<";
for(j=0;j<5;j++)
{cin>>stu[i].score[j];}
cout<for(i=0;i<5;i++)
{stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3]+stu[i].score[4])/5;}
for(j=0;j<4;j++)
for(i=0;i<4-j;i++)
if(stu[i].average{temp=stu[i].average;stu[i].average=stu[i+1].average;stu[i+1].average=temp;
c=stu[i].name;stu[i].name=stu[i+1].name;stu[i+1].name=c;}
total_average=(stu[0].average+stu[1].average+stu[2].average+stu[3].average+stu[4].average)/5;
cout<<"排序:
"<for(i=0;i<5;i++)
cout<'<cout<<"总平均成绩为:
"<return0;
}
题目8:
给小学生出100道1~99范围内的加减乘除题,如果成绩小于90分则再做100题。
#include
#include
#include
usingnamespacestd;
intmain()
{
inti,x1,x2,x,y,n1,n2;
srand(time(NULL));
cout<<"请输入下面各题的结果:
"<lable:
n1=n2=0;
for(i=1;i<=100;i++)
{
x1=1+rand()%99;x2=1+rand()%99;
x=rand()%4;
switch(x)
{case0:
cout<";
cin>>y;
if(y==x1+x2)
{cout<<"你答对了,继续努力!
"<else
{cout<<"你答错了,认真一点!
"<break;
case1:
if(x1>x2)cout<";
elsecout<";
cin>>y;
if(y==int(fabs(x1-x2)))
{cout<<"你答对了,继续努力!
"<else
{cout<<"你答错了,认真一点!
"<break;
case2:
cout<";
cin>>y;
if(y==x1*x2)
{cout<<"你答对了,继续努力!
"<else
{cout<<"你答错了,认真一点!
"<break;
case3:
cout<";
cin>>y;
if(y==x1/x2)
{cout<<"你答对了,继续努力!
"<else
{cout<<"你答错了,认真一点!
"<break;}
}
if(n1<90)
{cout<<"你成绩太差了,还得罚做100题。
"<return0;}
题目9:
输入积分区域的端点值,输出f1,f2,f3,f4,f5的定积分的值
#include
usingnamespacestd;
doubleintegral(doublea,doubleb,intn,double(*fun)(doublex));
doublef1(doublex)
{doublefun;
fun=1+x;
returnfun;}
doublef2(doublex)
{doublefun;
fun=2*x+3;
returnfun;}
doublef3(doublex)
{doublefun;
fun=(1+x)*(1+x);
returnfun;}
doublef4(doublex)
{doublefun;
fun=x*x*x;
returnfun;}
doublef5(doublex)
{doublefun;
fun=x*x*x+1;
returnfun;}
voidmain()
{doubles1,s2,s3,s4,s5;
doublea,b;
intn;
cout<<"输入积分区域端点值a,b和n";
cin>>a>>b>>n;
s1=integral(a,b,n,f1);
s2=integral(a,b,n,f2);
s3=integral(a,b,n,f3);
s4=integral(a,b,n,f4);
s5=integral(a,b,n,f5);
cout<<"f1的定积分的值"<cout<<"f2的定积分的值"<cout<<"f3的定积分的值"<cout<<"f4的定积分的值"<cout<<"f5的定积分的值"<}
doubleintegral(doublea,doubleb,intn,double(*fun)(doublex))
{
inti;
doubleh,x,f1,f2,s;
h=(b-a)/n;f1=(*fun)(a);x=a;s=0.0;
for(i=1;i<=n;i++)
{x=x+h;f2=(*fun)(x);
s=s+(f1+f2)/2*h;
f1=f2;}
returns;}
题目10:
用自己输入的种子产生100000个随机数并求最大值和最小值;
#include
#include
usingnamespacestd;
voidmain()
{unsignedseed;
longints(-1),n(50000);
for(inti=1;i<=1000000;i++)
{inttemp;
temp=rand();
if(temp>s)s=temp;
if(temp}
cout<<"s="<
cout<<"n="<}
题目11:
模拟100次掷钱币的过程,输出“f”表示此次钱币正面朝上,输出“b”表示此次钱币反面朝上,并统计这100次中,共有多少次正面朝上,多少次反面朝上。
#include
#include
usingnamespacestd;
voidmain()
{
inti,fac(0),back(0),temp;
srand(time(NULL));
for(i=0;i<100;i++)
{temp=rand();
if(temp%2==1){cout<<"f"<<"";fac++;}
else{cout<<"b"<<"";back++;}
}
cout<cout<}
题目12:
编写一个完成n个数排序的函数sort,凡是需要交换两个元素值都调用swap来完成。
分别用指针和引用两种方法做;
#include
usingnamespacestd;
intmain()
{voidsort(int*p);
inta[10];
cout<<"输入10个不同的数:
"<inti,*p=a;
for(i=0;i<10;i++)
cin>>*(p+i);
cout<sort(p);
cout<<"输出新顺序:
"<for(p=a;pcout<<*p<<"";
cout<return0;
}
voidswap(int*p1,int*p2)
{inttemp;
temp=*p1;*p1=*p2;*p2=temp;
}
voidsort(int*p)
{voidswap(int*,int*);
inti,j,s;
for(i=0;i<9;i++)
{s=i;
for(j=i+1;j<10;j++)
if(*(p+j)<*(p+s))s=j;
swap((p+s),(p+i));
}
}
题目13:
写一个求n!
的函数,并通过调用函数求sum=a!
+b!
+c!
。
#include
usingnamespacestd;
intjc(intn);
intmain()
{
intsum,a,b,c;
cout<<"输入a,b,c:
";
cin>>a>>b>>c;
sum=jc(a)+jc(b)+jc(c);
cout<<"sum=a!
+b!
+c!
="<}
intjc(intn)
{ints=1,i=1;
for(i=1;i<=n;i++)
s=s*i;
returns;
}
题目14:
写一个判断素数的函数,并通过调用函数判断2000年至3000年间有哪些是素数年号。
#include
usingnamespacestd;
voidfun(intn)
{
inti;
for(i=2;i<=n;i++)
if(n%i==0)
break;
if(i==n)
cout<}
voidmain()
{
intj;
for(j=2000;j<=3000;j++)
fun(j);
}
题目15:
将汉诺塔程序里三根针用字符‘a’,‘b’,‘c’表示,并统计搬动盘子的次数
#include
usingnamespacestd;
ints=0;
inta,b,c;
voidmovedisk(chartakeoff,charputon)
{cout<"<voidmovetower(charn,chara,charb,charc)
{
if(n>1)
{movetower(n-1,a,c,b);
movedisk(a,b);
movetower(n-1,c,b,a);}
elsemovedisk(a,b);
s=s+1;
}
voidmain()
{intm;
cout<<"inputnumberofdiskplease:
";
cin>>m;
movetower(m,'a','b','c');
cout<<"s="<
}
题目16:
用牛顿迭代法求方程的根
#include
#include
#include
usingnamespacestd;
doublef1(doublex)
{
doubles;
s=x*x*x+2*x*x+3*x+4;
returns;
}
doublef2(doublex)
{
doublet;
t=3*x*x+4*x+3;
returnt;
}
doubleroot(doublex0)
{
doublex,y1,y2;
do
{y1=f1(x);
y2=f2(x);
x=x0-y1/y2;
x0=x;}
while(fabs(y1)>0.00001);
returnx;
}
intmain()
{
doublex,x0;
cin>>x0;
x=root(x0);
cout<return0;
}
题目17:
写一函数验证哥德巴赫猜想
#include
#include
usingnamespacestd;
intmain()
{
voidgodbaha(int);
intn;
cout<<"inputn:
";
cin>>n;
godbaha(n);
return0;
}
voidgodbaha(intn)
{intprime(int);
inta,b;
for(a=3;a<=n/2;a=a+2)
if(prime(a))
{b=n-a;
if(prime(b))
cout<intprime(int