实验__12__实验报告教学班级:_学生学号:学生姓名:实验日期:实验地点:____________(机房)指导教师签名:_____________实验成绩:______________一、实验目的1.掌握指针变量的使用;2.掌握用指针方式访问一维数组。二、实验任务1.求sum=x+𝑥22!+𝑥33!+⋯+𝑥𝑛𝑛!,其中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.#includeiostreamusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;intn,i=1;int*pn=&n;doublex,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;}coutsum=*psumendl;}2.#includeiostreamusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;inta[100],n,j=0,*p;cout请输入一维整型数组中的元素个数:endl;cinn;cout请输入一维整型数组中的元素:endl;for(p=a;pa+n;p++)cin*p;for(p=a;pa+n;p++)if(*p%3==0)j=j+1;cout该数组中能被3整除的元素个数为:jendl;}3.#includeiostream#includeiomanip#includectimeusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;inta[30],*q,i=0;//a[30]用于存放30名学生的成绩intc[5]={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){case10:case9:*(pc+4)=*(pc+4)+1;break;case8:*(pc+3)=*(pc+3)+1;break;case7:*(pc+2)=*(pc+2)+1;break;case6:*(pc+1)=*(pc+1)+1;break;default:*pc=*pc+1;}}cout学生成绩统计如下:endl;coutsetw(10)分数段setw(10)90~100setw(10)80~89setw(10)70~79setw(10)60~69setw(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.#includeiostreamusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;inta[20],*p;intm,i,t;cout请输入m的值:;cinm;cout循环左移m位前,数组元素为:endl;for(p=a;pa+10;p++)cin*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.#includeiostream#includeiomanipusingnamespacestd;voidmain(){cout学号:姓名:endl;cout=========================================endl;constintN=10;inta[N]={8,5,13,15,3,11,6,7,22,10};//用于存放10个整数;intb[N]={0},i,j,max,pos,sum;//用于存放a[i]及其后3个整数之和;int*pa=a,*pb=b;//初值分别存放数组a和b的首地址;cout数组中的元素为:endl;for(i=0;iN;i++)cin*(a+i);for(i=0;iN;i++){sum=0;for(j=i;ji+4;j++)if(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)*(b+i);if(*(b+i)max){max=*(b+i);pos=i;}}coutendl;cout最大的和值是:maxendl;cout参与求和的4个数是:;for(i=pos;ipos+4;i++)if(iN-1)coutsetw(6)*(a+i-N);elsecoutsetw(6)*(a+i);coutendl;}