西南交大c实验报告

合集下载

西南交大C++ 实验五.doc

西南交大C++ 实验五.doc

实验__5__实验报告教学班级:______ 学生学号:________ 学生姓名:___________实验日期:__2018/4/17_________ 实验地点:_指导教师签名:__________ 实验成绩:___________一、实验目的1.理解“处理某一或某些操作需要被有条件地重复执行”的编程思路和方法;2.掌握循环结构的程序设计,以及while、do-while和for循环语句的使用方法。

二、实验任务1.一只猴子摘了N个桃子第一天吃了一半又多吃了一个,第二天又吃了余下的一半又多吃了一个,到第十天的时候发现还有一个。

2. 编程实现十进制整数和八进制整数之间的转换(即将10进制数转换为8进制数,或将8进制数转换为10进制数)。

3.计算由键盘输入的两个数的最大公约数和最小公倍数。

4.计算正弦的近似值。

sin(x)=x-x^3/3!+x^5/5!-x^7/7!+……5.由键盘输入若干职工的工资收入(以负数结束),输出每个职工的工资收入、计算并输出每个职工的缴税额,统计并输出职工总人数和总缴税额。

三、实验结果(源程序+ 注释)1.#include<iostream>using namespace std;void main(){cout<<"学号:****** 姓名:***"<<endl;int i,s,sum;s=1;i=9;sum=1;while (i>=1){s=(s+1)*2;i=i-1;sum=sum+s;}cout<<"总共有"<<sum<<"个桃子"<<endl;}2.//编程实现十进制整数和八进制整数之间的转换#include<iostream>using namespace std;void main(){cout<<"学号:****** 姓名:***"<<endl;int i,x,n,j;cout<<"请输入一个十进制整数:"<<endl;cin>>i;x=0,n=0;while (i>0){j=i%8;i=i/8;x=x+j*pow(10.0,n);n=n+1;}cout<<"该十进制数对应的八进制数为:"<<x<<endl; cout<<"请输入一个八进制整数:"<<endl;cin>>x;i=0,n=0;while(x>0){j=x%10;x=x/10;i=i+j*pow(8.0,n);n=n+1;}cout<<"该八进制数对应的十进制数为:"<<i<<endl; }3. // 计算由键盘输入的两个数的最大公约数和最小公倍数。

西南交大C++实验二.doc

西南交大C++实验二.doc

实验__2__实验报告教学班级:___ 学生学号:_________ 学生姓名:___________实验日期:_________ 实验地点:指导教师签名:__________ 实验成绩:___________一、实验目的1. 掌握顺序结构的编程思路和方法;2. 掌握格式输入输出和数据类型转换。

二、实验任务1.给朋友打印生日卡,生日卡格式输入:====================================My dear Zhang,Happy birthday to you!yours,Li====================================要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。

2.已知赵六同学学号20110101111,他期末参加了高等数学、普通物理、大学英语三门课程期末考试。

编程实现:键盘输入学生的学号、以及各科的成绩,计算平均成绩。

输入输出格式参见下图。

要求:⑴学号作为一个整数而言,超出了int所定义的变量的存储范围,因此只能double 型变量来存储,但输出时要求看见的是整数形式的学号。

⑵输出对齐,成绩保留2位小数。

3.键盘输入一个小写字母,将其转换成大写字母,并输出它们的ASCII码值及其原字符。

4.计算万有引力。

由普通物理知, 两个质量分别为m1和m2的物体之间的万有引力F与两个物体质量的乘积成正比, 与两个物体质心之间的距离R的平方成反比:式中G为引力常数,如果F的单位为牛顿(N),质量的单位为千克(kg),物体质心的距离单位为米(m),则,已知太阳的质量为千克,地球的质量为kg,太阳与地球的距离为m,请计算太阳与地球之间的万有引力。

5.加法器键盘输入两个数,计算这两个数的和,并输出结果。

三、实验结果(源程序+ 注释)1.//给朋友打印生日卡,要求你的名字和你朋友的名字均由键盘输入,在输入名字时请给出提示信息。

#include<iostream>#include<string>using namespace std;int main(void){ string name1; //定义变量name1 string name2; //定义变量name2cout<<"学号:"<<endl;cout<<"请输入你的名字:"<<endl;cin>>name1; //将输入的名字赋值给name1 cout<<"请输入你朋友的名字:"<<endl;cin>>name2; //将输入的名字赋值给name2cout<<"===================================="<<endl;cout<<" My dear "<<name2<<endl;cout<<" Happy birthday to you!"<<endl;cout<<" yours,"<<endl;cout<<" "<<name1<<endl;cout<<"===================================="<<endl;return 0;}2. //键盘输入学生的学号以及各科的成绩,计算平均成绩。

西南交通大学C实验报告

西南交通大学C实验报告

计算机程序设计基础(C++)实验报告信息学院计算机教育中心二零一二年三月目录实验__1__实验报告 (3)实验__2__实验报告 (5)实验__3__实验报告 (6)实验__4__实验报告 (7)实验__5__实验报告 (11)实验__6__实验报告 (14)实验__7__实验报告 (17)实验__8__实验报告 (19)实验__9__实验报告 (20)实验__10__实验报告 (21)实验__11__实验报告 (22)实验__12__实验报告 (23)实验__13__实验报告 (24)实验__14__实验报告 (25)实验__15__实验报告 (26)实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的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;}三、实验结果教学班级:_______ 学生学号:__________ 学生姓名:___________ 实验日期:___________ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.熟悉Visual studio 6.0集成开发环境;2.学习新建和打开控制台应用程序的方法;3.简单输入和输出语句的练习。

西南交大C实验13

西南交大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++实验11.doc

西南交大C++实验11.doc

实验 11 实验报告一、实验目的1.掌握string字符串型的使用方法;2.掌握string字符串型的基本操作:大小写转换、字符统计、关键字查找、字符串排序等的常用算法。

二、实验任务1. 输入并存储一个字符串,将该字符串中的所有小写字母转换为大写字母后输出。

要求:使用字符数组(即char数组)存放字符串。

2.输入并存储一个字符串,统计该字符串中'a'字符(不区分大小写)的个数。

要求:使用string变量存放字符串。

3. 输入并存储一个字符串,将该字符串中的每个字母加10后再将字符串输出。

要求:分别采用以下方法实现(1)使用字符数组(即char数组)存放字符串;(2)使用string变量存放字符串。

4. 输入并存储一个由26个英文字母(不分大小写)组成的字符串,再输入一个英文字母,查找该字母在字符串中第一次出现的位置。

三、实验结果(源程序+ 注释+ 运行界面截图)(要求:(1)提供源程序;(2)源程序包含必要的注释,包括:在程序头部给出本程序功能的注释、所定义变量的用途注释、程序块的功能注释、子函数的功能注释等;(3)运行结果的窗口截图,程序运行结果中输出的第一行内容必须为:程序作者的学号和姓名。

)1.#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;int i;char s[100];gets(s);strlen(s) ;for(i=0;i<strlen(s);i++)if (s[i]>='a'&&s[i]<='z')s[i]=s[i]-32;cout<<s<<endl;}2.#include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;int i,number=0;getline(cin,s);for(i=0;i<s.size();i++)if(s[i]=='a'||s[i]=='A')number=number+1;cout<<number<<endl;}3.(1)#include<iostream>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;char s[100];int i;cout<<"请输入一个字符串:"<<endl;gets(s);for(i=0;i<strlen(s);i++)s[i]=s[i]+10;cout<<"转换后的字符串为:"<<endl;cout<<s<<endl;}(2)include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;int i;cout<<"请输入一个字符串:"<<endl;getline(cin,s);for(i=0;i<s.size();i++)s[i]=s[i]+10;cout<<"转换后的字符串为:"<<endl;cout<<s<<endl;}4.#include<iostream>#include<string>using namespace std;void main(){cout<<"学号:姓名:"<<endl;cout<<"========================================="<<endl;string s;char x;int i,num=0;cout<<"请输入一个字符串:"<<endl;getline(cin,s);cout<<"请输入一个英文字母:"<<endl;cin>>x;for(i=0;i<s.length();i++)if(s[i]==x){num=i;break;}if(i<s.length())cout<<"字母"<<x<<"在字符串"<<s<<"第一次出现在第"<<num+1<<"个"<<endl;elsecout<<"在字符串"<<s<<"中没有字母"<<x<<endl;}。

西南交通大学计算机程序设计基础C++实验报告10

西南交通大学计算机程序设计基础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;}。

西南交大C++实验12.doc

西南交大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=&sum;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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验__8__实验报告教学班级:_26_ 学生学号:_201_ 学生姓名:_ _实验日期:__5.26___ 实验地点:_________(机房)指导教师签名:__________ 实验成绩:___________一、实验目的1.掌握对数值型一维数组的使用方法;2.掌握对数组的插入、删除、修改、排序和查找等常用算法。

二、实验任务1. 设有一批学生的程序设计课程的考试成绩(学生人数最多为N=100人,数据如下:(提示:可以建立三个一维数组来存放学生的数据,其中:学号为一个long类型的数组studentID,姓名为一个string类型的数组name,成绩为一个int类型的数组grade)(1)由键盘获取学生人数n,要求学生人数n的取值范围11到N-2;(2)由键盘获取学生的相关数据;(3)用选择排序法将学生的数据按学号进行升序排列并输出排序后的学生数据;2. 在任务1的基础上,在学生数据中,完成以下任务:(1)键盘输入一个学生的学号,用折半查找法查找是否有该学生,若有该学生则输出该学生的所有信息,按如下格式输出:学号程序设计成绩2015112324 张思德72若没有该学生,则输出“查无此人”的信息。

(2)插入一个新学生的数据,要求插入后学生的数据任按学号升序排列。

⒊在任务1的基础上,在学生数据中,完成以下任务:⑴用选择排序法将学生数据按学生程序设计课程成绩降序排列。

⑵键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。

三、实验结果(源程序+ 注释)//输入并升序排列学生的成绩#include<iostream>#include<string>#include<iomanip>using namespace std;void main(){cout << "Name:" << endl;cout << "Number:20" << endl;long studentID[100], trans1;//定义两个长整型变量,其中一个是数组string name[100], trans2;//定义两个字符串类变量,其中一个是数组int grade[100], n, i, j, trans3;cout << "请输入学生人数n (11≤n≤98)" << endl;cin >> n;//从键盘输入学生的人数for (i = 0; i <= n - 1; i++)//利用循环结构录入各学生的信息{cout << "请依次输入第" << i + 1 << "个学生的学号、、成绩" << endl;cin >> studentID[i] >> name[i] >> grade[i];}for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按学号进行升序排列{for (j = i + 1; j <= n - 1; j++){if (studentID[i] > studentID[j]){trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1;trans2 = name[i]; name[i] = name[j]; name[j] = trans2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3;}}}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] << endl;}/*键盘输入一个学生的学号,用折半查找法查找是否有该学生*/int bot = n - 1, mid, top = 0;long number;cout << "请输入待查学生的学号" << endl;cin >> number;while (top <= bot)//折半查找法查找信息库中某个学号的学生{mid = (bot + top) / 2;if (studentID[mid] == number) break;else if (studentID[mid] > number) top = mid + 1;else if (studentID[mid] < number) 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] << endl;}else if(top>=bot) cout << "查无此人" << endl;//当该学生不存在时,显示“查无此人”/*插入一个新学生的数据,要求插入后学生的数据按学号升序排列*/cout << "请依次输入要插入的学生学号、、成绩信息:" << endl;cin >> studentID[n] >> name[n] >> grade[n];//录入要插入的学生的信息for (i = 0; i <= n; i++)//利用嵌套循环和条件语句,将插入后学生的数据按学号升序排列{for (j = i + 1; j <= n; j++){if (studentID[i] > studentID[j]){trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1;trans2 = name[i]; name[i] = name[j]; name[j] = trans2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3;}}}cout << "插入并排序后学生的成绩信息为:" << endl;cout << setw(10) << "学号" << setw(10) << "" << setw(10) << "成绩" << endl;//限定提示语句的输出格式for (i = 0; i <= n; i++){cout << setw(10) << studentID[i] << setw(10) << name[i] << setw(10) << grade[i] << endl;//输出排序结果}}/*在任务1的基础上,在学生数据中,完成以下任务:⑴用选择排序法将学生数据按学生程序设计课程成绩降序排列。

⑵键盘输入一个学生的学号和程序设计课程的新成绩,在学生数据中查找是否有该学生,若有该学生则用键盘输入的新成绩替换该学生的原成绩,否则输出“查无此人”的信息。

*/#include<iostream>#include<string>#include<iomanip>using namespace std;void main(){cout << "Name:" << endl;cout << "Number:201" << endl;long studentID[100], trans1;//定义两个长整型变量,其中一个是数组string name[100], trans2;//定义两个字符串类变量,其中一个是数组int grade[100], n, i, j, trans3;cout << "请输入学生人数n (11≤n≤98)" << endl;cin >> n;for (i = 0; i <= n - 1; i++){cout << "请依次输入第" << i + 1 << "个学生的学号、、成绩" << endl;cin >> studentID[i] >> name[i] >> grade[i];//利用循环结构录入各学生的信息}for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按学号进行升序排列{for (j = i + 1; j <= n - 1; j++){if (studentID[i] > studentID[j]){trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1;trans2 = name[i]; name[i] = name[j]; name[j] = trans2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3;}}}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] << endl;}for (i = 0; i <= n - 1; i++)//利用嵌套循环和条件语句将信息按成绩进行降序排列{for (j = i + 1; j <= n - 1; j++){if (grade[i] < grade[j]){trans1 = studentID[i]; studentID[i] = studentID[j]; studentID[j] = trans1;trans2 = name[i]; name[i] = name[j]; name[j] = trans2;trans3 = grade[i]; grade[i] = grade[j]; grade[j] = trans3;}}}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] << endl;}cout << "请输入一个学生的学号和新成绩" << endl;cin >> studentID[n] >> grade[n];//从键盘输入学生的学号和新成绩int top=0, bot=n-1, mid;while (top <= bot){mid = (bot + top) / 2;if (studentID[mid] == studentID[n]) break;else if (studentID[mid] > studentID[n]) top = mid + 1;else if (studentID[mid] < studentID[n]) bot = mid - 1;}if (bot >= top)//若该学生存在,输出成绩更新后所有学生的信息{grade[mid] = grade[n];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] << endl;}}else if (top > bot) cout << "查无此人" << endl;//若该学生不存在,显示“查无此人”}。

相关文档
最新文档