数组的应用电力实10 郝毅(201001000707)上机时间:周二上午一实验目的1 掌握数值型一维数组及二维数组的定义,初始化,以及输入输出的方法。
2 掌握用一维数组及二维数组实现的算法。
3 掌握字符型数组的定义,初始化,以及输入输出的方法。
4 掌握用字符型数组解决字符串问题的方法。
5 掌握常用字符串处理函数。
6 掌握用数组作为函数形参的相关语法规则和编程技巧。
7 掌握在VisualC++集成环境中调试与数组相关程序的方法。
二程序分析1Step1:定义数值型一维数组,及变量n,max,min,I,c;Step2:输入n的值,利用for语句,从键盘输入n个数据,存放在数组中。
Step3;利用for语句遍历n个数组元素,利用max存放最大值,利用min存放最小值;Step4:利用变量c将最大值与a[n-1]交换位置,并将min与a[0]交换位置;Step5;;利用for语句输出数组的前n个元素。
2题Step1:定义数值型一维数组,整型变量s;Step2:利用while语句输入一组数并存放在数组中,同时对该组数求和。
Step3:求出数组预案数的平均值,利用for语句遍历数组元素,并利用计数器计数其中大于等于平均值的实数个数。
Step4:输出计数器的值;3题Step1:定义数值型一维数组,及变量i;Step2:利用for语句遍历从1到100,将所有能被7或11整除的整数存放在数组中。
Step3:利用for语句输出数组元素十个数一行。
4题Step1:定义数值型一维数组,数组长度为50;变量s,i,c=51;Step2:利用while语句将一组互不相同且非0的整数存放在数组中,Step3:输入s的值。
Step4:利用for语句遍历数组元素,找出与s相同的元素,并记录其位置c=I,若不存在,则c=51;Step5:判断c的值,若小于51,则输出i的值,否则输出该数不存在;5题Step1,定义两个一维数组a[8],b[8],并初始化a[20]为{1,2,5, 1,1,3,7,0},及变量c,i,j;Step2:输入变量c的值。
Step3:利用for语句,遍历a[8],若a[i]!=c,则将a[i]存放在b[j]中;Step4: 利用for语句输出b[8]的值;二程序清单1#include"iostream.h"void main(){int a[50],n,i,max,min,s,t,j;cout<<"Input the n:";cin>>n;for(i=0;i<n;i++)cin>>a[i];max=a[0];min=a[0];for(i=0;i<n;i++){if(max<a[i]){max=a[i];s=i;}if(min>a[i]){min=a[i];t=i;}}j=a[n-1];a[n-1]=a[s];a[s]=j;j=a[0];a[0]=a[t];a[t]=j;for(i=0;i<n;i++)cout<<" "<<a[i];}2#include"iostream.h"void main(){float a[50],s=0,c=1,t=0;int i=0;cout<<"输入实数:";while(c>0){cin>>c;a[i]=c;s+=a[i];i++;}s=s/(i+1);for(i=0;a[i]!=0;i++)if(a[i]>s||a[i]==s)t++;cout<<"大于等于平均数的实数个数:"<<t;}3#include "iostream.h"void main(){int a[50],i,j=0,t;for(i=1;i<=100;i++)if((i%7==0)||(i%11==0)){a[j]=i;j++;}for(t=0;t<j;t++){cout<<" "<<a[t];if((t+1)%10==0)cout<<endl;} }4#include "iostream.h"void main(){int a[50],c=1,i=0,s,t=50;cout<<"输入数列:";while(c!=0){cin>>c;a[i]=c;i++;}cout<<"输入要查找的数:";cin>>s;for(i=0;a[i]!=0;i++){if(a[i]==s)t=i+1;}if(t==50)cout<<"该数不存在";else cout<<s<<"在数列中,是第"<<t<<"个数"; }第二次运行:5#include "iostream.h"void main(){int a[50],b[50],c=1,s,i=0,j=0,v; cout<<"输入数列:";while (c!=0){cin>>c;a[i]=c;i++;}cout<<"输入要查找的数:";cin>>s;for(i=0;a[i]!=0;i++)if(a[i]!=s){b[j]=a[i];j++;}cout<<"处理结果:";for(v=0;v<j;v++)cout<<" "<<b[v];}6#include "iostream.h"void main(){int a[5]={1,2,3,4,5};int i,s;for(i=0;i<=4;i++)cout<<" "<<a[i];s=a[4];for(i=4;i>0;i--)a[i]=a[i-1];a[0]=s;cout<<endl;for(i=0;i<=4;i++)cout<<" "<<a[i];}7#include "iostream.h";void main(){int a[11],b[11],i,j,s,t;cout<<"输入数列:";for(i=0;i<10;i++)cin>>a[i];for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}cout<<"要插入的数:";cin>>s;for(i=0;i<10;i++)if(a[i]<s)break;for(j=0;j<i;j++)b[j]=a[j];b[j]=s;for(j=j+1;j<11;j++)b[j]=a[j-1];for(j=0;j<11;j++)cout<<" "<<b[j];}8#include "iostream.h"void main(){ int a[20],b[20],i=0,c=1,s=0,j,t=0; cout<<"输入数列:";while(c>0){cin>>c;a[i]=c;i++;}for(i=0;a[i]>0;i++){for(j=2;j<a[i];j++)if(a[i]%j==0)break;if(j>=a[i]&&a[i]!=1){b[t]=a[i];t++;s+=a[i];}} cout<<"素数和:\ns="<<s;for(i=0;i<t-1;i++)for(j=i+1;j<t;j++)if(b[i]<b[j]){c=b[i];b[i]=b[j];b[j]=c;}cout<<"\n素数:\n";for(i=0;i<t;i++)cout<<" "<<b[i];}9#include "iostream.h"void main(){int a[10],b,i=0,j,k,t;cout<<"输入整数:";cin>>b;while(b>0){a[i]=b%10;i++;b/=10;}for(j=0;j<i-1;j++)for(k=j+1;k<i;k++)if(a[j]<a[k]){t=a[j];a[j]=a[k];a[k]=t;} cout<<"重组后的数:";for(j=0;j<i;j++)cout<<a[j];}10#include"iostream.h";void main(){int a[2][3],b[2][3],c[2][3],i,j;cout<<"输入第一个矩阵:\n";for(i=0;i<2;i++)for(j=0;j<3;j++)cin>>a[i][j];cout<<"输入第二个矩阵:\n";for(j=0;j<3;j++)cin>>b[i][j];for(i=0;i<2;i++)for(j=0;j<3;j++)c[i][j]=a[i][j]+b[i][j]; cout<<"矩阵和:\n";for(i=0;i<2;i++){for(j=0;j<3;j++)cout<<" "<<c[i][j];cout<<endl;}}11#include "iostream.h" void main (){ int a[3][3],i,j;cout<<"输入矩阵:"<<endl;for(j=0;j<3;j++)cin>>a[i][j];cout<<"输出其转置"<<endl;for(i=0;i<3;i++){for(j=0;j<3;j++)cout<<" "<<a[j][i];cout <<endl;}cout<<"输出其上三角形部分:"<<endl; for(i=0;i<3;i++){for(j=0;j<i;j++)cout<<" ";for(j=i;j<3;j++)cout<<" "<<a[i][j];cout<<endl;}cout<<"输出其下三角形部分:"<<endl; for(i=0;i<3;i++){for(j=0;j<=i;j++)cout<<" "<<a[i][j];cout<<endl;}}12#include "iostream.h"void main(){ int a[3][4],i,j,max,min,b,c;cout<<"输入矩阵:\n";for(i=0;i<3;i++)for(j=0;j<4;j++)cin>>a[i][j];for(i=0;i<3;i++){max=a[i][0];b=0;for(j=0;j<4;j++)if(max<a[i][j]){max=a[i][j];b=j;}cout<<"第"<<i+1<<"行最大数:"<<max<<",在第"<<b+1<<"列"<<endl;}for(i=0;i<4;i++){min=a[0][i];c=0;for(j=0;j<3;j++)if(min>a[j][i]){min=a[j][i];c=j;}cout<<"第"<<i+1<<"列最小数:"<<min<<",在第"<<c+1<<"行"<<endl;}}13#include "iostream.h"void main(){int a[3][4],b[3][4],i,j;cout<<"输入矩阵:"<<endl;for(i=0;i<3;i++)for(j=0;j<4;j++)cin>>a[i][j];for(i=0;i<4;i++)for(j=0;j<3;j++)b[i][j]=a[j][i];for(i=0;i<4;i++){for(j=0;j<3;j++)cout<<" "<<b[i][j];cout<<endl;}}15#include "iostream.h"#include "string.h"void main(){ char a[20];int b[10]={0},i,j=0; cout<<"输入字符串:";cin>>a;for(i=0;i<strlen(a);i++)b[a[i]-'0']++;for(i=0;i<10;i++)cout<<"字符"<<i<<"的个数:"<<b[i]<<endl; }16#include "stdio.h"#include "string.h"void main(){ char a[30],c;int i,j;printf("输入字符串:");scanf("%s",a);for(i=0;i<strlen(a)-1;i++)for(j=i+1;j<strlen(a);j++)if(a[i]<a[j]){c=a[i];a[i]=a[j];a[j]=c;} printf("结果:%s",a);}17#include "stdio.h"#include "string.h"void main(){char a[20],b[20],c;int i,j=0,k=0;printf("输入字符串:");gets(a);for(i=0;i<strlen(a);i++)if(a[i]%3!=0){b[j]=a[i];j++;} b[j]=0;k=j;for(i=0;i<k-1;i++)for(j=i+1;j<k;j++)if(b[i]>b[j]){c=b[i];b[i]=b[j];b[j]=c;}printf("\n结果");printf("%s",b);}18#include "stdio.h"#include "string.h"void main(){char a[20],b[20];int m,i,j=0;printf("输入字符串1:");gets(a);printf("\n输入字符串2:");gets(b);printf("\n输入位置:");scanf("%d",&m);for(i=strlen(a)+strlen(b);i>=m+strlen(b);i--) a[i]=a[i-strlen(b)];for(i=m;i<m+strlen(b);i++){a[i]=b[j++];}printf("结果:");puts(a);}19#include "iostream.h" void main(){char a[10][10];int i,j,k,n,t=0,s=0; cout<<"输入层数n:"; cin>>n;for(k=1;k<=n;k++)for(i=k-1;i<2*n-k;i++) {for(j=k-1;j<2*n-k;j++) a[i][j]=k+'0';}for(i=0;i<2*n-1;i++) {for(j=0;j<2*n-1;j++) cout<<" "<<a[i][j];cout<<endl;}}20#include "iostream.h" float fun(int a[][5]) {int i,j;float s=0;for(i=0;i<5;i++)for(j=0;j<5;j++){s+=a[i][j];}s=s/25;return s;}void main(){ int a[5][5],i,j; float s;for(i=0;i<5;i++)for(j=0;j<5;j++)cin>>a[i][j];s=fun(a);cout<<endl<<"所有元素的平均值是"<<s; }21#include "stdio.h"#include "string.h"void fun(char a[],char b[],int n) {int i,j=0;for(i=n-1;i>=0;i--)b[j++]=a[i];b[j]=0;}void main(){char a[20],b[20];printf("输入字符串:");gets(a);fun(a,b,strlen(a));printf("转换后的字符串:%s",b); }22#include "stdio.h"#include "string.h"int fun(char a[]){int i=0;while(a[i]!=0)i++;return i;}void main(){char a[10][20];int b[10], i,j,max=0,c;for (i=0;i<10;i++){gets(a[i]);b[i]=fun(a[i]);}for(j=0;j<10;j++)if(max<b[j]){max=b[j];c=j;}printf("\n最长的字符串是%s",a[c]); }23#include "stdio.h"void fun(int a[],int b[],int n) {int i,j=0;for(i=n;i>=0;i--)b[j++]=a[i];}void main(){int a[10],b[10],i=0,j,c;a[0]=1;printf("输入数列:");while(c!=0){scanf("%d",&c);if(c!=0) a[i]=c;i++;}fun(a,b,i-2);printf("\n转换后的数列:");for(j=0;j<i-1;j++)printf(" %d",b[j]);}24#include "stdio.h"#include "string.h"void fun(int a[],char b[],int n){int i;for(i=0;i<n;i++){if(b[i]==' ')a[0]++;else if(b[i]>='0'&&b[i]<='9')a[1]++;elseif((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))a[2]++; else a[3]++;}}void main(){char b[10];int a[4]={0},i; printf("输入字符串:");gets(b);fun(a,b,strlen(b));printf("英文字母有:%d\n",a[2]); printf("数字有:%d\n",a[1]); printf("空格有:%d\n",a[0]); printf("其他有:%d\n",a[3]);}25for(j=i+1;j<n;j++){if(b[i]<b[j]){h=b[i];b[i]=b[j];b[j]=h;k=c[i];c[i]=c[j];c[j]=k;for(h=0;h<3;h++){k=a[i][h];a[i][h]=a[j][h];a[j][h]=k;}}}}void main(){ float a[5][3],b[5];int c[5],i,j,k;cout<<"输入学号和数学,英语,计算机的成绩:"<<endl;for(i=0;i<5;i++){cin>>c[i];for(j=0;j<3;j++)cin>>a[i][j];b[i]=fun(a[i],3);}fun1(a,b,c,5);cout<<" *****成绩单*****"<<endl;cout<<"学号数学英语计算机平均分"<<endl; for(i=0;i<5;i++){cout<<c[i];for(j=0;j<3;j++)cout<<" "<<a[i][j];cout<<" "<<b[i]<<endl;}}三经验总结通过本次上机我主要积累了如下经验:1 利用二维数组输出矩阵时,一定不要忘记在输出每一行后输出换行。