}
实验3
教学班级:
学生学号:
学生:
实验日期:
2014年3月2日实验地点:
(机房)
指导教师签名:
__________实验成绩:
___________
一、实验目的
1.掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路和方法;
2.掌握简单分支程序设计,以及if和if-else语句的使用方法。
二、实验任务
1.已知一函数
,输入x的值,求解并输出相应的y值。
2.求一元二次方程ax2+bx+c=0的根,其中a、b、c为实数,由键盘输入。
三、实验结果(源程序+注释)
1.
源程序
#include
usingnamespacestd;
voidmain()
{doublex,y;
cout<<"请输入x的值:
"<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值为:
"<}
2.
源程序
#include
#include
usingnamespacestd;
voidmain()
{doublea,b,c,delta,x,x1,x2;
cout<<"求一元二次方程ax2+bx+c=0的根"<cout<<"请输入a,b,c的值:
"<cin>>a>>b>>c;
delta=b*b-4*a*c;
if(delta<0)
cout<<"一元二次方程无实根"<else
if(delta==0)
{x=-b/(2*a);
cout<<"一元二次方程ax2+bx+c=0的根为a:
"<<"x1=x2="<if(delta>0)
{x1=(-b-sqrt(delta))/(2*a);
x2=(-b+sqrt(delta))/(2*a);
cout<<"一元二次方程ax2+bx+c=0的根为:
"<<"x1="<}
实验4
教学班级:
学生学号:
学生:
实验日期:
2014年3月3日实验地点:
(机房)
指导教师签名:
__________实验成绩:
___________
一、实验目的
1.掌握多路分支结构的程序设计,以及switch语句的使用方法;
2.学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化
情况。
二、实验任务
1.某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。
具体标准见下表:
批发商
零售商
数量(个)
单位价格(元/个)
数量(个)
单位价格(元/个)
50~200
10
1~20
18
200以上
8
20~40
15
40~50
12
要求编写一程序,输入客户购买产品的数量,输出客户类型(批发或零售客户)、产品单价及应付的总额。
2.给学生写评语,需将学生的考试成绩由百分制转换为5级制,标准为:
等级分数段
A95.-100分
B85.-94.分
C75.-84.分
D60.-74.分
E60.分以下
3.输入年号y和月份m,输出y年的m月有多少天。
三、实验结果(源程序+注释)
1.
源程序
#include
usingnamespacestd;
voidmain()
{intx,y;
cout<<"请输入客户购买产品的数量:
"<cin>>x;
y=x/10;
switch(y)
{case0:
case1:
cout<<"客户类型为零售商,产品单价为18元/个,应付的总额为:
"<<18*x<case2:
case3:
cout<<"客户类型为零售商,产品单价为15元/个,应付的总额为:
"<<15*x<case4:
cout<<"客户类型为零售商,产品单价为12元/个,应付的总额为:
"<<12*x<}
if(50<=x&&x<200)
cout<<"客户类型为批发商,产品单价为10元/个,应付的总额为:
"<<10*x<if(x>=200)
cout<<"客户类型为批发商,产品单价为8元/个,应付的总额为:
"<<8*x<}
2.
源程序
#include
usingnamespacestd;
voidmain()
{inta,b;
cout<<"请输入一学生的考试成绩:
"<cin>>a;
b=a/5;
switch(b)
{case20:
case19:
cout<<"该学生的考试成绩等级为A:
"<case18:
case17:
cout<<"该学生的考试成绩等级为B:
"<case16:
case15:
cout<<"该学生的考试成绩等级为C:
"<case14:
case13:
case12:
cout<<"该学生的考试成绩等级为D:
"<default:
cout<<"该学生的考试成绩等级为E:
"<}
}
3.
源程序
#include
usingnamespacestd;
voidmain()
{inty,m;
cout<<"请输入输入年号y和月份m:
"<cin>>y>>m;
switch(m)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
cout<"<case4:
case6:
case9:
case11:
cout<"<}
if(m==2)
{if((y%4==0&&y%100!
=0)||(y%100==0&&y%400==0))
cout<"<else
cout<"<}
}
实验5
教学班级:
学生学号:
学生:
实验日期:
2014年4月日实验地点:
(机房)
指导教师签名:
__________实验成绩:
___________
一、实验目的
1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方法;
2.掌握循环结构的程序设计,以及while、do-while和for循环语句的使用方法。
二、实验任务
1.计算
=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
usingnamespacestd;
voidmain()
{inti=1;
doublen=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="<cout<<"π="<}
2.
源程序
#include
usingnamespacestd;
voidmain()
{intm,n,q,i,j,k;
cout<<"请输入两个整数:
"<cin>>m>>n;
i=m;
j=n;
q=i%j;
if(q==0)
cout<<"所求的最大公约数为:
"<if(q!
=0)
do{i=j;
j=q;
q=i%j;
}while(q!
=0);
k=(m*n/j);
cout<<"所求的最大公约数为:
"<cout<<"所求的最小公倍数为:
"<}
3
源程序
#include
usingnamespacestd;
voidmain()
{inti=10,j=1,m,n=0;
cout<<"请输入一个二进制整数:
"<cin>>m;
do{n+=j*(m%i);
m/=i;
j*=2;
}while(m!
=0);
cout<<"转换为十进制整数是:
"<}
实验6
教学班级:
学生学号:
学生:
实验日期:
2014年4月2日实验地点:
(机房)
指导教师签名:
__________实验成绩:
___________
一、实验目的
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
#include
usingnamespacestd;
voidmain()
{intm,n,x,y,k=0;
cout<<"请输入两个不等的整数:
"<cin>>n>>m;
cout<<"它们之间的所有素数为:
"<for(x=n;x<=m;x++)
{for(y=2;y<=x-1;y++)
if(x%y==0)break;
if(x==y)
{cout<<""<k=k+1;
if(k%5==0)
cout<<"\n";}
}
}
2.
源程序
#include
usingnamespacestd;
#include
voidmain()
{
charch;
inti=0,ch_num=0,odd_num=0,even_num=0;
cout<<"请输入一行字符:
"<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;
elseodd_num+=1;
}
}
cout<<"输入的字符总个数为:
"<
cout<<"其中英文字符个数为:
"<cout<<"奇数个数为:
"<cout<<"偶数个数为:
"<}
3.
源程序
#include
usingnamespacestd;
voidmain()
{chari,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--"<
}
4.
源程序
#include
#include
usingnamespacestd;
voidmain()
{inti,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<
else
cout<
cout<for(i=1;i<=a-1;i++)
{for(j=1;j<=a-1;j++)
if(j<=a-i)
cout<else
cout<<"";
cout<}
实验7
教学班级:
学生学号:
学生:
实验日期:
2014年4月2日实验地点:
(机房)
指导教师签名:
__________实验成绩:
___________
一、实验目的
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
usingnamespacestd;
voidmain(void)
{inti,j,t,n,m,a[100],b[100];
cout<<"请输入数组a中数字的个数:
";
cin>>n;
cout<<"请输入数组a的"<"<for(i=0;i