(最新版)西南交通大学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;}。
c语言实验一实验报告1000字范文
c语言实验一实验报告1000字范文为什么那么多人学习C语言都半途而废呢?原因就是他们找不到正确的学习方法!在学习的过程中四处碰壁,兴趣和自信心逐渐被消耗殆尽。
对他们来说学习C 语言是一件很痛苦的事!小编整理了c语言实验一实验报告1000字范文,希望能帮助到您。
c语言实验一实验报告1000字范文一1、首先结合老师上课所讲内容,将课本知识点回顾一遍,并将重点知识点摘录到笔记本中,经常翻看,形成自己的知识结构体系,把握最基本的概念。
2、将老师评时布置的作业进行统一的整理,有些有代表性的程序代码可以摘录到笔记本上,一方面可以加深记忆,另一方面也方便自己后来的上机操作,可以经常翻看。
3、将书本上的例题,典型算法,以及老师布置的作业上面的程序全部自己敲一遍,有的可能需要2~3遍,做到最程序了然于心。
并且时常复习,每天可利用各种空隙时间在手机上编程,也可规定一段时间专门用来编程,临近考试的时间,可以每天都编写一段时间,锻炼自己的手感,减少错误率。
4、最后根据老师的建议,就是做题,事实证明这个是极为正确的。
通过做大量的上机实验题,发现自己的问题,如果是概念问题,那就继续回到课本,再将知识点巩固一遍,如果是新的题型,那就记住,下一次便不会再犯错。
通过做习题,你对知识的理解就会更加深一个层次,而且慢慢的你会发现,你开始有了C语言的思维,并且越来越喜欢上它,有时候分析出一个程序题,也是一种快乐。
最后,我想说,做题会使自己有质的飞跃,千万不能忽视做题的过程,还有就是一但有不懂,一定要去问老师,老师常常不仅能帮你解决问题,还可以打开你的思维,做到举一反三。
对于C语言,可以说,我对它是“爱恨交加”。
第一个阶段,我对它是完全不来电的,可以说从来没有一门课让我如此抓狂,刚开始的时候看书都很吃力,而且很难看进去。
整个人完全是懵圈的状态。
第二阶段,我开始对C语言有了一丁点兴趣,在期中考试过后,我意识到问题的严重性,如果自己再不想办法,就真的要出问题了。
西南交通大学C实验报告
计算机程序设计基础(C++)实验报告软件学院二O一O年三月11实验__1__实验报告教学班级: 6 学生学号:学生姓名:指导教师签名:王健金焕实验成绩:___________一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.通过运行示例程序了解程序开发过程;二、实验任务.输出下面图形:12.输入一摄氏温度,输出显示所转换的华氏温度。
(提示:摄氏温度=(华氏温度-32)×5/9)三、实验结果(源程序+ 注释)#include<iostream>using namespace std;void main(){cout<<" * "<<endl;cout<<" * * * * "<<endl;cout<<" * * * * "<<endl;cout<<" * "<<endl;}2233#include<iostream>using namespace std;void main(){double a,b;cout<<"请输入一摄氏温度:"<<endl;cin>>a;b=a*9/5+32;cout<<"对应的华氏温度是:"<<b<<endl;}4 455实验__2__实验报告一、实验目的1.掌握对一般数据的输入和输出格式控制方法;2.掌握对实型数据输出形式的设置和小数位数的控制方法;3.了解数据输入的相关注意事项。
二、实验任务1. 输入一台计算机的编号和该计算机的价格,并输出这些信息。
(如编号为10987654321,价格为5 998.00元,注意此处计算机的编号作为一个整数而言超出了int 所定义的变量的存储范围,因此只能用double 型变量来存储,但输出时要求看见的是整数形式的编号)2. 输入三个同学的学号,计算机和英语课程的考试成绩,并输出这些信息。
c语言实验报告心得总结(精选14篇)
c语言实验报告心得总结(精选14篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作报告、合同协议、心得体会、演讲致辞、规章制度、岗位职责、操作规程、计划书、祝福语、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample texts, such as work reports, contract agreements, insights, speeches, rules and regulations, job responsibilities, operating procedures, plans, blessings, and other sample texts. If you want to learn about different sample formats and writing methods, please pay attention!c语言实验报告心得总结(精选14篇)【第1篇】c语言实验报告心得总结900字在初学c语言的一个学期后,我们进行了c语言实训阶段,尝试编写一个比较复杂的程序系统。
c语言实验报告总结(范本)
c语言实验报告总结c语言实验报告总结篇一:C语言上机实验心得C语言上机实验心得在科技高度发展的今天,计算机在人们之中的作用越来越突出。
而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机进行交流,因此,我们一定要学好C语言,这对我们以后的发展是十分重要的。
说到这,上机实验当然就是一个必不可少的环节了,C语言灵活、简洁的特点,只有通过编程实践才能真正了解,真正说懂。
为了更好地学习语法规定、掌握程序设计方法、提高程序开发能力,我们必须实际上机、编写程序。
通过实验我也发现了自己不少的问题,这都是只看书上的程序而没有自己亲身上机编写程序而无法得知的,假如我们只因看熟书上的程序就以为自己已经掌握了C语言那就大错特错了。
我主要存在以下的这些缺点:1、学习耐心与细心不足,如scanf(“%d”, n);中的“”有时候会忘了。
而在最后输出时又错写成printf(“%d”, 从而错误得输出了地址而不是我原来想要的答案。
2、编程思想不够发散,看着题目有时想不出解答的方法,更不用说编写程序来解题了。
3、4、基本功不够,有些函数的表达不太精通,需要看书来核实,以致耗时较多。
知识不够广,有些内容没有学好,不能要用到时及时反映出来,认识程度不够深刻。
5、6、有时候不够精简,有一点用处不大或者说没有也可以的文字存在。
英语水平较差,对错误的地方虽然电脑有说,但由于是英文,理解上还是存在一点问题。
为了能更好地学好C语言,在今后学习中我要更多的动脑,综合运用所学,多看相关东西,多上机练习,提高电脑水平,增强自学能力,把已会的东西掌握好。
实验中我深刻意识到完成程序的编写,决不意味着万事大吉。
认为万无一失的程序,实际上机运行时可能会出现很多意想不到的问题。
有时编译程序检测出一大堆错误,有时程序能够顺利运行,但是运行结果并不是你预期中想要的。
西南交大c实验报告
西南交大c实验报告
《西南交大C实验报告》
在西南交通大学C实验室进行了一项关于C语言编程的实验,旨在帮助学生掌握C语言的基本语法和编程技巧,提高他们的编程能力。
实验内容包括基本的C语言程序设计、数据类型、运算符、控制结构、函数、数组、指针等内容。
在实验过程中,学生们通过实际操作,掌握了C语言的基本语法和编程技巧。
他们学会了如何编写简单的C语言程序,如何使用不同的数据类型和运算符进行计算,如何使用控制结构进行流程控制,如何定义和调用函数,如何使用数组和指针等。
通过实验,学生们不仅掌握了C语言的基本知识,还培养了他们的动手能力和解决问题的能力。
他们在实验中遇到了各种问题,通过自己的努力和老师的指导,逐渐解决了这些问题,取得了丰硕的成果。
通过这次实验,学生们对C语言有了更深入的了解,提高了他们的编程能力,为以后的学习和工作打下了坚实的基础。
同时,实验也让学生们感受到了编程的乐趣,激发了他们对计算机编程的兴趣,为他们的未来发展打开了一扇新的大门。
在未来的学习和工作中,学生们将继续努力,不断提高自己的编程能力,为科技创新和社会发展做出更大的贡献。
西南交通大学将继续为学生提供更多的实践机会和发展平台,帮助他们实现自己的梦想,成为优秀的计算机专业人才。
【最新】西南交大,数字电路,实验报告-word范文 (8页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==西南交大,数字电路,实验报告篇一:数字电子技术实验报告数字电子技术实验报告姓名:尚朝武学号:201X0123400044 实验时间:201X-12-24实验一(一) 1、实验内容:(1用静态法测试74LS00与非门电路的逻辑功能 2、实验原理图如图1.113、实验步骤:1) 用万用表测量双路跟踪稳压电源中的+5V电源电压; 2) 检查无误后引用通用接插板;3) 在芯片盒中找到74LS00芯片并插入通用接插板上; 4) 测试与非门的逻辑功能A. 按图1.1接线,检查接线无误后通电;;B. 设置输入变量A、B的高(H)、低(L)电平,并分别测量与非门的输出电压U;(U>3.6V时,则Y=H(1);反之,Y=L(0))。
5)用万用表测量输出电压,并将结果填入表1.1.1中 4、实验结果见表1.1.1表1.1.1(二 1、实验内容用动态测试法验证图(a)、(b)、(c)的输入输出波形。
2、实验原理图图图图(表)d74ls86管脚图和引脚图及真值表3、实验步骤1)利用实验一——(一)的双路跟踪稳压电源中的+5V电源电压; 2)检查无误后引用通用接插板;3)在芯片盒中分别找到74LS86、74LS60芯片并分别插入通用接插板上; 4)分次按图a、b、c、d接线,检查接线无误后通电;设置输入变量A的信号为100kHz 5)分别记下数字显示器显示的波形。
4、实验结果见下图图a的输入(图上)、输出(图下)波形图b的输入(图上)、输出(图下)波形三)图c的输入(图上)、输出(图下)波形1、实验内容:(1用静态法测试74LS139静态译码器的逻辑功能 2、实验原理图如图A、B 3、实验步骤:1) 利用实验一——(一)的双路跟踪稳压电源中的+5V电源电压; 2) 检查无误后引用通用接插板;3) 在芯片盒中找到74LS139芯片并插入通用接插板上; 4) 测试74LS139译码器的逻辑功能a) 按图1.1接线,检查接线无误后通电;;b) 设置输入变量A、B及E的高(H)、低(L)电平,并分别测量74LS139的输出电压U;(U>3.6V时,则Y=H(1);反之,Y=L(0)); 5)用万用表测量输出电压,并将结果填入表1.2中 4、实验结果见表1.2图A 74LS139的管脚图篇二:201X-201X西南交大数字电路第1次作业(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。
- 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个值,输出其中最小者。