《西南交大C++实验12.doc》由会员分享,可在线阅读,更多相关《西南交大C++实验12.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流西南交大C+实验12.doc.精品文档.实验_12_实验报告教学班级: _ 学生学号: 学生姓名: 实验日期: 实验地点:_(机房) 指导教师签名:_ 实验成绩:_ 一、实验目的1. 掌握指针变量的使用;2. 掌握用指针方式访问一维数组。二、实验任务1. 求,其中x和n均为整数,由键盘输入。编程输出公式中的每一项的值、以及sum的值。要求:x, n, sum均用指针。2. 统计一维整型数组中能被3整除的元素个数,并输出。要求:数组元素由键盘输入;用指针方式访问数组。3. 学生成绩统计:随机产生30名学生的成绩(0100之间的整数),存放于一维
2、数组中;输出学生成绩,每行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首尾相连,构成一个环形。编程求出相邻的任意四个
3、数之和,并输出。然后找出相加之和最大的四个数,输出求和的结果以及这四个数。要求:用指针方式访问数组。程序运行结果类似于下图,实验报告中的运行结果截图,不能与下图中的数据一样。三、实验结果(源程序 + 注释)1.#include 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的值:*px*pn;j=x;*psum=0;while(i=*pn)*psum=*psum+j;i+;j=j*
4、x/i;coutsum=*psumendl;2.#include using namespace std; void main()cout学号: 姓名:endl;cout=endl;int a100,n,j=0,*p;cout请输入一维整型数组中的元素个数:n;cout请输入一维整型数组中的元素:endl;for(p=a;p*p;for(p=a;pa+n;p+)if(*p%3=0)j=j+1;cout该数组中能被3整除的元素个数为:jendl;3.#include #include#includeusing namespace std; void main()cout学号: 姓名:endl;c
5、out=endl;int a30,*q,i=0;/a30用于存放30名学生的成绩int c5=0;/分别存放5个分数段的学生人数int *pa=a,*pc=c;/初值分别存放数组a和c的首地址srand(time(NULL);for(q=a;qa+30;q+)*q=0+rand()%(100-0+1);cout学生成绩为:endl;for(q=a;qa+30;q+)coutsetw(6)*q;i=i+1;if(i%10=0)coutendl;switch(*q/10)case 10:case 9:*(pc+4)=*(pc+4)+1;break;case 8:*(pc+3)=*(pc+3)+1;
6、break;case 7:*(pc+2)=*(pc+2)+1;break;case 6:*(pc+1)=*(pc+1)+1;break;default:*pc=*pc+1;cout学生成绩统计如下:endl;coutsetw(10)分数段setw(10)90100setw(10)8089setw(10)7079setw(10)6069setw(10)60以下endl;coutsetw(10)人数setw(10)*(pc+4)setw(10)*(pc+3)setw(10)*(pc+2)setw(10)*(pc+1)setw(10)*pcendl;4.#include using namespac
7、e std; void main( ) cout学号: 姓名:endl;cout=endl;int a20,*p;int m,i,t;coutm;cout循环左移m位前,数组元素为:endl;for(p=a;p*p;for(i=0;im;i+)p=a;t=*p;for(;pa+9;p+)*p=*(p+1);*p=t;cout数组循环左移m位后的数组为:endl;for(p=a;pa+10;p+)cout*p ;coutendl;5.#include #includeusing namespace std; void main()cout学号: 姓名:endl;cout=endl;const i
8、nt N=10;int aN=8,5,13,15,3,11,6,7,22,10;/用于存放10个整数;int bN=0,i,j,max,pos,sum;/用于存放ai及其后3个整数之和;int *pa=a,*pb=b;/初值分别存放数组a和b的首地址;cout数组中的元素为:endl;for(i=0;i*(a+i);for(i=0;iN;i+)sum=0;for(j=i;jN-1)sum+=*(a+j-N);elsesum+=*(a+j);*(b+i)=sum;cout相邻4个数之和分别是:endl;max=*(b+0);for(i=0;iN;i+)coutsetw(6)max)max=*(b+i);pos=i;coutendl;cout最大的和值是:maxendl;cout参与求和的4个数是:;for(i=pos;iN-1)coutsetw(6)*(a+i-N);elsecoutsetw(6)*(a+i);coutendl;