江苏科技大学C++试验设计报告.doc
《江苏科技大学C++试验设计报告.doc》由会员分享,可在线阅读,更多相关《江苏科技大学C++试验设计报告.doc(16页珍藏版)》请在冰点文库上搜索。
![江苏科技大学C++试验设计报告.doc](https://file1.bingdoc.com/fileroot1/2023-5/7/4b08cb13-a0f4-408f-8686-629e8e631d90/4b08cb13-a0f4-408f-8686-629e8e631d901.gif)
实
验
报
告
第一题:
从键盘上输入一个整数n的值,按下时求出y的值,并输出n和y的值Y=1!
+2!
+3!
+······+n!
源程序清单:
#include
voidmain()
{
intt=1,n,y=0;
cout<<"n=?
"<<'\n';
cin>>n;
cout<<"n="< for(inti=1;i<=n;i++)
{
t=t*i;
y=y+t;
}
cout<<"y="<}
运行结果:
第二题:
设计一个程序,求出100~10000之间的所有素数。
源程序清单:
#include
#include
voidmain()
{
inti,n,count=0;
for(n=101;n<1000;n++)
{
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i>n-1)
{
cout<count++;
if(count%10==0)cout<}
}
cout<}
运行结果:
第三题:
设计一个程序,输入一个任意整数(1~4位),求出各位数字之和,并统计出位数
源程序清单:
#include
voidmain()
{
intn,k,s=0,t=0;
cout<<"n=?
"< cin>>n;
while(n)
{
k=n%10;
n=n/10;
s=s+k;
t=t+1;
}
cout<
}
运行结果:
第四题:
设计一个程序,计算组合数:
C(m,r)=m!
/(r!
*(m-r)!
),其中m、r为正整数,且m>r。
分别求出C(4,2)、C(6,4)、C(8,7)的值。
要求用函数来实现求阶乘和组合数,在主函数中测试。
源程序清单:
#include
#include
floatf(intn){
if(n<0){
cout<<"n应为正数!
\n";}
floats;
if(n==1||n==0)
return1;
else
s=n*f(n-1);
returns;}
floatc(intm,intr){
if(m cout<<"m不应小于r!
\n";}
returnf(m)/(f(r)*f(m-r));}
voidmain(){
intm,r;
cin>>m>>r;
cout<<"c("<运行结果:
第五题:
设计一个程序,用筛选法求出3~100之间的所有素数,要求每行输出5个素数。
判断一个整数是否为素数应设计一个函数来实现。
源程序清单:
#include
#include
intfun(intn)
{
for(inti=2;i if(n%i==0)return0;
return1;
}
voidmain()
{
intcount=0;
for(inti=3;i<100;i++)
if(fun(i))
{
cout<
count++;
if(count%5==0)cout<<'\n';
}
cout<<'\n';
}
运行结果:
第六题:
把二维数组a赋值给b,并把b中元素的值等于a中对应元素的平方。
源程序清单:
#include
#include
voidmain()
{
inta[3][4],b[3][4],i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
cin>>a[i][j];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[i][j]=a[i][j]*a[i][j];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
cout<
cout<<'\n';
}
}
运行结果:
第七题:
下面的程序求出1000以内的孪生质数的对数(改错题)。
源程序清单:
#include
#include
#include
intisprime(intx)
{
intk,i;
k=(int)sqrt(x);
for(i=2;i<=k;i++)
if(x%i==0)return(0);
return
(1);
}
voidmain()
{
inta[500],count,k=0;
intb[35][2];
for(inti=3;i<1000;i+=2)
if(isprime(i))a[k++]=i;
count=0;
for(i=0;i {
if(a[i+1]-a[i]==2)
{
b[count][0]=a[i];
b[count++][1]=a[i+1];
}
}
for(i=0;i {
if(i%5==0)cout<<'\n';
cout<<'('< }
cout<}
运行结果:
第八题:
有两个字符串,将主字符串中的所有子字符串删去并输出,例如,主字符串为“Thisisaverygoodbook”,子字符串为“book”,结果为“Thisisaverygood”。
源程序清单:
#include
#include
intwithstr(char*s1,char*subs)
{
while(*subs&&*s1==*subs)
{s1++;subs++;}
return!
(*subs);
}
char*delsub(char*s1,char*subs)
{
char*p1,*p2;
intlen=strlen(subs);
p2=p1=s1;
while(*p1)
{
if(withstr(p1,subs))p1+=len;
else*p2++=*p1++;
}
*p2='\0';
returns1;
}
voidmain()
{
charstr1[80]="Thisisaverygoodbook";
charstr2[40]="book";
cout< cout<}
运行结果:
第九题:
设计一个通用函数查询一个带通配符“?
”的字符串在另一个字符串中出现的次数,在主程序中进行测试。
源程序清单:
#include
intfun(char*str,char*sear,int&n){
n=0;
char*s,*f;
for(;*str;str++){
if(*str==*sear||*sear==‘?
’){
s=str; f=sear;
s++; f++;
if(*f==‘?
’){
if(*(f+1)==‘\0’&&*s!
=‘\0’)n++;
else{s++;f++;}
while(*s++==*f++)
if(*f==‘\0’){n++;break; }
}
}
}
returnn;
}
voidmain(){
intn;
charstr[81],s0[10];
cout<<“请输入被查询的字符:
\n”;
cin.getline(str,80);
cout<<“请输入要查询的字符:
\n”;
cin.getline(s0,9);
if(fun(str,s0,n))cout<”;
elsecout<”;
cout<}
运行结果为:
第十题:
定义一个函数,删除一个字符串中所有非数字字符并将剩下的数字字符转化为一个整数。
源程序清单:
#include
#include
char*del(char*str){
for(char*p1=str;*p1;p1++)
if(*p1<'0'||*p1>'9'){
for(char*p2=p1;*p2;p2++)
*p2=*(p2+1);
if(*p1<'0'||*p1>'9')p1--;
}
returnstr;
}
intvale(char*str){
ints=0;
char*p=str+strlen(str)-1;
for(;p>=str;p--)
s=s*10+*p-'0';
returns;
}
voidmain(){
chars[]="3fgh21%$#78UI*";
cout<
cout< cout<}
运行结果为:
第十一题:
已知函数voidstat(char*[3],int&,int*,int*),分别统计3个字符串中所有的数字字符,英文字母及其他字符的数量,编写程序测试该函数。
源程序清单:
#include
voidstat(char*s[3],int&num,int*aphlet,int*other){
inti;
char*p;
num=*aphlet=*other=0;
for(i=0;i<3;i++){
p=s[i];
cout<<"s"<
"<
while(*p){
if(*p>='0'&&*p<='9')num++;
elseif(*p>='A'&&*p<='Z'||*p>='a'&&*p<='z')(*aphlet)++;
else(*other)++;
p++;
}
}
}
voidmain(){
char*s[3]={"1Ab12c/#$&De","(tGkp9h7*cGHd+","Tj^g587dd@fHD%f52nG="};
intn,a,o;
stat(s,n,&a,&o);
cout<<"num="< cout<<"aphlet="< cout<<"other="< }
运行结果为:
第十二题:
建立一个类SUM,求一个二维数组外围各元素之和,并输出数组中各元素所求之和。
具体要求如下:
(1)私有数据成员
intarray[5][5];//二维整型数组
ints;//数组array各外围元素之和
(2)公有成员函数
SUM(intd[5][5]):
构造函数,初始化成员数据
voidprocess():
求二维数组外围元素之和s
voidprint():
输出二维数组(每行输出五个元素)及其外围元素之和
(3)在主程序中对该类进行测试。
使用如下测试数据。
(外围元素是指阴影部分的元素)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
源程序清单:
#include
classSUM{
intarray[5][5];
ints;
public:
SUM(intd[5][5]);
voidprocess();
voidprint();
};
SUM:
:
SUM(intd[5][5]){
for(inti=0;i<5;i++)
for(intj=0;j<5;j++)
array[i][j]=d[i][j];
};
voidSUM:
:
process(){
intt=0,t1=0;
for(inti=0;i<5;i++)
for(intj=0;j<5;j++)
t+=array[i][j];
for(i=1;i<4;i++)
for(intj=0;j<5;j++)
t1+=array[i][j];
s=t+t1;
};
voidSUM:
:
print(){
for(inti=0;i<5;i++){
for(intj=0;j<5;j++)
cout< cout<<'\n';}
cout<<"SUM="<
voidmain(){
intaa[5][5];
inta=1;
for(inti=0;i<5;i++)
for(intj=0;j<5;j++)
aa[i][j]=a++;
SUMss(aa);
ss.process();
ss.print();
}
运行结果:
老师辛苦!
谢谢您!
!