实验1
一、实验目的
1.熟悉C++程序的集成开发环境;
2.学习新建和打开控制台应用程序的方法; 3.掌握简单数据运算,以及输入与输出方法。 二、实验任务
1.输入一摄氏温度,输出显示所转换的华氏温度。 (提示:摄氏温度=(华氏温度-32)×5/9) 2.画出一头威武雄壮的雄狮。 ,%%%%%% ,%%/\\%%%%/\\% ,%%%\\c \"\" J/%%% %. %%%%/ o o \\%%% `%%. %%%% _ |%% `%% `%%%%(__Y__)% |
\\\\ / \\ | | \\\\/ ) | |
\\ /_ | |__ (___________)))))))
三、实验结果(源程序 + 注释) 1. 源程序
#include double a,b; cout<<\"请输入一摄氏温度:\"< cout<<\"转换的华氏温度为:\"<} 2. 源程序 #include using namespace std; void main() { cout<<\" ,%%%%%% \"< 一、实验目的 1.掌握对一般数据的输入和输出格式控制方法; 2.掌握对实型数据输出形式的设置和小数位数的控制方法; 3.了解数据输入的相关注意事项。 二、实验任务 1. 键盘输入某台计算机的编号和该计算机的价格,并输出这些信息。 要求:编号为11位数字构成,如;价格含有小数部分,如元;输出的编号只是由数字组成,不应该出现小数点等非数字符号。 2. 有一种加密方法是用原来字母的第n个字母代替原来的宁母。例如把A 用其后第4个字母E来替代。现在有一密文内容为wigvix,编程求出它的原文是什么(提示:可根据上述加密原理,使用若干字符型变量来实现)。 3. 编程实现:在计算机的提示下输入某学生的学号、英语成绩、高等数学成绩、线性代数成绩,计算得出三门课程平均成绩,并按如下格式输出显示。 成绩单 学 号 **************************************** 科 目 成 绩 ----------------------------------------------------------------- 英 语 85 高等数学 90 线性代数 **************************************** 平均成绩 三、实验结果(源程序 + 注释) 1. 源程序 #include cout<<\"请输入某台计算机的编号和该计算机的价格:\"< cin>>a>>b; (11); cout<<\"该计算机的编号和价格分别为:\"< { char c1,c2,c3,c4,c5,c6; cout<<\"请输入密码内容:\"< 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<<\"原文是:\"< 一、实验目的 1. 掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路和方法; 2. 掌握简单分支程序设计,以及if和if-else语句的使用方法。 二、实验任务 x(x1)1. 已知一函数y2x1(1x10),输入x的值,求解并输出相应的y值。 3x11(x10)2. 求一元二次方程ax2+bx+c=0的根,其中a、b、c为实数,由键盘输入。 三、实验结果(源程序 + 注释) 1. 源程序 #include cout<<\"请输入x的值:\"< y=x; if(x>=1&&x<10) } 2. y=2*x-1; if(x>=10) y=3*x-11; cout<<\"输出相应的y值为:\"< #include { double a,b,c,delta,x,x1,x2; cout<<\"求一元二次方程ax2+bx+c=0的根\"< cout<<\"一元二次方程无实根\"< if(delta==0) { x=-b/(2*a); cout<<\"一元二次方程ax2+bx+c=0的根为a:\"<<\"x1=x2=\"< { x1=(-b-sqrt(delta))/(2*a); x2=(-b+sqrt(delta))/(2*a); cout<<\"一元二次方程ax2+bx+c=0的根为:\"<<\"x1=\"< 一、实验目的 1.掌握多路分支结构的程序设计,以及switch语句的使用方法; 2.学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化 情况。 二、实验任务 1.某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。具体标准见下表: 批 发 商 零 售 商 数量(个) 50~200 200以上 单位价格(元/个) 10 8 数量(个) 1~20 20~40 40~50 单位价格(元/个) 18 15 12 要求编写一程序,输入客户购买产品的数量,输出客户类型(批发或零售客户)、产品单价及应付的总额。 2. 给学生写评语,需将学生的考试成绩由百分制转换为5级制,标准为: 等级 分数段 A 95. - 100分 B 85.-94.分 C 75.-84.分 D 60.-74.分 E 60.分以下 3. 输入年号y和月份m, 输出y年的m月有多少天。 三、实验结果(源程序 + 注释) 1. 源程序 #include { int x,y; cout<<\"请输入客户购买产品的数量:\"< { case 0: case 1: cout<<\"客户类型为零售商,产品单价为18元/个,应付的总额 为:\"<<18*x< cout<<\"客户类型为零售商,产品单价为15元/个,应付的总额 为:\"<<15*x< cout<<\"客户类型为零售商,产品单价为12元/个,应付的总额 为:\"<<12*x< if(50<=x&&x<200) cout<<\"客户类型为批发商,产品单价为10元/个,应付的总额 为:\"<<10*x< cout<<\"客户类型为批发商,产品单价为8元/个,应付的总额 为:\"<<8*x< cout<<\"请输入一学生的考试成绩:\"< { case 20: case 19: cout<<\"该学生的考试成绩等级为A:\"< cout<<\"该学生的考试成绩等级为B:\"< case 15: } 3. 源程序 #include cout<<\"请输入输入年号y和月份m:\"< cout<<\"该学生的考试成绩等级为C:\"< cout<<\"该学生的考试成绩等级为D:\"< cout<<\"该学生的考试成绩等级为E:\"< switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: } if(m==2) { if((y%4==0&&y%100!=0)||(y%100==0&&y%400==0)) cout< cout< 实验5 一、实验目的 1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方 法; 2.掌握循环结构的程序设计,以及while、do-while和for循环语句的使 用方法。 二、实验任务 π1111.计算=1-+-+…直到最后一项小于10-6。 43572.编程实现阿基里德算法求解两个整数的最大公约数和最小公倍数。 ( 提示:设两个整数m、n(m>=n),用m除以n,求得余数q。 若q为零,n即为所求的最大公约数; 若q不为零,则更新除数和被除数(n→m,q →n)再做除法,直 至余数q为零止。这时,相应的n即为所求的最大公约数。 而最小大公倍数=原始m与n值的乘积/最大公约数。 ) 3. 编程实现十进制整数和二进制整数之间的转换。 三、实验结果(源程序 + 注释) 1. 源程序 #include double n=1,j=1,k=0,pi=0; } 2. 源程序 #include do{k=k+j; n=n+2; i=-i; j=i/n; }while(j>=||j<=; pi=4*k; cout<<\"π/4=\"< { int m,n,q,i,j,k; cout<<\"请输入两个整数:\"< cout<<\"所求的最大公约数为:\"< do{ i=j; j=q; q=i%j; }while(q!=0); k=(m*n/j); cout<<\"所求的最大公约数为:\"< #include { int i=10,j=1,m,n=0; cout<<\"请输入一个二进制整数:\"< do{n+=j*(m%i); m/=i; j*=2; }while(m!=0); } cout <<\"转换为十进制整数是:\"< 一、实验目的 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 5 4444 333 22 1 三、实验结果(源程序 + 注释) 1. 源程序 #include { int m,n,x,y,k=0; cout<<\"请输入两个不等的整数:\"< cout<<\"它们之间的所有素数为:\"< {for(y=2;y<=x-1;y++) if(x%y==0)break; if(x==y) {cout<<\" \"< } 2. if(k%5==0) cout<<\"\\n\";} } 源程序 #include char ch; int i=0,ch_num=0,odd_num=0,even_num=0; cout<<\"请输入一行字符:\"< 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<<\"输入的字符总个数为:\"<源程序 #include 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--\"<\"<<\"C--\"< 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< if(j<=a-i) cout< cout< 一、实验目的 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 { int i,j,t,n,m,a[100],b[100]; cout<<\"请输入数组a中数字的个数:\"; cin>>n; cout<<\"请输入数组a的\"< for(i=0;i {t=a[i];a[i]=a[j];a[j]=t;} cout<<\"数组从小到大排列为:\"< cout< cout<<\"请输入数组b的\"< for(i=0;i {t=b[i];b[i]=b[j];b[j]=t;} cout<<\"数组b从小到大排列为:\"< #include void main(void) { int i,j,t,n,m,a[100],b[100]; cout<<\"请输入数组a中元素的个数:\"; cin>>n; cout<<\"请输入数组a的\"< for(i=0;i {t=a[i];a[i]=a[j];a[j]=t;} cout<<\"数组a的元素从小到大排列为:\"< cout<<\"请输入数组b的\"< for(i=0;i {t=b[i];b[i]=b[j];b[j]=t;} cout<<\"数组b的元素从小到大排列为:\"< for(ia=0;ia c[ic++]=a[ia]; else {c[ic++]=b[ib]; if(a[ia]!=b[ib]) ia--; ib++;} if(ib for(;ib cout<<\"合并后的数组c为:\"< #include { int i,j,t,n,m,a[100],b[100]; cout<<\"请输入数组a中元素的个数:\"; cin>>n; cout<<\"请输入数组a的\"< for(i=0;i {t=a[i];a[i]=a[j];a[j]=t;} cout<<\"数组a的元素从小到大排列为:\"< cout<<\"请输入数组b的\"< for(i=0;i {t=b[i];b[i]=b[j];b[j]=t;} cout<<\"数组b的元素从小到大排列为:\"< {for(ia=0;ia c[ic++]=a[ia]; else {c[ic++]=b[ib]; if(a[ia]!=b[ib]) ia--; ib++;} if(ib cout<<\"合并后的数组c为:\"< ave=sum/(n+m); cout<<\"数组c元素的平均值为:\"< for(i=0;i cout< 一、实验目的 1.掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。 二、实验任务 1. 使用插入排序法将键盘输入的无序数列按升序排列。 思路分析与算法: 1) 2) 3) 4) 5) 从第一个元素开始,该元素可以认为已经被排序。 取出下一个元素,在已经排序的元素序列中从后向前扫描。 如果该元素(已排序)大于新元素,将该元素移到下一位置。 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。 将新元素插入到该位置中。 6) 重复步骤2。 2.选举猴王问题:N 只猴子围成一圈,顺序编号1至N。从编号为1的猴子开始依次报数,报数m 的猴子就退出圈子,接着再报,报数m 的猴子再退出圈子,依次继续下去,圈子最后所剩的一只猴子为猴王,它原先的编号是几 思路分析与算法: 1) 使用一维数组存放猴子从1到n的编号,定义参加选举猴王的最多猴子数为40。 2) i为每次循环时计数变量,k为按1,2,3,…m报数时的计数变量,t表示退出的猴子数。依次将退出的猴子对应的数组元素置0,直到只剩下一只猴子。 3) 三、实验结果(源程序 + 注释) 1. 源程序 #include { const int N=100; int a[N],t,i,j,n; cout<<\"请输入数据的个数:\"; 找出数组中不为0的a[i],输出该数。 cin>>n; cout<<\"请输入有\"< if(a[0]>a[1]) { t=a[0];a[0]=a[1];a[1]=t;} for(i=2;i cout<<\"原数列按升序排列为:\"< if(jfor(int k=i;k>=j;k--) a[k]=a[k-1]; a[j]=t; } } 2