西南交通大学计算机程序设计基础(C++)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西南交通大学C++实验报告
计算机程序设计基础(C++)
实验1
一、实验目的
1.熟悉C++程序的集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.掌握简单数据运算,以及输入与输出方法。

二、实验任务
1.输入一摄氏温度,输出显示所转换的华氏温度。

(提示:摄氏温度=(华氏温度-32)×5/9)
2.画出一头威武雄壮的雄狮。

,%%%%%%
,%%/\%%%%/\%
,%%%\c "" J/%%%
%. %%%%/ o o \%%%
`%%. %%%% _ |%%
`%% `%%%%(__Y__)%
// ;%%%%`\-/%%%'
(( / `%%%%%%%'
\\ .' |
\\ / \ | |
\\/ ) | |
\ /_ | |__
(___________)))))))
三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void main()
{
double a,b;
cout<<"请输入一摄氏温度:"<<endl;
cin>>a;
b=a*9/5+32;
cout<<"转换的华氏温度为:"<<b<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{
cout<<" ,%%%%%% "<<endl;
cout<<" ,%%/\%%%%/\% "<<endl;
cout<<" ,%%%\c "" J/%%% "<<endl;
cout<<"%. %%%%/ o o \%%% "<<endl;
cout<<"`%%. %%%% _ |%% "<<endl;
cout<<" `%% `%%%%(__Y__)% "<<endl;
cout<<" // ;%%%%`\-/%%%' "<<endl;
cout<<"(( / `%%%%%%%' "<<endl;
cout<<" \\ .' | "<<endl;
cout<<" \\ / \ | | "<<endl;
cout<<" \\/ ) | | "<<endl;
cout<<" \ /_ | |__ "<<endl;
cout<<" (___________))))))) "<<endl;
}
实验2
一、实验目的
1.掌握对一般数据的输入和输出格式控制方法;
2.掌握对实型数据输出形式的设置和小数位数的控制方法;
3.了解数据输入的相关注意事项。

二、实验任务
1. 键盘输入某台计算机的编号和该计算机的价格,并输出这些信息。

要求:编号为11位数字构成,如10987654321;价格含有小数部分,如
998.0元;输出的编号只是由数字组成,不应该出现小数点等非数字符号。

2. 有一种加密方法是用原来字母的第n个字母代替原来的宁母。

例如把A
用其后第4个字母E来替代。

现在有一密文内容为wigvix,编程求出它
的原文是什么?(提示:可根据上述加密原理,使用若干字符型变量来实
现)。

3.编程实现:在计算机的提示下输入某学生的学号、英语成绩、高等数学成
绩、线性代数成绩,计算得出三门课程平均成绩,并按如下格式输出显示。

成绩单
学号20100002
****************************************
科目成绩
-----------------------------------------------------------------
英语85
高等数学90
线性代数88.5
****************************************
平均成绩87.8
三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void main()
{ double a,b;
cout<<"请输入某台计算机的编号和该计算机的价格:"<<endl;
cin>>a>>b;
cout.precision(11);
cout<<"该计算机的编号和价格分别为:"<<endl;
cout<<a<<" "<<b<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{ char c1,c2,c3,c4,c5,c6;
cout<<"请输入密码内容:"<<endl;
cin>>c1>>c2>>c3>>c4>>c5>>c6;
c1=c1-4;
c2=c2-4;
c3=c3-4;
c4=c4-4;
c5=c5-4;
c6=c6-4;
cout<<"原文是:"<<endl;
cout<<c1<<c2<<c3<<c4<<c5<<c6<<endl;
}
3.
源程序
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{ float score1,score2,score3,average;
cout<<"请输入三门课程的成绩"<<endl;
cin>>score1>>score2>>score3;
average=(score1+score2+score3)/3;
cout<<"成绩单"<<endl;
cout<<"学号 20100002"<<endl;
cout<<"****************************************"<<endl; cout<<"科目"<<setw(16)<<"成绩"<<endl;
cout<<"----------------------------------------"<<endl; cout<<"英语"<<setw(15)<<score1<<endl;
cout<<"高等数学"<<setw(11)<<score2<<endl;
cout<<"线性代数"<<setw(12)<<score3<<endl;
cout<<"****************************************"<<endl; cout<<fixed;
cout.precision(1);
cout<<"平均成绩"<<setw(12)<<average<<endl;
}
实验3
一、实验目的
1. 掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路和方法;
2. 掌握简单分支程序设计,以及if 和if-else 语句的使用方法。

二、实验任务
1. 已知一函数⎪⎩
⎪⎨⎧>=-<<=-<=)10(113)101(12)1(x x x x x x y ,输入x 的值,求解并输出相应的y 值。

2. 求一元二次方程ax2+bx+c=0的根,其中a 、b 、c 为实数,由键盘输入。

三、实验结果(源程序 + 注释)
1.
源程序
#include <iostream>
using namespace std;
void main()
{ double x,y;
cout<<"请输入x的值:"<<endl;
cin>>x;
if(x<1)
y=x;
if(x>=1&&x<10)
y=2*x-1;
if(x>=10)
y=3*x-11;
cout<<"输出相应的y值为:"<<y<<endl;
}
2.
源程序
#include<iostream>
#include<cmath>
using namespace std;
void main()
{ double a,b,c,delta,x,x1,x2;
cout<<"求一元二次方程ax2+bx+c=0的根"<<endl;
cout<<"请输入a,b,c的值:"<<endl;
cin>>a>>b>>c;
delta=b*b-4*a*c;
if(delta<0)
cout<<"一元二次方程无实根"<<endl;
else
if(delta==0)
{ x=-b/(2*a);
cout<<"一元二次方程ax2+bx+c=0的根为a:"<<"x1=x2="<<x<<endl;} if(delta>0)
{ x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"一元二次方程ax2+bx+c=0的根为:"<<"x1="<<x1<<"
"<<"x2="<<x2<<endl;}
}
实验4
一、实验目的
1.掌握多路分支结构的程序设计,以及switch语句的使用方法;
2.学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化
情况。

二、实验任务
1.某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购
要求编写一程序,输入客户购买产品的数量,输出客户类型(批发或零售客户)、产品单价及应付的总额。

2. 给学生写评语,需将学生的考试成绩由百分制转换为5级制,标准为:
等级分数段
A 95. - 100分
B 85.-94.分
C 75.-84.分
D 60.-74.分
E 60.分以下
3. 输入年号y和月份m, 输出y年的m月有多少天。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void main()
{ int x,y;
cout<<"请输入客户购买产品的数量:"<<endl;
cin>>x;
y=x/10;
switch(y)
{ case 0:
case 1:
cout<<"客户类型为零售商,产品单价为18元/个,应付的总额为:"<<18*x<<endl;break;
case 2:
case 3:
cout<<"客户类型为零售商,产品单价为15元/个,应付的总额为:"<<15*x<<endl;break;
case 4:
cout<<"客户类型为零售商,产品单价为12元/个,应付的总额为:"<<12*x<<endl;break;
}
if(50<=x&&x<200)
cout<<"客户类型为批发商,产品单价为10元/个,应付的总额为:"<<10*x<<endl;
if(x>=200)
cout<<"客户类型为批发商,产品单价为8元/个,应付的总额为:"<<8*x<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{ int a,b;
cout<<"请输入一学生的考试成绩:"<<endl;
cin>>a;
b=a/5;
switch(b)
{ case 20:
case 19:
cout<<"该学生的考试成绩等级为A:"<<endl;break;
case 18:
case 17:
cout<<"该学生的考试成绩等级为B:"<<endl;break;
case 16:
case 15:
cout<<"该学生的考试成绩等级为C:"<<endl;break;
case 14:
case 13:
case 12:
cout<<"该学生的考试成绩等级为D:"<<endl;break;
default:
cout<<"该学生的考试成绩等级为E:"<<endl;
}
}
3.
源程序
#include<iostream>
using namespace std;
void main()
{ int y,m;
cout<<"请输入输入年号y和月份m:"<<endl;
cin>>y>>m;
switch(m)
{ case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
cout<<y<<"年的"<<m<<"月有31天:"<<endl;break ; case 4:
case 6:
case 9:
case 11:
cout<<y<<"年的"<<m<<"月有30天:"<<endl;break ; }
if (m==2)
{ if ((y%4==0&&y%100!=0)||(y%100==0&&y%400==0))
cout<<y<<"年的"<<m<<"月有29天:"<<endl;
else
cout<<y<<"年的"<<m<<"月有28天:"<<endl;
}
}
实验5
一、实验目的
1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方
法;
2.掌握循环结构的程序设计,以及while 、do-while 和for 循环语句的使用
方法。

二、实验任务
1.计算4π=1-31+51-7
1+…直到最后一项小于10-6。

2.编程实现阿基里德算法求解两个整数的最大公约数和最小公倍数。

( 提示:设两个整数m 、n (m>=n ),用m 除以n ,求得余数q 。

若q 为零,n 即为所求的最大公约数;
若q 不为零,则更新除数和被除数(n →m,q →n )再做除法,直
至余数q 为零止。

这时,相应的n 即为所求的最大公约数。

而最小大公倍数=原始m 与n 值的乘积/最大公约数。


3. 编程实现十进制整数和二进制整数之间的转换。

三、实验结果(源程序 + 注释)
1.
源程序
#include<iostream>
using namespace std;
void main()
{ int i=1;
double n=1,j=1,k=0,pi=0;
do{k=k+j;
n=n+2;
i=-i;
j=i/n;
}while(j>=1.0e-6||j<=-1.0e-6);
pi=4*k;
cout<<"π/4="<<k<<endl;
cout<<"π="<<pi<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{ int m,n,q,i,j,k;
cout<<"请输入两个整数:"<<endl;
cin>>m>>n;
i=m;
j=n;
q=i%j;
if(q==0)
cout<<"所求的最大公约数为:"<<j<<endl;
if(q!=0)
do{ i=j;
j=q;
q=i%j;
}while(q!=0);
k=(m*n/j);
cout<<"所求的最大公约数为:"<<j<<endl;
cout<<"所求的最小公倍数为:"<<k<<endl;
}
3
源程序
#include<iostream>
using namespace std;
void main()
{ int i=10,j=1,m,n=0;
cout<<"请输入一个二进制整数:"<<endl;
cin>>m;
do{n+=j*(m%i);
m/=i;
j*=2;
}while(m!=0);
cout <<"转换为十进制整数是:"<<n<<endl;
}
实验6
一、实验目的
1.掌握循环与选择结构的嵌套的使用方法;
2.掌握嵌套循环的使用方法;
二、实验任务
1. 设计一个程序,求出n-m之间(m>n)的所有素数,要求:每行输出5个。

2. 键盘输入一行字符,统计字符总个数,以及其中的英文字母个数,如果
是数字,则统计它们所构成的数据中,奇数个数和偶数个数分别是多少。

提示:可使用以下程序段,连续输入若干字符直到输入'\n'时停止。

while(1) { ch=getchar(); if(ch=='\n')break;。

}
3. 两个乒乓球队进行比赛,各出3人。

甲队为A、B、C共3人,乙队为X、Y、
Z共3人,并以抽签方式决定比赛名单。

有人向队员打听比赛的名单,A说
他不和X比,C说他不和X、Z比,请给出3对赛手的名单。

4. 用循环结构语句编程并输出下图,其行数有键盘给出。

例如:键盘输入:5,则运行结果如下
1
22
333
4444
555555555
4444
333
22
1
三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{ int m,n,x,y,k=0;
cout<<"请输入两个不等的整数:"<<endl;
cin>>n>>m;
cout<<"它们之间的所有素数为:"<<endl;
for(x=n;x<=m;x++)
{for(y=2;y<=x-1;y++)
if(x%y==0)break;
if(x==y)
{cout<<" "<<x;
k=k+1;
if(k%5==0)
cout<<"\n";}
}
}
2.
源程序
#include<iostream>
using namespace std;
#include<stdio.h>
void main()
{
char ch;
int i=0,ch_num=0,odd_num=0,even_num=0;
cout<<"请输入一行字符:"<<endl;
while(1)
{
ch=getchar();
if(ch=='\n')break;
else
{
i=i+1;
if(ch>='a'&&ch<='z'|| ch>='A'&&ch<='Z')
ch_num+=1;
else
if(ch>='1'&&ch<='9')
if(ch%2==0) even_num+=1;
else odd_num+=1;
}
}
cout<<"输入的字符总个数为:"<<i<<endl;
cout<<"其中英文字符个数为:"<<ch_num<<endl;
cout<<"奇数个数为:"<<odd_num<<endl;
cout<<"偶数个数为:"<<even_num<<endl;
}
3.
源程序
#include<iostream>
using namespace std;
void main()
{ char i,j,k;
for(i='X';i<='Z';i++)
for(j='X';j<='Z';j++)
if(i!=j)
for(k='X';k<='Z';k++)
if(i!=k&&j!=k)
if(i!='X'&&k!='X'&&k!='Z')
cout<<"3对选手的名单为:"<<"A--"<<i<<" "<<"B--"<<j<<" "<<"C--"<<k<<endl;
}
4.
源程序
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{ int i,j,a;
cout<<"请任意输入一个整数:";
cin>>a;
for(i=1;i<=a;i++)
{for(j=1;j<=2*a-1;j++)
if(j<=2*a-1-i)
if(i!=a)
cout<<" ";
else
cout<<i;
else
cout<<i;
cout<<endl;}
for(i=1;i<=a-1;i++)
{for(j=1;j<=a-1;j++)
if(j<=a-i)
cout<<a-i;
else
cout<<" ";
cout<<endl;}
}
实验7
一、实验目的
1.掌握数值型一维数组的使用方法;
2.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。

二、实验任务
1. 对两个无序的数组(其中数组a长度为n,数组b长度m),采用选择法(或起泡法)分别将这两个数组转为有序(元素值从小到大有序)。

要求:a和b 数组长度及其元素均由键盘获取。

2. 将以上任务1构建的两个有序的数组a和b,进行有序合并,即将这两个数组进行合并的过程中其数据始终保持有序。

(提示:数据结构:三个一维数组a,b,c
将a[ia]和b[ib]比较,谁小就把谁放入c[ic](c数组用于存放合并后的数据),
谁放入了c[ic]中谁的下标就加1,同时ic(c中当前存放数据的下
标)加1,如下图所示。


3. 计算以上任务2中c数组元素的平均值,并删除c中所有低于平均值的那些元素。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void main(void)
{ int i,j,t,n,m,a[100],b[100];
cout<<"请输入数组a中数字的个数:";
cin>>n;
cout<<"请输入数组a的"<<n<<"个数:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"数组从小到大排列为:"<<endl;
for(j=0;j<n;j++)
cout<<a[j]<<" ";
cout<<endl;
cout<<"请输入数组b中数字的个数:";
cin>>m;
cout<<"请输入数组b的"<<m<<"个数:"<<endl;
for(i=0;i<m;i++)
cin>>b[i];
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(b[i]>b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
cout<<"数组b从小到大排列为:"<<endl;
for(j=0;j<m;j++)
cout<<b[j]<<" ";
cout<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main(void)
{ int i,j,t,n,m,a[100],b[100];
cout<<"请输入数组a中元素的个数:";
cin>>n;
cout<<"请输入数组a的"<<n<<"个元素:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"数组a的元素从小到大排列为:"<<endl;
for(j=0;j<n;j++)
cout<<a[j]<<" ";
cout<<endl;
cout<<"请输入数组b中元素的个数:";
cin>>m;
cout<<"请输入数组b的"<<m<<"个元素:"<<endl;
for(i=0;i<m;i++)
cin>>b[i];
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(b[i]>b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
cout<<"数组b的元素从小到大排列为:"<<endl;
for(j=0;j<m;j++)
cout<<b[j]<<" ";
cout<<endl;
{int c[200],ia=0,ib=0,ic=0;
for(ia=0;ia<n;ia++)
if(b[ib]>a[ia])
c[ic++]=a[ia];
else
{c[ic++]=b[ib];
if(a[ia]!=b[ib])
ia--;
ib++;}
if(ib<m)
for(;ib<m;ib++)
c[ic++]=b[ib];
cout<<"合并后的数组c为:"<<endl;
for(int i=0;i<ic;i++)
cout<<" "<<c[i];
cout<<endl;}
}
3.
源程序
#include<iostream>
using namespace std;
void main(void)
{ int i,j,t,n,m,a[100],b[100];
cout<<"请输入数组a中元素的个数:";
cin>>n;
cout<<"请输入数组a的"<<n<<"个元素:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
cout<<"数组a的元素从小到大排列为:"<<endl;
for(j=0;j<n;j++)
cout<<a[j]<<" ";
cout<<endl;
cout<<"请输入数组b中元素的个数:";
cin>>m;
cout<<"请输入数组b的"<<m<<"个元素:"<<endl;
for(i=0;i<m;i++)
cin>>b[i];
for(i=0;i<m-1;i++)
for(j=i+1;j<m;j++)
if(b[i]>b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
cout<<"数组b的元素从小到大排列为:"<<endl;
for(j=0;j<m;j++)
cout<<b[j]<<" ";
cout<<endl;
int c[200],ia=0,ib=0,ic=0;
{for(ia=0;ia<n;ia++)
if(b[ib]>a[ia])
c[ic++]=a[ia];
else
{c[ic++]=b[ib];
if(a[ia]!=b[ib])
ia--;
ib++;}
if(ib<m)
for(;ib<m;ib++)
c[ic++]=b[ib];
cout<<"合并后的数组c为:"<<endl;
for(int i=0;i<ic;i++)
cout<<" "<<c[i];
cout<<endl;}
float sum=0.0,ave;
for(i=0;i<n+m;i++)
sum=sum+c[i];
ave=sum/(n+m);
cout<<"数组c元素的平均值为:"<<ave<<endl; cout<<"数组c中大于平均值的元素为:";
for(i=0;i<n+m;i++)
if(c[i]>ave)
cout<<c[i]<<" ";
}
实验8
一、实验目的
1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。

二、实验任务
1. 使用插入排序法将键盘输入的无序数列按升序排列。

思路分析与算法:
1)从第一个元素开始,该元素可以认为已经被排序。

2)取出下一个元素,在已经排序的元素序列中从后向前扫描。

3)如果该元素(已排序)大于新元素,将该元素移到下一位置。

4)重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。

5)将新元素插入到该位置中。

6)重复步骤2。

2.选举猴王问题:N 只猴子围成一圈,顺序编号1至N。

从编号为1的猴子开始依次报数,报数m 的猴子就退出圈子,接着再报,报数m 的猴子再退出圈子,依次继续下去,圈子最后所剩的一只猴子为猴王,它原先的编号是几?
思路分析与算法:
1)使用一维数组存放猴子从1到n的编号,定义参加选举猴王的最
多猴子数为40。

2)i为每次循环时计数变量,k为按1,2,3,…m报数时的计数变量,
t表示退出的猴子数。

依次将退出的猴子对应的数组元素置0,
直到只剩下一只猴子。

3)找出数组中不为0的a[i],输出该数。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{ const int N=100;
int a[N],t,i,j,n;
cout<<"请输入数据的个数:";
cin>>n;
cout<<"请输入有"<<n<<"个整数的无序数列:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
if(a[0]>a[1])
{ t=a[0];a[0]=a[1];a[1]=t;}
for(i=2;i<n;i++)
{ j=0;
while(a[i]>a[j]&&j<=n)
j++;
if(j<i)
{ t=a[i];
for(int k=i;k>=j;k--)
a[k]=a[k-1];
a[j]=t;
}
}
cout<<"原数列按升序排列为:"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
2
源程序
#include<iostream>
using namespace std;
void main()
{ const int N=40;
int n, m, a[N];
int i,j,k;
cout<<"请输入参加选举的猴子总数:";
cin>>n;
cout<<"请输入报数数目:";
cin>>m;
for(i=0;i<n;i++)
a[i]=i+1;
i=0;
j=0;
k=0;
while(k<n-1)
{ if(a[i]!=0) j++;
if(j==m){a[i]=0;j=0;k++;}
i++;
if(i==n) i=0;
}
i=0;
while(a[i]==0) i++;
cout<<"猴王原先的编号是"<<a[i]<<endl; }
实验9
一、实验目的
1.掌握二维数值型数组的使用方法;
2. 掌握string类字符串的使用方法。

二、实验任务
1.自动产生N*N数据(N取值最大不超过100)存入a数组,数据形成规律
如下图示(呈S形),并取出a的下三角形区域数据输出,输出形式如下图所示(呈等腰三角形)。

2. 从键盘上输入任意两个字符串,比较它们是否相同,将它们连接成一个新
的字符串并输出,输出这个新的字符串的有效长度。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
#include<iomanip>
using namespace std;
void main()
{ int a[10][10],i,j,n,k=0;
cout<<"请输入一个数字n:";
cin>>n;
a[0][0]=1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{if(i%2==0)
{a[i+1][0]=a[i][0]+2*n-1;
a[i][j+1]=a[i][j]+1;}
if(i%2!=0)
{a[i+1][0]=a[i][0]+1;
a[i][j+1]=a[i][j]-1;}}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{cout<<setw(6)<<a[i][j];
k++;
if(k%n==0)
cout<<endl;}
for(i=0;i<n;i++)
{cout<<setw(3*(n-1-i))<<" ";
for(j=0;j<=i;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;}
}
2.
源程序
#include<iostream>
#include<string>
using namespace std;
void main()
{ string s1,s2,s;
cout<<"请输入第一个字符串:"<<endl;
getline(cin,s1);
cout<<"请输入第二个字符串:"<<endl;
getline(cin,s2);
if(s1==s2)
cout<<"这两个字符串相同"<<endl;
else
cout<<"这两个字符串不同"<<endl;
s=s1+s2;
cout<<"将它们连接成一个新的字符串为:"<<s<<endl;
cout<<"这个新的字符串的有效长度为:"<<s.size()<<endl;
}
实验10
一、实验目的
1.熟练指针变量的使用,了解其编程技巧。

二、实验任务
1. 使用指针法在的一组数据中,找出其中最大值所在的位置并输出。

2. 使用指针法对一维数组a中的数据按降序排列。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void main()
{ int a[100],i=0,n,j,max,*p;
cout<<"请输入数据的个数:";
cin>>n;
cout<<"请输入一组数据的个数为"<<n<<"的数据:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
max=a[0];
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{ if(a[i]>max)
{p=&a[i];
max=a[i];}
}
cout<<"其中最大值所在的位置为:"<<p<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{ int a[100],i,j,n,*p;
cout<<"请输入一维数组a中的数据的个数:";
cin>>n;
cout<<"请输入数组a:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(p=&a[0];p<&a[n-1-i];p++)
if(*p<*(p+1))
{ *p+=*(p+1);
*(p+1)=*p-*(p+1);
*p-=*(p+1);}
cout<<"数组a中的数据按降序排列为a:"<<endl;
i=0;
for(p=&a[i];i<n;p++,i++)
cout<<*p<<" ";
}
实验11
一、实验目的
1.了解存放常用的系统函数的头文件;
2.掌握常用系统函数的功能和使用方法;
3.掌握返回值的概念和运用。

二、实验任务
1. 编程实现:考察小学一年级学生20以内的加法题(共10题),并按百分制给出最后分数。

说明:程序的已知项为20以内的两个随机整数,输出项为两个整数的加法算式,并根据给出的结果判断正误,正确的得10分。

最后输出学生的总分成绩。

2. 编写两个子函数,分别求两个整数的最大公约数和最小公倍数,并编写主函数调用这两个子函数,输出结果,两个整数由键盘输入。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void main()
{ int a,b,s,i,j=0,score;
cout<<"请完成10道加法题:"<<endl;
for(i=1;i<=10;i++)
{srand(time(NULL));
a=1+rand()%(20-1+1);
b=1+rand()%(20-1+1);
cout<<i<<". "<<a<<"+"<<b<<"=";
cin>>s;
if(s==a+b)
j++;}
score=10*j;
cout<<"该学生的总分成绩为:"<<score<<endl;
}
2.
源程序
#include<iostream>
using namespace std;
void main()
{ int a,b,s,t;
int max(int,int);
int min(int,int);
cout<<"请输入两个整数:"<<endl;
cin>>a>>b;
s=max(a,b);
t=min(a,b);
cout<<"这两个整数的最大公约数为:"<<s<<endl;
cout<<"这两个整数的最小公倍数为:"<<t<<endl;
}
int max(int a,int b)
{ int q,n;
q=a%b;
if(q==0)
n=b;
if(q!=0)
{do{a=b;
b=q;
q=a%b;
}while(q!=0);
n=b;}
return b;
}
int min(int a,int b)
{ int q,i,j,k,n;
i=a;
j=b;
q=i%j;
if(q==0)
n=j;
if(q!=0)
{do{i=j;
j=q;
q=i%j;
}while(q!=0);
n=j;}
k=(a*b/j);
return k;
}
实验12
一、实验目的
1.掌握自定义有返回值函数的概念、定义及使用;
2.掌握自定义void函数的概念、定义及使用;
3.掌握自定义有返回值函数与自定义void函数在定义及使用上的区别;
4.掌握函数参数间的数据传递。

二、实验任务
1. 设计一个程序,用来计算输入的两个整数的加、减、乘、除,每一个计算要单独用一个用户自定义的void函数来实现,接收输入数据也要用void函数来实现,输入数据中不包含0。

2. 自定义子函数功能:采用冒泡法对一组无序的数据按从小到大的顺序排序;主函数的功能:键盘输入n个整数,调用子函数完成对改组数据的有序化,然后输出处理结果。

3. 自定义子函数功能:实现计算n!;主函数的功能:键盘输入n和m (n>0,m>0,n>m),计算p=m!/(m-n)!,并输出p。

三、实验结果(源程序+ 注释)
1.
源程序
#include<iostream>
using namespace std;
void x(int a,int b)
{ cout<<"这两个整数的和为:"<<a+b<<endl;
}
void y(int a,int b)
{ cout<<"这两个整数的差为:"<<a-b<<endl;
}
void u(int a,int b)
{ cout<<"这两个整数的乘积为:"<<a*b<<endl;
}
void v(double a,double b)
{ cout<<"这两个整数的商为:"<<a/b<<endl;
}
void main()
{ int a,b;
cout<<"请输入两个不为0的整数:"<<endl;
cin>>a>>b;
x(a,b);
y(a,b);
u(a,b);
v(a,b);
}
2.
源程序
#include<iostream>
using namespace std;
void F(int a[],int n,int*p);
void main()
{ const int N=100;
int a[N],i,n;
cout<<"请输入整数的个数n:";
cin>>n;
cout<<"请输入"<<n<<"个整数:"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
F(a,n,&a[0]);
cout<<endl;
}
void F(int a[],int n,int*p)
{ int i,j;
a[0]=*p;
for(i=1;i<n;i++)
a[i]=*(p+i);
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{ a[j]=a[j]+a[j+1];
a[j+1]=a[j]-a[j+1];
a[j]-=a[j+1];}
cout<<"数据按从小到大的顺序排序为:"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
}
3.
源程序
#include<iostream>
using namespace std;
void main(void)
{ int m,n,p;
int fact(int);
cout<<"请输入n和m的值(n>0,m>0,n>m):"<<endl;
cin>>n>>m;
p=fact(m)/fact(m-n);
cout<<"p的值为:"<<p<<endl;
}
int fact(int n)
{ int f;
if(n<0) cout<<"n<0,数据错误!"<<endl;
else if(n==0) f=1;
else f=fact(n-1)*n;
return(f);
}。

相关文档
最新文档