(最新版)西南交通大学c++实验报告
西南交通大学计算机程序设计基础(C++)

西南交通大学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.了解数据输入的相关注意事项。
西南交大c++实验报告11

西南交大c++实验报告11实验 11实验报告教学班级:_26_学生学号:_2015_学生姓名:__实验日期:___2016.6.3____实验地点:__7307__(机房)指导教师签名:_____________ 实验成绩:______________一、实验目的1.了解存放常用系统函数的头文件;2.掌握常用系统函数的功能及使用方法;3.掌握自定义有返回值函数的概念、定义及使用。
二、实验任务1、实现功能:1~10加减乘除运算训练系统。
(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户的计算结果是否正确并输出结论。
(2)子函数功能:定义有返回值函数,完成算术式的计算功能。
2、实现功能:求两个整数的最大公约数、最小公倍数。
(1)主函数功能:从键盘输入两个整数,通过调用两个子函数分别得到最大公约数、最小公倍数并输出结果。
(2)子函数1功能:定义有返回值函数,求两个整数的最大公约数。
子函数2功能:定义有返回值函数,求两个整数的最小公倍数。
3.实现功能:根据键盘输入的整数x,计算分段函数sign(x)的值。
(1)主函数功能:从键盘输入整数x,通过调用子函数得到计算结果并输出。
(2)子函数功能:定义有返回值函数,实现该分段函数的功能。
三、实验结果(源程序+ 注释)/*1、实现功能:1~10加减乘除运算训练系统。
(1)主函数功能:随机产生一个1~10加减乘除算术式(数字在1~10之间随机产生,运算符在加减乘除中随机产生),要求用户输入计算结果,通过调用子函数得到正确答案,判断用户的计算结果是否正确并输出结论。
(2)子函数功能:定义有返回值函数,完成算术式的计算功能。
*/#include<iostream>#include<cstdlib>#include<ctime>using namespace std;void main(){cout << "Name:" << endl;cout << "Number:20" << endl;int x;double a, b, y, answer = 0.0;//定义四个整型变量 char n;//定义一个字符型变量srand(time(NULL));//初始化随机数产生器a = 1 + rand() % (10 - 1 + 1);//产生1~10的随机数b = 1 + rand() % (10 - 1 + 1);//产生1~10的随机数x = 1 + rand() % (4 - 1 + 1);//产生1~4的随机数 switch (x)//将x的值分别对应1,2,3,4时赋予n 相应的字符,方便下文输出{case 1:n = '+'; break;case 2:n = '-'; break;case 3:n = '*'; break;case 4:n = '/'; break;cout << "请计算下面的算式:" << endl;//提示语句 cout << a << n << b << "=";//提示语句cin >> y;//从键盘输入用户的计算结果double result(int x, double a, double b); //调用自定义函数之前的说明answer = result(x,a,b);//赋值if (answer == y) {cout << "计算正确" << endl;}//计算正确else {cout << "计算错误,该算式的正确答案是:" << answer << endl;}//计算错误}double result(int x,double y,double z)//自定义函数{double answer;switch (x)//当形参变量x分别为1,2,3,4时,采用不同的运算符进行计算{case 1:answer = y + z; break;case 2:answer = y - z; break;case 3:answer = y * z; break;case 4:answer = y / z; break;return answer;}/*实现功能:求两个整数的最大公约数、最小公倍数。
西南交大交通运输认识实习报告

暑期实习报告报告名称:认识实习姓名:学号:20151班级:交运指导教师:实习单位:成都公交、动车所、北编组站等实习时间:2017.7.10~2017.7. 20前言认识实习是交通运输与物流学院同学在大二阶段进行的暑期实习。
本次暑期实习的时间为2017年7月10日至2017年7月20日。
实习地点包括成都市公交公司、西南交大九里校区轨道交通实验室、成都市规划馆、成都东客运站、动车所、成灌快铁以及北编组站。
本次暑期实习主要目的是促进交运专业学生对成都全城的古今规划、交通网络分布以及交通运输行业发展方向的了解,并深入体验客运高速和货运铁路的运行及调度方式。
对铁路工作的运作、分工和管理机制以及日后的发展规划有初步的认识。
本次实习是交通运输专业实践教学的重要内容,促进了我们了解社会,丰富了实践知识,培养了我们理论联系实际及知识的综合运用能力。
动员大会让我了解了铁路上的相关纪律,成都公交集团尹处长的讲解让我初识了公交系统组织协调机制,参观轨道交通国家实验室让我体验了动车的司机室模拟仓,调度工作讲习让我明白了调度工作的重要性,成都东站实习让我了解了现代新型交通枢纽换乘的便捷性,成灌快铁体验让我体验到了新型轨道交通的方便快捷,动车、地铁无缝对接,实现了一站式换乘的便利。
目录前言 (I)目录 (II)第1章正文 (1)1.1成都公交公司实习 (1)1.1.1成都公交公司介绍 (1)1.1.2成都公交公司实习内容 (1)1.1.3成都公交公司实习体会 (2)1.2轨道交通国家实验室实习 (2)1.2.1轨道交通国家实验室介绍 (2)1.2.2轨道交通国家实验室实习内容 (2)1.2.3轨道交通国家实验室实习体会 (3)1.3铁路局调度所实习 (3)1.3.1铁路调度所实习内容 (3)1.3.2铁路调度所实习体会 (3)1.4成都规划馆实习 (4)1.4.1成都规划馆介绍 (4)1.4.2成都规划实习内容 (4)1.4.3成都规划实习体会 (4)1.5成都客运东站实习 (5)1.5.1成都客运东站介绍 (5)1.5.2成都客运东站实习内容 (5)1.5.3成都客运东站实习体会 (5)1.6动车所实习 (6)1.6.1动车所介绍 (6)1.6.2动车所实习内容 (6)1.6.3动车所实习体会 (6)1.7成灌快铁实习 (7)1.7.1成灌快铁介绍 (7)1.7.2成灌快铁实习内容 (7)1.7.3成灌快铁实习体会 (8)1.8成都北编组站实习 (8)1.8.1北编组站介绍 (8)1.8.2北编组站实习内容 (8)1.8.3北编组站实习体会 (9)第2章结论 (10)第1章正文1.1成都公交公司实习1.1.1成都公交公司介绍企业成立于1952年,承担着成都市社会经济发展和城乡群众生产生活公共交通出行服务的重要职责。
西南交大c实验报告

实验_8_实验报告教学班级:_26_学生学号:_201_学生姓名:指导教师签名: __________ 实验成绩: _____________、实验目的1 •掌握对数值型一维数组的使用方法;2 •掌握对数组的插入、删除、修改、排序和查找等常用算法。
、实验任务1.设有一批学生的程序设计课程的考试成绩(学生人数最多为N=100人,数据如下:(提示:可以建立三个一维数组来存放学生的数据,其中:学号为一个 long 类型的数组studentID ,姓名为一个 string 类型的数组name ,成绩为一个int 类型的数组grade )(1)由键盘获取学生人数 n ,要求学生人数n 的取值范围11到N-2 ;(2) 由键盘获取学生的相关数据;(3) 用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据; 2.在任务1的基础上,在学生数据中,完成以下任务:(1 )键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该 学生的所有信息,按如下格式输出:若没有该学生,则输出“查无此人”的信息。
(2 )插入一个新学生的数据,要求插入后学生的数据任按学号升序排列。
3. 在任务1的基础上,在学生数据中,完成以下任务: ⑴用选择排序法将学生数据按学生程序设计课程成绩降序排列。
⑵ 键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学 生,若有实验日期: 5.26 实验地点:机房)学号2015112324张思德程序设计成绩72该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。
三、实验结果(源程序+注释)//输入并升序排列学生的成绩#in clude<iostream>#in clude<stri ng>#in clude<ioma nip>using n amespace std;void mai n(){cout << "Name:" << en dl;cout << "Number:20" << endl;long stude ntlD[100], tran s1;〃定义两个长整型变量,其中一个是数组stri ng name[100], tran s2;// 定义两个字符串类变量,其中一个是数组int grade[100], n, i, j,trans3;cout << "请输入学生人数n (11 w n < 98)" << endl;cin >> n;//从键盘输入学生的人数for (i = 0; i <= n - 1; i++)// 利用循环结构录入各学生的信息{cout << "请依次输入第"<< i + 1 << " 个学生的学号、、成绩"<< endl; cin >> stude ntlD[i] >>n ame[i] >> grade[i];}for (i = 0; i <= n - 1; i++)// 利用嵌套循环和条件语句将信息按学号进行升序排列{for (j = i + 1; j <= n -1; j++){if (stude ntlD[i] > stude ntID[j]){tran s1 = stude ntlD[i]; stude ntlD[i] = stude ntlD[j]; stude ntlD[j]= tran s1;trans2 = n ame[i]; n ame[i] = n ame[j]; n ame[j] = tran s2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = tran s3;}}}cout << "按学号升序排序后学生的成绩信息为:"<< endl;cout << setw(10) << " 学号"<< setw(10) << "" << setw(10) << " 成绩"<< endl;// 限定输出结果格式for (i = 0; i <= n - 1; i++)// 按特定格式输出排列后的学生信息{cout << setw(10) << studentID[i] << setw(10) << name[i] << setw(10) << grade[i]<< en dl;}/*键盘输入一个学生的学号,用折半查找法查找是否有该学生*/int bot = n - 1, mid, top = 0;long nu mber;cout << "请输入待查学生的学号"<< endl;cin >> nu mber;while (top <= bot)〃折半查找法查找信息库中某个学号的学生{mid = (bot + top) / 2;if (stude ntlD[mid] == nu mber) break;else if (stude ntlD[mid] > nu mber) top = mid + 1;else if (stude ntlD[mid] < nu mber) bot = mid - 1;}if (bot >= top)//当这个学生存在时,以特定格式输出该学生的信息{cout << "该学生的信息为:"<< endl;cout << setw(10) << " 学号"<< setw(10) << "" << setw(10) << " 成绩"<< endl;cout << setw(10) << number << setw(10) << name[mid] << setw(10) << grade[mid] << en dl;}else if(top>=bot) cout << " 查无此人"<< endl;//当该学生不存在时,显示"查无此人”/*插入一个新学生的数据,要求插入后学生的数据按学号升序排列*/cout << "请依次输入要插入的学生学号、、成绩信息:"<< endl;cin >> stude ntlD[ n] >> n ame[ n] >> grade[ n];〃录入要插入的学生的信息for (i = 0; i <= n; i++)〃利用嵌套循环和条件语句,将插入后学生的数据按学号升序排列{for (j = i + 1; j <= n; j++){if (studentID[i] > studentID[j]){tran si = stude ntlD[i]; stude ntlD[i] = stude ntlD[j]; stude ntlD[j]= tran si;trans2 = n ame[i]; n ame[i] = n ame[j]; n ame[j] = tran s2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = tran s3;}}}cout << "插入并排序后学生的成绩信息为:"<< endl;cout << setw(10) << " 学号"<< setw(10) << "" << setw(10) << " 成绩"<< endl;// 限定提示语句的输出格式for (i = 0; i <= n; i++){cout << setw(10) << studentlD[i] << setw(10) << name[i] << setw(10) << grade[i]<< endl;//输出排序结果}#in clude<iostream> #in clude<stri ng> #in clude<ioma nip> using n amespace std; void mai n() {cout << "Name:" << en dl; cout << "Number:201" << endl;long stude ntlD[100], tran s1;〃 定义两个长整型变量,其中一个是数组 stri ng name[100], tran s2;〃 定义两个字符串类变量,其中一个是数组 int grade[100], n, i, j, trans3;cout << "请输入学生人数 n (11 w n < 98)" << endl; cin >> n;□成缔、姓客、成詡誌/*在任务1的基础上,在学生数据中,完成以下任务:⑴用选择排序法将学生数据按学生程序设计课程成绩降序排列。
西南交大C实验13

实验 13 实验报告教学班级:________ 学生学号:__________ 学生姓名:__________ 实验日期:_______ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1.理解变量作用域,掌握局部变量和全局变量的使用方法;2.掌握函数调用过程中的参数传递方法。
3.理解递推的概念,掌握递归函数的基本使用方法;二、实验任务1.求数组元素和值。
1) 主函数定义整型数组a[10],数组元素值a[j]=2*j+1,输出a数组;2) 编一子函数,将主函数传递来的数组元素值改变为其前面所有数组元素的和值(包括该数组元素自身值),子函数头要求为sum(inta[],int n),n用于传递数组的大小;3) 主函数中输出改变后的a数组。
2.求自然数对。
1)编写一子函数,判断两个自然数x,y是否是自然数对(所谓自然数对是指两个自然数的和与差都是平方数,如:17-8=9,17+8=25);2)调用子函数在0<x<=50,0<y<=50且x!=y范围内找出全部自然数对。
3.斐波那契数列。
1)主函数功能:求出斐波那契数列的前n项存入数组a[20]中,开始两项均为1,将子函数反序存放后的结果输出;2)子函数功能:将主函数求出的斐波那契数列前n项反序存放。
3)函数头要求为void fbnq(int*p,int n),p指向数组a。
4.编程实现:将有序数组有序合并。
1) 有两个从小到大的整型有序数组a和b,编一子函数将这两个数组合并为从小到大的有序数组c,整个合并过程中c保持有序;2) 子函数头要求为void merge(int a[],int b[],int c[],int m,intn),m用来传递a数组元素个数,n传递b数组元素个数。
5.实现功能:已知数列2,6,14,30,…… ,计算该数列的第n项。
其中的递推关系为:编程要求:1)主函数功能:从键盘输入n值,通过调用子函数计算数列的第n项并输出。
西南交通大学计算机程序设计基础C++实验报告10

实验 10 实验报告教学班级:___ ___ 学生学号:_____xxxxxx_____ 学生姓名:______x x x_____实验日期:___6.15___ 实验地点:____x7407________(机房)指导教师签名:_____________ 实验成绩:______________一、实验目的1.掌握二维数值型数组的使用方法;2.掌握求解一些经典问题的常用算法。
二、实验任务1.设有一个元素皆为整数的n*n阶矩阵,键盘输入矩阵的阶n及矩阵的元素,且找出其主对角线上元素的最大值及其所在的行号。
程序输出参考如下:2.已知有const int M=100; int x[M][M],m;要求:将按照如下规律自动生成的数据存放x数组中,并输出如下图所示三角。
3.编写程序,输入数字n(n<10),输出n层正方形图案。
正方形图案最外层是第一层,依次往内,每层用的数字和层数相同。
程序输出参考如下:4.编写程序,要求输入某班N名同学的序号及3门课成绩,计算每位同学的平均成绩以及每门课的平均成绩(学号为3位整数,成绩也为整数,课程名称为:科目1、科目2、科目3)。
程序输出参考如下:三、实验结果(源程序+ 注释+ 运行界面截图)(要求:(1)提供源程序;(2)源程序包含必要的注释,包括:在程序头部给出本程序功能的注释、所定义变量的用途注释、程序块的功能注释、子函数的功能注释等;(3)运行结果的窗口截图,程序运行结果中输出的第一行内容必须为:程序作者的学号和姓名。
)1.#include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int i,j,b=0,h=0,a[100][100],n;cout<<"请输入矩阵的阶:";cin>>n;cout<<"请输入一个"<<n<<"*"<<n<<"矩阵,每个数之间用空格间隔,每行输入完成后按回车"<<endl;for (i=1;i<=n;i++)//输入储存数据{for(j=1;j<=n;j++)cin>>a[i][j];}for(i=1;i<=n;i++)//对对角线上的数据进行大小判断{for(j=1;j<=n;j++){if(i==j){if(a[i][j]>b){b=a[i][j];//保存比较后较大的数h=i;//记录比较后较大数的行数}}}}cout<<"对角线上最大的数为:"<<b<<",行号为:"<<h<<endl;system ("pause");return 0;}2.#include <iostream>#include <iomanip>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;const int M=100; int x[M][M]={0},m;cout<<"请输入m值:";cin>>m;int t=m,i,j,p=m;int h=0;for(j=0;j<m;j++){for(i=0;i<=j;i++){cout<<setw(3)<<t<<setw(6)<<" ";x[i][j]=t;t=t+p;p--;if (j==i){cout<<endl;t=m-h-1;h++;}}p=m;}cout<<"========================================"<<endl;cout<<setw(12)<<" "<<setw(3)<<x[0][0]<<endl;cout<<setw(9)<<" "<<setw(3)<<x[0][1]<<setw(3)<<" "<<setw(3)<<x[1][1]<<endl;cout<<setw(6)<<" "<<setw(3)<<x[0][2]<<setw(3)<<" "<<setw(3)<<x[1][2]<<setw(3)<<" "<<setw(3)<<x[2][2]<<endl;cout<<setw(3)<<" "<<setw(3)<<x[0][3]<<setw(3)<<" "<<setw(3)<<x[1][3]<<setw(3)<<" "<<setw(3)<<x[2][3]<<setw(3)<<" "<<setw(3)<<x[3][3]<<endl;cout<<setw(3)<<x[0][4]<<setw(3)<<" "<<setw(3)<<x[1][4]<<setw(3)<<" "<<setw(3)<<x[2][4]<<setw(3)<<" "<<setw(3)<<x[3][4]<<setw(3)<<" "<<setw(3)<<x[4][4]<<endl;system ("pause");return 0;}3. #include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int a[100][100],b[100][100],i,j,k,h,n,m;cout<<"请输入正方形层数;";cin>>n;m=2*n-1;for(i=0,k=0;i<n,k<n;i++,k++) //输入保留左上四分之一正方形数据{for(j=0,h=0;j<n,h<n;j++,h++){if(i<j)a[i][j]=i+1;elsea[i][j]=j+1;b[k][h]=a[i][j];}}for(i=0,k=0;i<n,k<n;i++,k++) //将坐上四分之一正方形复制到右上角四分之一正方形{for(j=m-1,h=0;j>=n;j--,h++)a[i][j]=b[k][h];}for(i=m-1,k=0;i>=n,k<n;i--,k++)//复制到左下角四分之一正方形{for(j=0,h=0;j<n,h<n;j++,h++)a[i][j]=b[k][h];}for(i=m-1,k=0;i>=n,k<n;i--,k++)//复制到右下角四分之一正方形{for(j=m-1,h=0;j>=n,h<n;j--,h++)a[i][j]=b[k][h];}for(i=0;i<m;i++)//输出矩阵{for(j=0;j<m;j++){cout<<a[i][j]<<" ";}cout<<endl;}system("pause");return 0;}4.#include <iostream>using namespace std;int main(){cout<<"xxxxxxxxx"<<endl;int a[100][100],i,j,N,m,n;cout<<"请按下列顺序输入:"<<endl;cout<<"学号"<<" "<<"科目1"<<" "<<"科目2"<<" "<<"科目3"<<endl;N=3;m=0;n=0;for(i=0;i<N;i++)//输入同学的学号成绩{for(j=0;j<4;j++){cin>>a[i][j];}}for(i=0;i<N;i++)//计算某同学平均分{for(j=1;j<4;j++)m+=a[i][j];n=m/3;m=0;cout<<"学号为"<<a[i][0]<<"的同学的平均分为:"<<n<<endl;}for(j=1;j<4;j++)//计算某科目平均分{for(i=0;i<N;i++)m+=a[i][j];n=m/3;m=0;cout<<"科目"<<j<<"的平均分为:"<<n<<endl;}system("pause");return 0;}。
数值分析上机实习报告(西南交通大学)
数值分析上机实习报告姓名:学号:专业:大地测量学与测量工程电话:序言1.所用程序语言:本次数值分析上机实习采用Visual c#作为程序设计语言,利用Visual c#可视化的编程实现方法,采用对话框形式进行设计计算程序界面,并将结果用表格或文档的格式给出。
2.程序概述:(1)第一题是采用牛顿法和steffensen法分别对两个题进行分析,编好程序后分别带入不同的初值,观察与真实值的差别,分析出初值对结果的影响,分析两种方法的收敛速度。
(2)第二题使用Visual c#程序设计语言完成了“松弛因子对SOR法收敛速度的影响”,通过在可视化界面下输入不同的n和w值,点击按钮直接可看到迭代次数及计算结果,观察了不同的松弛因子w对收敛速度的影响。
目录一.用牛顿法,及牛顿-Steffensen法............ 错误!未定义书签。
1. 计算结果.................................... 错误!未定义书签。
2. 结果分析 (5)3. 程序清单 (5)二.松弛因子对SOR法收敛速度的影响 (8)1. 迭代次数计算结果 (8)2. 计算X()结果 (10)3. 对比分析 (12)4. 程序清单: (12)三.实习总结 (14)实验课题(一)用牛顿法,及牛顿-Steffensen法题目:分别用牛顿法,及牛顿-Steffensen法(1)求ln(x+sin x)=0的根。
初值x0分别取0.1, 1,1.5, 2, 4进行计算。
(2)求sin x=0的根。
初值x0分别取1,1.4,1.6, 1.8,3进行计算。
分析其中遇到的现象与问题。
1、计算结果由于比较多每种方法中只选取了其中两个的图片例在下面:2、结果分析通过对以上的牛顿法和steffensen法的练习,我发现在初值的选取很重要,好的初值选出后可以很快的达到预定的精度,要是选的不好就很慢,而且在有的时候得出的还是非数字,所以初始值的选取很重要。
C程序设计实验报告(完整版)
工程学院实验报告课程名称: C程序设计课程代码:学院(直属系):年级/专业/班: 2010级汽电1班学生姓名:学号:实验总成绩:任课教师:开课学院: 工程学院实验中心名称: 交通实验中心第组西华大学实验报告西华大学实验报告(理工类)开课学院及实验室:汽车学院机房(5D-215)实验时间:年月日学生姓名学号实验成绩课程名称C程序设计课程代码实验项目名称C语言集成环境及程序初步项目代码指导教师项目学分实验课考勤实验工作表现实验报告1、实验目的2、实验设备、仪器及材料3、实验内容一般实验:3.1实验方案设计与选择(设计性、创新性实验需写该项内容)3.2实验原理及实验步骤(实验工作原理或实验的主要操作过程)3.3实验记录(核心代码及调试过程)注解:理工科实验需记录实验过程中的数据、图表、计算、现象观察等,实验过程中出现的问题;其它如在计算机上进行的编程、仿真性或模拟性实验需记录程序核心代码以及程序在调式过程中出现的问题及解决方法;记录程序执行的结果。
上机实验:3.1上机实验的内容及要求3.2算法设计思想与算法实现步骤3.3程序核心代码,程序调试过程中出现的问题及解决方法3.4 程序运行的结果4、实验总结4.1实验结果分析及问题讨论4.2实验总结心得体会注解:实验总结的内容根据不同学科和类型实验要求不一样,一般理工科类的实验需要对实验结果进行分析,并且对实验过程中问题进行讨论;在计算机上进行的编程、仿真性或模拟性实验需要对上机实践结果进行分析,上机的心得体会及改进意见。
其它实验应总结实验过程写出心得体会及改进意见。
第页1、实验目的(1) 熟悉C语言的集成环境,了解菜单的使用方法。
(2) 掌握C语言程序上机的编辑、编译、连接、运行的基本步骤。
(3) 了解C语言程序的结构。
2、实验设备、仪器及材料(1)硬件环境微型计算机(Intel x86系列CPU)一台(2)软件环境Windows98/2000/XP操作系统 VC6.0集成开发环境3、实验内容3.1上机实验的内容及要求(1) 熟悉VC中常用菜单项及对应快捷键的使用方法。
数据结构实验报告西南交大
实验一一元稀疏多项式的计算“my.h”#pragma once#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#define CLS system("cls");#define PAUSE system("pause");typedef struct Item{double num;int e;struct Item *next;}item,*link;int menu(void);int judge(link,char*);void remove(link);link copy1(link,link);link copy2(link,link);int search(link,int,double);void sort(link);link add(link,link);link subtract(link,link);link multiply(link,link);link input(void);void output(link,char*);“e xecute.cpp”#include"my.h"/**********复制剩余的数据(用于加法)****************/link copy1(link pre,link h){link l;l=(link)malloc(sizeof(item));l->num=h->num;l->e=h->e;l->next=NULL;pre->next=l;return h->next;}/**********复制剩余的数据(用于减法)****************/link copy2(link pre,link h){link l;l=(link)malloc(sizeof(item));l->num=-h->num;l->e=h->e;l->next=NULL;pre->next=l;return h->next;}/****搜索链表中是否已有相同次数的项,同次数项更新系数(用于乘法)****/int search(link h,int e,double num){h=h->next;while(h){if(h->e==e){h->num+=num;return 0;}h=h->next;}return 1;}/********将多项式按次数递增排序(用于乘法)********/void sort(link head){link pre,back,tp_pre,tp_back;for(pre=head,back=pre->next;back->next;pre=pre->next,back=pre->next)for(tp_pre=back,tp_back=tp_pre->next;tp_back;tp_pre=tp_pre->next,tp_back=tp_pre->next) if(tp_back->e<back->e){tp_pre->next=tp_back->next;pre->next=tp_back;tp_back->next=back;break;}}/****************两个多项式相加***************/link add(link h1,link h2){if(h1==NULL||h2==NULL||h1->num==0||h2->num==0){ printf("无多项式!\n");PAUSE;return NULL;}link head,l,pre;head=(link)malloc(sizeof(item));head->num=0;head->next=NULL;pre=head;for(h1=h1->next,h2=h2->next;h1||h2;){if(!h1){while(h2){h2=copy1(pre,h2);pre=pre->next;++head->num;}break;}if(!h2){while(h1){h1=copy1(pre,h1);pre=pre->next;++head->num;}break;}if(h1->e<h2->e){h1=copy1(pre,h1);pre=pre->next;++head->num;}else if(h1->e==h2->e){if(h1->num!=-h2->num){l=(link)malloc(sizeof(item));l->num=h1->num+h2->num;l->e=h1->e;l->next=NULL;pre->next=l;pre=pre->next;++head->num;}h1=h1->next;h2=h2->next;}else{h2=copy1(pre,h2);pre=pre->next;++head->num;}}printf("多项式相加完成!\n");PAUSE;CLS;return head;}/****************两个多项式相减***************/link subtract(link h1,link h2){if(h1==NULL||h2==NULL||h1->num==0||h2->num==0){ printf("无多项式!\n");PAUSE;return NULL;}link head,l,pre;head=(link)malloc(sizeof(item));head->num=0;head->next=NULL;pre=head;for(h1=h1->next,h2=h2->next;h1||h2;){if(!h1){while(h2){h2=copy2(pre,h2);pre=pre->next;++head->num;}break;}if(!h2){while(h1){h1=copy1(pre,h1);pre=pre->next;++head->num;}break;}if(h1->e<h2->e){h1=copy1(pre,h1);pre=pre->next;++head->num;}else if(h1->e==h2->e){if(h1->num!=h2->num){l=(link)malloc(sizeof(item));l->num=h1->num-h2->num;l->e=h1->e;l->next=NULL;pre->next=l;pre=pre->next;++head->num;}h1=h1->next;h2=h2->next;}else{h2=copy2(pre,h2);pre=pre->next;++head->num;}}printf("多项式相减完成!\n");PAUSE;CLS;return head;}/****************两个多项式相乘***************/link multiply(link h1,link h2){if(h1==NULL||h2==NULL||h1->num==0||h2->num==0){ printf("无多项式!\n");PAUSE;return NULL;}link head,end,temp,now;double num;int e;head=(link)malloc(sizeof(item));head->num=0;head->next=NULL;end=head;for(h1=h1->next;h1;h1=h1->next)for(now=h2->next;now;now=now->next){num=h1->num*now->num;e=h1->e+now->e;if(search(head,e,num)){temp=(link)malloc(sizeof(item));temp->num=num;temp->e=e;temp->next=NULL;end->next=temp;end=end->next;++head->num;}}sort(head);printf("多项式相乘完成!\n");PAUSE;CLS;return head;}“io.cpp”#include"my.h"/******************输入并按次数递增的顺序存储数据*********************/link input(void){link head,pre,back,l;double num;int e,flag;head=(link)malloc(sizeof(item));head->next=NULL;head->num=0;do{printf("请输入系数:");scanf("%lf",&num);printf("请输入指数:");scanf("%d",&e);CLS;if(!num) break;if(head->num==0){ //空链表时建立第一个节点l=(link)malloc(sizeof(item));l->num=num;l->e=e;l->next=NULL;head->next=l;++head->num;}else{ //保证存储数据时按次数递增的顺序存储flag=1;for(pre=head,back=pre->next;back;pre=pre->next,back=pre->next){if(e==back->e){ //链表中已有相同次数的项,修改系数即可back->num+=num;flag=0;break;}if(e<back->e){ //找到链表中第一个大于输入数据的节点,在此节点前插入新书局节点l=(link)malloc(sizeof(item));l->num=num;l->e=e;pre->next=l;l->next=back;++head->num;flag=0;break;}}if(flag){ //若新输入的数据次数比链表中的所有数据次数都大,则将此数据项接到链表末尾l=(link)malloc(sizeof(item));l->num=num;l->e=e;l->next=NULL;pre->next=l;++head->num;}}}while(1);return head;}/****************输出数据******************/void output(link h,char *title){printf("%s=",title);if(h==NULL||h->num==0){ //空链表时的输出printf("无多项式!\n");PAUSE;return;}while(h->next){h=h->next;if(h->num==1)if(h->e==0)printf("%g",h->num);elseprintf("x^%d",h->e);else if(h->e==0)printf("%g",h->num);elseprintf("%gx^%d",h->num,h->e);if(h->next&&h->next->num>0)putch('+');}putch('\n');PAUSE;}“m ain.cpp”#include"my.h"int main(void){link p,q,sum,sub,mul;p=q=sum=sub=mul=NULL;while(1){switch(menu()){case 1:if(judge(p,"P(x)")) p=input();break;case 2:if(judge(q,"Q(x)")) q=input();break;case 3:if(judge(sum,"P(x)+Q(x)")) sum=add(p,q);break;case 4:if(judge(sub,"P(x)-Q(x)")) sub=subtract(p,q);break;case 5:if(judge(mul,"P(x)*Q(x)")) mul=multiply(p,q);break;case 6:output(p,"P(x)");break;case 7:output(q,"Q(x)");break;case 8:output(sum,"P(x)+Q(x)");break;case 9:output(sub,"P(x)-Q(x)");break;case 10:output(mul,"P(x)*Q(x)");break;case 11:exit(0);}}}“menu.cpp”#include"my.h"static char string[11][20]={"1--createP(x)","2--create Q(x)","3--p(x)+Q(x)","4--P(x)-Q(x)","5--p(x)*Q(x)","6--printP(x)","7--printQ(x)","8--printP(x)+ Q(x)","9--print P(x)-Q(x)","10--print P(x)*Q(x)","11—Quit"};/*****************主菜单显示****************/int menu(void){int i;while(1){CLS;for(i=0;i<11;++i)puts(string[i]);printf("请选择:");scanf("%d",&i);if(i>=1&&i<=11){CLS;return i;}elseprintf("输入不合法,请重新输入!\n");PAUSE;}}/****************用于判断链表是否存在******************/int judge(link h,char *str){char ch;if(h==NULL||h->num==0)return 1;else{printf("%s is not Empty,Create %s again?\nInput Y or N:",str,str);while(1){ch=getch();if(ch=='y'||ch=='Y'){remove(h);CLS;return 1;}else if(ch=='n'||ch=='N')return 0;}CLS;}}/***************删除链表*******************/void remove(link head){link pre,back;for(pre=head,back=pre->next;back;pre=back,back=back->next) free(pre);free(pre);head=NULL;}实验四算术表达式求值“my.h”#pragma once#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<math.h>#define CLS system("cls");#define PAUSE system("pause");#define N 50union Element{double num;char symbol;};typedef struct Node{Element data;Node *next;}Queue,*qNode,stackNode,*stack;typedef struct queueRecord{Queue *front;Queue *rear;}*qRecord;/********************************stack.cpp********************************/int isStackEmpty(stack top);stack creat_stack();void push(stack top,Element data); Element pop(stack top);Element top(stack top);/********************************queue.cpp********************************/int isQueueEmpty(qRecord queue); qRecord creat_queue();void Enqueue(qRecord queue,Element data); Element Dequeue(qRecord queue);/********************************input.cpp********************************/ void input(qRecord,stack);void output(qRecord);/********************************calculate.cpp********************************/ double calculate(qRecord,stack);/********************************menu.cpp********************************/int menu();void screen();“calculate.cpp”#include "my.h"double calculate(qRecord queue,stack stack){ Element a,b,temp;temp.num = 0;temp.symbol = NULL;while(!isQueueEmpty(queue)){temp = Dequeue(queue);if(temp.symbol == NULL)push(stack,temp);else{b = pop(stack);a = pop(stack);switch(temp.symbol){case '+': a.num+=b.num;push(stack,a);break;case '-': a.num-=b.num;push(stack,a);;break;case '*': a.num*=b.num;push(stack,a);;break;case '/': a.num/=b.num;push(stack,a);;break;}temp.num = 0;temp.symbol = NULL;}}return pop(stack).num;}“input.cpp”#include "my.h"int compare(Element a,Element b){ //a为栈顶的元素,b为新进入的元素int i,j;switch(a.symbol){case '+': i = 1;break;case '-': i = 1;break;case '*': i = 2;break;case '/': i = 2;break;case '(': i = 0;break;}switch(b.symbol){case '+': j = 1;break;case '-': j = 1;break;case '*': j = 2;break;case '/': j = 2;break;case '(': j = 3;break;case ')': j = 1;break;}if(i >= j)return 1;elsereturn 0;}void input(qRecord queue,stack stack){char ch;int j;Element temp;printf("请输入表达式:");temp.num = 0;for(ch = getchar();ch != '\n';ch = getchar()){if(ch-'0' >= 0 && ch-'0' <= 9){temp.num += (ch-'0')/10.0;temp.num *= 10;temp.symbol = NULL;continue;}if(ch == '.'){for(j = 0,ch = getchar();ch-'0' >= 0 && ch-'0' <= 9;ch = getchar()) temp.num += (ch-'0')/pow(10,++j);temp.symbol = NULL;Enqueue(queue,temp);temp.num = 0;if(ch == '\n')break;}if(ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '(' || ch == ')'){ if(temp.num != 0){Enqueue(queue,temp);temp.num = 0;}temp.symbol = ch;while(!isStackEmpty(stack) && compare(top(stack),temp))Enqueue(queue,pop(stack));if(temp.symbol != ')')push(stack,temp);elsepop(stack);temp.num = 0;}}if(temp.num != 0 && temp.symbol == NULL)Enqueue(queue,temp);while(!isStackEmpty(stack))Enqueue(queue,pop(stack));}void output(qRecord queue){qNode q;if(isQueueEmpty(queue)){printf("表达式为空!\n");return;}printf("后缀表达式为:");for(q = queue->front;q != NULL;q = q->next) if(q->data.symbol == NULL)printf("%g ",q->data.num);elseprintf("%c ",q->data.symbol);putch('\n');}“main.cpp”#include "my.h"void main(){stack stack = creat_stack();qRecord queue = creat_queue();double result;screen();while(1){switch(menu()){case 1:input(queue,stack);PAUSE;break;case 2:output(queue);PAUSE;break;case 3:if(!isQueueEmpty(queue))result = calculate(queue,stack);printf("计算结果=%g\n",result);PAUSE;CLS;screen();break;case 4:exit(0);}}}“menu.cpp”#include "my.h"int menu(){int i;while(1){i = getch() - '0';if(i >= 1 && i <= 4)return i;}}void screen(){printf("1.输入表达式\n");printf("2.输出表达式\n");printf("3.得出结果\n");printf("4.退出\n");}“queue.cpp”#include "my.h"int isQueueEmpty(qRecord queue){if(queue->front == NULL)return 1;elsereturn 0;}qRecord creat_queue(){qRecord queue = (qRecord)malloc(sizeof(queueRecord));queue->front = queue->rear = NULL;return queue;}void Enqueue(qRecord queue,Element data){if(isQueueEmpty(queue)){queue->rear = (qNode)malloc(sizeof(Queue));queue->front = queue->rear;}else{queue->rear->next = (qNode)malloc(sizeof(Queue));queue->rear = queue->rear->next;}queue->rear->data = data;queue->rear->next = NULL;}Element Dequeue(qRecord queue){qNode temp = queue->front;Element data = temp->data;queue->front = queue->front->next;free(temp);return data;}“stack.cpp”#include "my.h"int isStackEmpty(stack top){if(top->next == NULL)return 1;elsereturn 0;}stack creat_stack(){stack st = (stack)malloc(sizeof(stackNode));st->next = NULL;return st;}void push(stack top,Element data){stack temp = (stack)malloc(sizeof(stackNode));temp->data = data;temp->next = top->next;top->next = temp;}Element pop(stack top){stack temp = top->next;Element data = temp->data;top->next = temp->next;free(temp);return data;}Element top(stack top){return top->next->data;}实验七哈夫曼编/译码器实验指导书“my.h”#pragma once#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<math.h>“Huffman.cpp”#include<stdio.h> /* for size_t, printf() */#include<conio.h> /* for getch() */#include<ctype.h> /* for tolower() */#include<malloc.h> /* for malloc(), calloc(), free() */#include<string.h> /* for memmove(), strcpy() */#include<stdlib.h>/*树结构和全局结构指针*/#define NODENUM 26#define CLS system("cls");#define PAUSE system("pause");/*----------哈夫曼树结点结构-------------*/struct node{char ch;int weight;int parent;int lchild,rchild;} *ht; //指向哈夫曼树的存储空间的指针变量/*----------字符编码结点结构-------------*/struct HuffmanCoding{char ch;char coding[NODENUM];};/*--------哈夫曼树遍历时栈的结点结构------*/struct stacknode{int NodeLevel;int NodeElem;};/*---------------常量文件名---------------*/const char *TableFileName = "HfmTbl.txt"; //哈夫曼树数据文件const char *CodeFileName = "CodeFile.txt"; //字符编码数据文件const char *SourceFileName = "SrcText.txt"; //需编码的字符串文件const char *EnCodeFileName = "EnCodeFile.txt"; //编码数据文件const char *DecodeFileName = "DecodeFile.txt"; //译码字符文件/************************************************************/ /* 释放哈夫曼树数据空间函数*/ /************************************************************/ void free_ht(){if(ht != NULL){free(ht);ht = NULL;}}/************************************************************/ /* 从文件读取哈夫曼树数据函数*/ /************************************************************/ int ReadFromFile(){//int i;int m;FILE *fp;if((fp=fopen(TableFileName,"rb"))==NULL){printf("cannot open %s\n", TableFileName);getch();return 0;}fread(&m,sizeof(int),1,fp); //m为数据个数free_ht();ht=(struct node *)malloc(m*sizeof(struct node));fread(ht,sizeof(struct node),m,fp);fclose(fp);return m;}/************************************************************/ /* 吃掉无效的垃圾字符函数函数*/ /* 从键盘读字符数据时使用,避免读到无效字符*/ /************************************************************/ void EatCharsUntilNewLine(){while(getchar()!='\n') continue;}/************************************************************//* 选择权值最小的两个根结点函数*//************************************************************/void Select(struct node ht[],int n, int *s1,int *s2){int i,j;for(i = 0 ; i <= n && ht[i].parent != -1 ; ++i);for(j = i + 1 ; j < n ; ++j)if(ht[j].weight < ht[i].weight && ht[j].parent==-1)i = j;*s1 = i;for(i = 0 ; i <= n && (ht[i].parent != -1 || i==*s1); ++i);for(j = i + 1 ; j <= n ; ++j)if(ht[j].weight < ht[i].weight && j != *s1 && ht[j].parent==-1)i = j;*s2 = i;}/************************************************************//* 创建哈夫曼树和产生字符编码的函数*//************************************************************/void Initialization(){int i=0,n,m,j,f,s1,s2,start;char cd[NODENUM];struct HuffmanCoding code[NODENUM];FILE *fp;printf("输入字符总数n:");scanf("%d",&n);EatCharsUntilNewLine();m=2*n-1;ht=(struct node *)malloc(m*sizeof(struct node)); //申请哈夫曼树的存储空间//输入字符和权值for(i=0;i<n;i++){printf("请输入第%d个字符和权值:",i+1);scanf("%c",&ht[i].ch);scanf("%d",&ht[i].weight);ht[i].parent=ht[i].lchild=ht[i].rchild=-1;EatCharsUntilNewLine();}//剩余空间处理,初始化哈夫曼树for(i=n;i<m;i++){ht[i].ch='*';ht[i].weight=0;ht[i].parent=ht[i].lchild=ht[i].rchild=-1;}//建立哈夫曼树for(i=n;i<m;i++){Select(ht,i-1,&s1,&s2);ht[s1].parent=i;ht[s2].parent=i;ht[i].lchild=s1;ht[i].rchild=s2;ht[i].weight=ht[s1].weight+ht[s2].weight;}//把哈夫曼树的数据存储到文件中if((fp=fopen(TableFileName,"wb"))==NULL){printf("cannot open %s\n", TableFileName);getch();return;}fwrite(&m,sizeof(int),1,fp);fwrite(ht,sizeof(struct node),m,fp);fclose(fp);/*********************************************************/ /* 产生字符编码*/ /* 从叶结点开始,沿父结点上升,直到根结点,若沿*//* 父结点的左分支上升,则得编码字符“0”,若沿父结*/ /* 点的右分支上升,则得编码字符“1”*/ /*********************************************************///把字符编码数据存储到文件中if(!(fp=fopen(CodeFileName,"wb"))){printf("cannot open %s\n", CodeFileName);getch();return;}cd[n-1]=0;for(i=0;i<n;i++){start=n-1;for(j=i,f=ht[i].parent;f!=-1;j=f,f=ht[f].parent)if(ht[f].lchild==j)cd[--start]='0';elsecd[--start]='1';code[i].ch=ht[i].ch;strcpy(code[i].coding,&cd[start]);}fwrite(&n,sizeof(int),1,fp);fwrite(code,sizeof(struct HuffmanCoding),n,fp);fclose(fp);free_ht();printf("\nInitial successfule!\n");getch();}/************************************************************/ /* 哈夫曼编码的函数*/ /************************************************************/ void Encode(void){int i,j,n;char Encodestr[256];struct HuffmanCoding code[NODENUM];FILE *fp1, *fp2;//读字符编码数据fp1 = fopen(CodeFileName,"rb");fread(&n,sizeof(int),1,fp1);fread(code,sizeof(struct HuffmanCoding),n,fp1);//读需编码的字符串,把读入的文本串存储到文件中EatCharsUntilNewLine();printf("请输入要编码的字符串:");gets(Encodestr);fputs(Encodestr,fp1);fclose(fp1);//打开存储编码的数据文件,字符编码fp2=fopen(EnCodeFileName,"wb");printf("编码结果:\n");for(i=0; Encodestr[i]!='\0';++i)for(j=0;j<n;j++)if(Encodestr[i]==code[j].ch){printf("%s",code[j].coding);fwrite(code[j].coding,sizeof(code[j].coding),1,fp2);break;}fclose(fp2);printf("\n编码完成!\n");PAUSE;}/************************************************************/ /* 哈夫曼译码的函数*/ /************************************************************/ void Decode(){FILE *CFP, *TFP;char DeCodeStr[256];char ch;int f,m;m=ReadFromFile();//打开编码数据文件,打开存储译码的数据文件TFP=fopen(DecodeFileName,"wb");CFP=fopen(EnCodeFileName,"rb");//字符译码/********************************************************/ /* 方法:依次从编码数据文件中读取编码字符,并从*/ /* 哈夫曼树开始,若是数字字符“0”,则沿其左分*/ /* 支下降到孩子结点;若是数字字符“1”,则沿其*/ /* 右分支下降到孩子结点;如此反复,直到页结点,*/ /* 则输出页结点对应的字符到译码数据文件中,并*/ /* 显式。
西南交大C++实验12.doc
实验__12__实验报告教学班级:_ 学生学号:学生姓名:实验日期:实验地点:____________(机房)指导教师签名:_____________ 实验成绩:______________一、实验目的1. 掌握指针变量的使用;2. 掌握用指针方式访问一维数组。
二、实验任务1.求,其中x和n均为整数,由键盘输入。
编程输出公式中的每一项的值、以及sum的值。
要求:x, n, sum均用指针。
2.统计一维整型数组中能被3整除的元素个数,并输出。
要求:数组元素由键盘输入;用指针方式访问数组。
3.学生成绩统计:随机产生30名学生的成绩(0~100之间的整数),存放于一维数组中;输出学生成绩,每行10个数。
然后统计并输出90-100、80-80、70-79、60-69、小于60这五个分数段的学生人数。
要求:用指针方式访问数组。
程序运行结果类似于下图:4.编程将一维数组中保存的10个整数循环左移m位,m的值由键盘输入。
例如:数组元素为:8,5,13,21,3,2,6 ,7,12,10;m的值为3,则移动后的数组为:21,3,2,6 ,7,12,10,8,5,13。
要求:用指针方式访问数组,程序中只能使用一个数组。
5.有一组整数,其排列形式为:8,5,13,15,3,11,6,7,22,10,且尾部的10和头部的8首尾相连,构成一个环形。
编程求出相邻的任意四个数之和,并输出。
然后找出相加之和最大的四个数,输出求和的结果以及这四个数。
要求:用指针方式访问数组。
程序运行结果类似于下图,实验报告中的运行结果截图,不能与下图中的数据一样。
三、实验结果(源程序+ 注释)1.#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<< endl;int n,i=1;int *pn=&n;double x,sum,j;double *px=&x,*psum=∑cout<<"请分别输入x和n的值:"<<endl;cin>>*px>>*pn;j=x;*psum=0;while(i<=*pn){ *psum=*psum+j;i++;j=j*x/i;}cout<<"sum="<<*psum<<endl;}2.#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="< <endl;int a[100],n,j=0,*p;cout<<"请输入一维整型数组中的元素个数:"<<endl;cin>>n;cout<<"请输入一维整型数组中的元素:"<<endl;for(p=a;p<a+n;p++)cin>>*p;for(p=a;p<a+n;p++)if(*p%3==0)j=j+1;cout<<"该数组中能被3整除的元素个数为:"<<j<<endl; }3.#include<iostream>#include<iomanip>#include<ctime>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="< <endl;int a[30],*q,i=0; //a[30]用于存放30名学生的成绩int c[5]={0}; //分别存放5个分数段的学生人数int *pa=a,*pc=c; //初值分别存放数组a和c的首地址srand(time(NULL));for(q=a;q<a+30;q++)*q=0+rand()%(100-0+1);cout<<"学生成绩为:"<<endl;for(q=a;q<a+30;q++){cout<<setw(6)<<*q;i=i+1;if(i%10==0)cout<<endl;switch(*q/10){case 10:case 9:*(pc+4)=*(pc+4)+1;break;case 8:*(pc+3)=*(pc+3)+1;break;case 7:*(pc+2)=*(pc+2)+1;break;case 6:*(pc+1)=*(pc+1)+1;break;default:*pc=*pc+1;}}cout<<"学生成绩统计如下:"<<endl;cout<<setw(10)<<"分数段"<<setw(10)<<"90~100"<<setw(10)<<"80~89"<<setw(10)<<"70~79" <<setw(10)<<"60~69"<<setw(10)<<"60以下"<<endl;cout<<setw(10)<<"人数"<<setw(10)<<*(pc+4)<<setw(10)<<*(pc+3)<<setw(10)<<*(pc+2)<<s etw(10)<<*(pc+1)<<setw(10)<<*pc<<endl;}4.#include <iostream>using namespace std;void main( ){cout<<"学号:姓名:"<<endl;cout<<"========================================="<< endl;int a[20],*p;int m,i,t;cout<<"请输入m的值:";cin>>m;cout<<"循环左移"<<m<<"位前,数组元素为:"<<endl;for(p=a;p<a+10;p++)cin>>*p;for(i=0;i<m;i++){p=a;t=*p;for(;p<a+9;p++)*p=*(p+1);*p=t;}cout<<"数组循环左移"<<m<<"位后的数组为:"<<endl;for(p=a;p<a+10;p++)cout<<*p<<" ";cout<<endl;}5.#include<iostream>#include<iomanip>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<< endl;const int N=10;int a[N]={8,5,13,15,3,11,6,7,22,10}; //用于存放10个整数;int b[N]={0},i,j,max,pos,sum; //用于存放a[i]及其后3个整数之和;int *pa=a,*pb=b; //初值分别存放数组a 和b的首地址;cout<<"数组中的元素为:"<<endl;for(i=0;i<N;i++)cin>>*(a+i);for(i=0;i<N;i++){sum=0;for(j=i;j<i+4;j++)if(j>N-1)sum+=*(a+j-N);elsesum+=*(a+j);*(b+i)=sum;}cout<<"相邻4个数之和分别是:"<<endl; max=*(b+0);for(i=0;i<N;i++){cout<<setw(6)<<*(b+i);if(*(b+i)>max){max=*(b+i);pos=i;}}cout<<endl;cout<<"最大的和值是:"<<max<<endl;cout<<"参与求和的4个数是:";for(i=pos;i<pos+4;i++)if(i>N-1)cout<<setw(6)<<*(a+i-N);elsecout<<setw(6)<<*(a+i);cout<<endl;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机程序设计基础(C++)实验报告信息学院计算机教育中心二零一二年三月实验__1__实验报告教学班级:_______ 学生学号:_ __ 学生姓名:__ _实验日期:_____2011/3/14______ 实验地点:___7204______(机房) 指导教师签名:_strlen(a)__ 实验成绩:___________一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.通过运行示例程序了解程序开发过程;二、实验任务1.新建源程序文件,编辑以下程序,编译,链接,得出运行结果,并保存程序:#include <iostream>using namespace std;void main( ){ cout<<'a'<<endl;cout<<'\141'<<endl;cout<<'\x61'<<endl;}2.新建源程序文件,编辑以下程序,编译,链接,运行,输入36和64,得出运行结果,并保存程序:#include <iostream>using namespace std;int main(){ float num1,num2,sum;cout << "Enter first number: ";cin >> num1;cout << "Enter second number: ";cin >> num2;sum=num1+num2;cout << "The sum is " << sum << endl;return 0;}三、实验结果2.实验__2__实验报告教学班级:_______ 学生学号:___ __ 学生姓名:实验日期:2011/3/21__ 实验地点:_7204__(机房)指导教师签名:__________ 实验成绩:___________ 一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.简单输入和输出语句的练习。
二、实验任务1.输出下面图形:***************2.输入一摄氏温度,输出显示所转换的华氏温度。
(提示:摄氏温度=(华氏温度-32)×5/9)三、实验结果(源程序+ 注释)第一题//屏幕输出*****#include<iostream>using namespace std;void main(){cout<<"*****"<<endl;cout<<"*****"<<endl;cout<<"*****"<<endl;}第二题#include"iostream"using namespace std;void main(){ double t,T; //定义了两个double型变量cout<<"请输入摄氏温度:"<<endl; //提示用户输入摄氏温度cin>>t; //将键盘输入的值赋给t T=t*9/5+32; //按公式求出华氏温度cout<<"华氏温度为:"<<endl<<T<<endl;}实验__3__实验报告教学班级:_______ 学生学号:_ 学生姓名:_实验日期:__2012/3/21__ 实验地点:_7204_(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。
二、实验任务1. 输入一台计算机的编号和该计算机的价格,并输出这些信息。
(如编号为,价格为5 998.00元,注意此处计算机的编号作为一个整数而言超出了int所定义的变量的存储范围,因此只能用double型变量来存储,但输出时要求看见的是整数形式的编号)2. 输入三个同学的学号,计算机和英语课程的考试成绩,并输出这些信息。
要求每个同学的三个信息输出在同一行上,三行输出信息要各列对齐。
三、实验结果(源程序+ 注释)#include"iostream"using namespace std;void main(){double a,b;cout<<"请输入编号和价格:"<<endl;cin>>a>>b;cout<<fixed;cout.precision(0); //使输出的数不为科学计数法cout<<"编号:"<<a<<endl;cout.precision(0); //小数点后保留零位cout<<"价格:"<<b<<endl;}#include "iostream"#include"iomanip"using namespace std;void main(){double A,B,C,a1,a2,a3,b1,b2,b3;cout<<"请输入三位同学的学号:"<<endl;cin>>A>>B>>C;cout<<"请输入三位同学的计算机成绩:"<<endl;cin>>a1>>a2>>a3;cout<<"请输入三位同学的英语课程成绩:"<<endl;cin>>b1>>b2>>b3;cout<<setw(6)<<"同学学号"<<setw(12)<<"计算机成绩"<<setw(12)<<"英语成绩"<<endl; cout<<setw(6)<<A<<setw(8)<<a1<<setw(12)<<b1<<endl;cout<<setw(6)<<B<<setw(8)<<a2<<setw(12)<<b2<<endl;cout<<setw(6)<<C<<setw(8)<<a3<<setw(12)<<b3<<endl;}#include"iostream"//#include"iomanip"using namespace std;void main(){double A,B,C,a1,b1,c1,a2,b2,c2;cout<<"请输入三位同学的学号:"<<endl;cin>>A>>B>>C;cout<<"请输入三位同学的计算机成绩:"<<endl; cin>>a1>>b1>>c1;cout<<"请输入三位同学英语成绩:"<<endl; cin>>a2>>b2>>c2;cout.width(10);cout<<"学号";cout.width(12);cout<<"计算机成绩";cout.width(10);cout<<"英语成绩"<<endl;cout.width(10);cout<<A;cout.width(12);cout<<a1;cout.width(10);cout<<a2<<endl;cout.width(10);cout<<B;cout.width(12);cout<<b1;cout.width(10);cout<<b2<<endl;cout.width(10);cout<<C;cout.width(12);cout<<c1;cout.width(10); cout<<c2<<endl; }实验__4__实验报告教学班级:_______ 学生学号:__________ 学生姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握“处理某一或某些操作只有在特定条件成立的情况下才会被执行”的编程思路2.和方法;3.掌握“一路分支选择结构”算法的实现语句,if语句的使用方法;4.掌握“二路分支选择结构”算法的实现语句,if-else语句的使用方法;二、实验任务1. 有一个函数,输入x的值,输出相应的函数值。
(提示:x取值分大于零和小于等于0的两段,对输入的x值,在计算前应判断范围,采用不同的计算公式。
)2.已知一函数,输入x的值,求解并输出相应的y值。
(提示:该题根据x的取值范围采用不同公式来计算y的值。
显然采用if选择结构可实现该程序。
)三、实验结果(源程序+ 注释)1.#include"iostream"using namespace std;void main(){double x,y;cout<<"请输入X的值:"<<endl; cin>>x;if(x>0) y=x+1;elsey=x*x;cout<<"y="<<y<<endl;}#include"iostream"using namespace std;void main(){double x,y;cout<<"请输入X的值:"<<endl; cin>>x;if(x>0) y=x+1;elsey=x*x;cout<<y<<endl;}实验__5__实验报告教学班级:_______ 学生学号:__________ 学生姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的掌握if else ,switch语句的使用方法;二、实验任务1.编写一个C程序,输入a、b、c 3个值,输出其中最小者。