《西南交通大学计算机程序设计基础(C++.docx》由会员分享,可在线阅读,更多相关《西南交通大学计算机程序设计基础(C++.docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上西南交通大学C+实验报告计算机程序设计基础(C+)实验1一、实验目的1熟悉C+程序的集成开发环境;2学习新建和打开控制台应用程序的方法;3掌握简单数据运算,以及输入与输出方法。二、实验任务1输入一摄氏温度,输出显示所转换的华氏温度。 (提示:摄氏温度=(华氏温度-32)5/9)2画出一头威武雄壮的雄狮。 ,% ,%/%/% ,%c J/% %. %/ o o % %. % _ |% % %(_Y_)% / ;%-/% ( / % . | / | | / ) | | /_ | |_ (_)三、实验结果(源程序 + 注释) 1. 源程序#include using nam
2、espace std; void main() double a,b; cout请输入一摄氏温度:a; b=a*9/5+32; cout转换的华氏温度为:bendl; 2源程序#include 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 /
3、 | | endl; cout / ) | | endl; cout /_ | |_ endl; cout (_) endl; 实验2一、实验目的1掌握对一般数据的输入和输出格式控制方法;2掌握对实型数据输出形式的设置和小数位数的控制方法;3了解数据输入的相关注意事项。二、实验任务1. 键盘输入某台计算机的编号和该计算机的价格,并输出这些信息。要求:编号为11位数字构成,如;价格含有小数部分,如998.0元;输出的编号只是由数字组成,不应该出现小数点等非数字符号。2. 有一种加密方法是用原来字母的第n个字母代替原来的宁母。例如把A用其后第4个字母E来替代。现在有一密文内容为wigvix,编程求
4、出它的原文是什么?(提示:可根据上述加密原理,使用若干字符型变量来实现)。3. 编程实现:在计算机的提示下输入某学生的学号、英语成绩、高等数学成绩、线性代数成绩,计算得出三门课程平均成绩,并按如下格式输出显示。成绩单学 号 *科 目 成 绩-英 语 85高等数学 90线性代数 88.5*平均成绩 87.8三、实验结果(源程序 + 注释)1. 源程序#includeusing namespace std;void main() double a,b; cout请输入某台计算机的编号和该计算机的价格:ab; cout.precision(11); cout该计算机的编号和价格分别为:endl; c
5、outa bendl;2. 源程序#includeusing namespace std;void main() char c1,c2,c3,c4,c5,c6; cout请输入密码内容:c1c2c3c4c5c6; c1=c1-4; c2=c2-4; c3=c3-4; c4=c4-4; c5=c5-4; c6=c6-4; cout原文是:endl; coutc1c2c3c4c5c6endl;3.源程序#include#includeusing namespace std;void main() float score1,score2,score3,average; cout请输入三门课程的成绩s
6、core1score2score3; average=(score1+score2+score3)/3; cout成绩单endl; cout学号 endl; cout*endl; cout科目setw(16)成绩endl; cout-endl; cout英语setw(15)score1endl; cout高等数学setw(11)score2endl; cout线性代数setw(12)score3endl; cout*endl; coutfixed; cout.precision(1); cout平均成绩setw(12)averageendl;实验3一、实验目的1. 掌握“处理某一或某些操作只有
7、在特定条件成立的情况下才会被执行”的编程思路和方法;2. 掌握简单分支程序设计,以及if和if-else语句的使用方法。二、实验任务1 已知一函数,输入x的值,求解并输出相应的y值。2 求一元二次方程ax2+bx+c=0的根,其中a、b、c为实数,由键盘输入。三、实验结果(源程序 + 注释)1. 源程序#includeusing namespace std;void main() double x,y; cout请输入x的值:x; if(x=1&x=10) y=3*x-11; cout输出相应的y值为:yendl;2. 源程序#include#includeusing namespace st
8、d;void main() double a,b,c,delta,x,x1,x2; cout求一元二次方程ax2+bx+c=0的根endl; cout请输入a,b,c的值:abc; delta=b*b-4*a*c; if(delta0) cout一元二次方程无实根endl; else if(delta=0) x=-b/(2*a); cout一元二次方程ax2+bx+c=0的根为a:x1=x2=x0) x1=(-b-sqrt(delta)/(2*a); x2=(-b+sqrt(delta)/(2*a); cout一元二次方程ax2+bx+c=0的根为:x1=x1 x2=x2endl;实验4一、实
9、验目的1掌握多路分支结构的程序设计,以及switch语句的使用方法;2学习通过程序调试来跟踪程序运行过程,查看程序运行过程中各个变量的取值变化 情况。二、实验任务1某公司进行产品销售,既零售也批发,零售的价格与批发的价格不同,购买产品数量的多与少其价格也不同。具体标准见下表:批 发 商零 售 商数量(个)单位价格(元/个)数量(个)单位价格(元/个)502001012018200以上8204015405012要求编写一程序,输入客户购买产品的数量,输出客户类型(批发或零售客户)、产品单价及应付的总额。2. 给学生写评语,需将学生的考试成绩由百分制转换为5级制,标准为: 等级 分数段 A 95.
10、 100分 B 85.94.分 C 75.84.分 D 60.74.分 E 60.分以下3. 输入年号y和月份m, 输出y年的m月有多少天。 三、实验结果(源程序 + 注释)1.源程序#includeusing namespace std;void main() int x,y; cout请输入客户购买产品的数量:x;y=x/10;switch(y) case 0: case 1: cout客户类型为零售商,产品单价为18元/个,应付的总额为:18*xendl;break;case 2:case 3: cout客户类型为零售商,产品单价为15元/个,应付的总额为:15*xendl;break;
11、case 4: cout客户类型为零售商,产品单价为12元/个,应付的总额为:12*xendl;break; if(50=x&x200) cout客户类型为批发商,产品单价为10元/个,应付的总额为:10*x=200) cout客户类型为批发商,产品单价为8元/个,应付的总额为:8*xendl;2.源程序#includeusing namespace std;void main() int a,b; cout请输入一学生的考试成绩:a;b=a/5;switch(b) case 20: case 19: cout该学生的考试成绩等级为A:endl;break; case 18: case 17:
12、 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.源程序#includeusing namespace std;void main() int y,m; cout请输入输入年号y和月份m:ym; switch(m) case 1: case 3: case 5: case 7: case 8: case 10:ca
13、se 12: couty年的m月有31天:endl;break;case 4:case 6:case 9:case 11: couty年的m月有30天:endl;break; if(m=2) if(y%4=0&y%100!=0)|(y%100=0&y%400=0) couty年的m月有29天:endl; else couty年的m月有28天:=n),用m除以n,求得余数q。 若q为零,n即为所求的最大公约数; 若q不为零,则更新除数和被除数(nm,q n)再做除法,直至余数q为零止。这时,相应的n即为所求的最大公约数。 而最小大公倍数=原始m与n值的乘积/最大公约数。 )3. 编程实现十进制整
14、数和二进制整数之间的转换。三、实验结果(源程序 + 注释)1.源程序#include using namespace std;void main() int i=1; double n=1,j=1,k=0,pi=0; dok=k+j; n=n+2;i=-i;j=i/n; while(j=1.0e-6|j=-1.0e-6); pi=4*k;cout/4=kendl;cout=piendl;2.源程序#include using namespace std;void main() int m,n,q,i,j,k; cout请输入两个整数:mn; i=m; j=n; q=i%j; if(q=0) c
15、out所求的最大公约数为:jendl; if(q!=0) do i=j; j=q; q=i%j; while(q!=0); k=(m*n/j);cout所求的最大公约数为:jendl; cout所求的最小公倍数为:kendl;3 源程序#includeusing namespace std;void main() int i=10,j=1,m,n=0;cout请输入一个二进制整数:m; don+=j*(m%i); m/=i; j*=2; while(m!=0);cout 转换为十进制整数是:nn)的所有素数,要求:每行输出5个。2. 键盘输入一行字符,统计字符总个数,以及其中的英文字母个数,如
16、果是数字,则统计它们所构成的数据中,奇数个数和偶数个数分别是多少。提示:可使用以下程序段,连续输入若干字符直到输入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,则运行结果如下12233344444444333221三、实验结果(源程序 + 注释)1. 源程序#include #inclu
17、de using namespace std;void main() int m,n,x,y,k=0; cout请输入两个不等的整数:nm; 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) coutn; 2. 源程序#include using namespace std;#include void main() char ch; int i=0,ch_num=0,odd_num=0,even_num=0; cout请输入一行字符:=a
18、&ch=A&ch=1&ch=9) if(ch%2=0) even_num+=1; else odd_num+=1; cout输入的字符总个数为:iendl; cout其中英文字符个数为:ch_numendl; cout奇数个数为:odd_numendl; cout偶数个数为:even_numendl;3. 源程序 #includeusing 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) cou
19、t3对选手的名单为:A-i B-j C-kendl;4. 源程序#include #include using namespace std;void main() int i,j,a; couta; 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 couti; else couti; coutendl; for(i=1;i=a-1;i+) for(j=1;j=a-1;j+) if(j=a-i) couta-i; else cout ; coutendl;实验7一、实验目的1掌握数值型一维数组的使用方法
20、; 2掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。二、实验任务1. 对两个无序的数组(其中数组a长度为n,数组b长度m),采用选择法(或起泡法)分别将这两个数组转为有序(元素值从小到大有序)。要求:a和b数组长度及其元素均由键盘获取。2. 将以上任务1构建的两个有序的数组a和b,进行有序合并,即将这两个数组进行合并的过程中其数据始终保持有序。(提示:数据结构:三个一维数组a,b,c将aia和bib比较,谁小就把谁放入cic(c数组用于存放合并后的数据),谁放入了cic中谁的下标就加1,同时ic(c中当前存放数据的下标)加1,如下图所示。 )3. 计算以上任务2中c数组元素的平
21、均值,并删除c中所有低于平均值的那些元素。三、实验结果(源程序 + 注释)1.源程序#includeusing namespace std;void main(void) int i,j,t,n,m,a100,b100; coutn; cout请输入数组a的n个数:endl; for(i=0;iai; for(i=0;in-1;i+) for(j=i+1;jaj) t=ai;ai=aj;aj=t; cout数组从小到大排列为:endl; for(j=0;jn;j+) coutaj ; coutendl; coutm; cout请输入数组b的m个数:endl; for(i=0;ibi; for(
22、i=0;im-1;i+) for(j=i+1;jbj) t=bi;bi=bj;bj=t; cout数组b从小到大排列为:endl; for(j=0;jm;j+) coutbj ; coutendl;2. 源程序#includeusing namespace std;void main(void) int i,j,t,n,m,a100,b100; coutn; cout请输入数组a的n个元素:endl; for(i=0;iai; for(i=0;in-1;i+) for(j=i+1;jaj) t=ai;ai=aj;aj=t; cout数组a的元素从小到大排列为:endl; for(j=0;jn;
23、j+) coutaj ; coutendl; coutm; cout请输入数组b的m个元素:endl; for(i=0;ibi; for(i=0;im-1;i+) for(j=i+1;jbj) t=bi;bi=bj;bj=t; cout数组b的元素从小到大排列为:endl; for(j=0;jm;j+) coutbj ; coutendl; int c200,ia=0,ib=0,ic=0; for(ia=0;iaaia) cic+=aia; else cic+=bib; if(aia!=bib) ia-; ib+; if(ibm) for(;ibm;ib+) cic+=bib; cout合并后
24、的数组c为:endl; for(int i=0;iic;i+) cout ci; coutendl;3.源程序#includeusing namespace std;void main(void) int i,j,t,n,m,a100,b100; coutn; cout请输入数组a的n个元素:endl; for(i=0;iai; for(i=0;in-1;i+) for(j=i+1;jaj) t=ai;ai=aj;aj=t; cout数组a的元素从小到大排列为:endl; for(j=0;jn;j+) coutaj ; coutendl; coutm; cout请输入数组b的m个元素:endl
25、; for(i=0;ibi; for(i=0;im-1;i+) for(j=i+1;jbj) t=bi;bi=bj;bj=t; cout数组b的元素从小到大排列为:endl; for(j=0;jm;j+) coutbj ; coutendl; int c200,ia=0,ib=0,ic=0; for(ia=0;iaaia) cic+=aia; else cic+=bib; if(aia!=bib) ia-; ib+; if(ibm) for(;ibm;ib+) cic+=bib; cout合并后的数组c为:endl; for(int i=0;iic;i+) cout ci; coutendl;
26、 float sum=0.0,ave; for(i=0;in+m;i+) sum=sum+ci; ave=sum/(n+m); cout数组c元素的平均值为:aveendl; cout数组c中大于平均值的元素为:; for(i=0;iave) coutci ;实验8一、实验目的1掌握对一组同类型的数据进行插入、删除、排序和查找等的常用算法。二、实验任务1. 使用插入排序法将键盘输入的无序数列按升序排列。思路分析与算法:1) 从第一个元素开始,该元素可以认为已经被排序。2) 取出下一个元素,在已经排序的元素序列中从后向前扫描。3) 如果该元素(已排序)大于新元素,将该元素移到下一位置。4) 重复
27、步骤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的ai,输出该数。三、实验结果
28、(源程序 + 注释)1. 源程序#include#includeusing namespace std;void main() const int N=100; int aN,t,i,j,n; coutn; cout请输入有n个整数的无序数列:endl; for(i=0;iai; if(a0a1) t=a0;a0=a1;a1=t; for(i=2;iaj&j=n)j+;if(j=j;k-) ak=ak-1; aj=t; cout原数列按升序排列为:endl; for(i=0;in;i+) coutai ; coutendl;2 源程序#includeusing namespace std;void main() const int N=40; int n, m, aN; int i,j,k; coutn; coutm; for(i=0;in;i+) ai=i+1; i=0; j=0; k=0; while(kn-1) if(ai!=0) j+; if(j=m)ai=0;j=0;k+; i+; if(i=n) i=0; i=0; while(ai=0) i+; cout猴王原先的编号是aiendl;实验9一、实验目的1掌握二维数值型数组的使用方法;2. 掌握string类字符串的使用方法。二、实验任务1.自动产生N*N数据(N取值最大不超过1