数组实验:
1编程:输入一个正整数n(0
int i,j,n,x,a[10],t;
printf(\输入数据的个数n:\ scanf(\
printf(\输入%d个整数:\ for(i=0;i scanf(\ printf(\输入要插入的整数:\ scanf(\ for(i=0;i { if(x>a[i]) continue; j=n-1; while(j>=i) { a[j+1]=a[j]; j--; } a[i]=x; break; } if(i==n) a[n]=x; for(i=0;i printf(\putchar('\\n'); } 2.编程,输入1个正整数n(1 { int i,n,index,temp,a[10],min,max; printf(\请输入整数个数n(n<=10):\ scanf(\ printf(\请输入%d个整数:\\n\ for(i=0;i scanf(\ min=max=a[0]; for(i=0;i if(a[i] temp =a[0];a[0]=a[index];a[index]=temp; for(i=1;i {if(a[i]>max) {max=a[i];index=i;}}temp=a[n-1];a[n-1]=a[index];a[index]=temp; printf(\交换后的%个整数为:\ for(i=0;i printf(\ } 运行结果: 请输入整数个数n(n<=10):5 请输入5个整数: 2 1 5 10 9 交换后的个整数为:1 2 5 9 10 Press any key to continue 3.编程,输入1个正整数n(1 方法一:选择排序法 源程序: #include {int i,index,temp,n,j,a[10]; printf(\scanf(\ printf(\for(i=0;i for(j=i+1;j<=n-1;j++) if(abs(a[j]) temp=a[i];a[i]=a[index];a[index]=temp;} printf(\for(i=0;i 方法二:冒泡法 源程序: #include #include void main() {int i,temp,n,j,a[10]; printf(\scanf(\ printf(\for(i=0;i for(i=0;i<=n-j-2;i++) if(abs(a[i])>abs(a[i+1])) {temp=a[i];a[i]=a[i+1];a[i+1]=temp;} } printf(\for(i=0;i 运行结果: Input a number please: 10 Input 10 numbers:-11 2 8 5 -3 -16 9 7 6 10 exchanged 10 numbers: 2 -3 5 6 7 8 9 10 -11 -16 Press any key to continue 4.编程,平面上有n个点,求所有各点之间的最长距离。要求定义和调用函数计算距离 源程序: #include float fun(float x0,float x1,float y0,float y1) {float y; y=sqrt(pow((x0-x1),2)+pow((y0-y1),2)); return y;} void main() {float x[5],y[5]; int i,j; float max=0.0,t=0.0; printf(\printf(\横坐标:\for(i=0;i<5;i++) scanf(\printf(\纵坐标:\for(i=0;i<5;i++) scanf(\for(i=0;i<4;i++) {for(j=i;j<4;j++) {t=fun(x[i],x[j+1],y[i],y[j+1]); if(max printf(\} 输入点数:5 输入5个点的坐标: 1 2.5 3.2 3.7 6.5 2.3 5.1 0.6 3.6 1.2 最长距离是5.50 方法二: #include #include { float a[20][2],b[20][20],x,y; int n,i,j,row,cel; printf(\输入点数:\ printf(\输入%d点的坐标:\ for (i=0;i scanf(\ printf(\ for (i=0;i printf(\ for (i=0;i printf(\ printf(\ row=0;cel=0; for (i=0;i<5;i++) for (j=0;j<5;j++) if(b[i][j]>b[row][cel]) {row=i;cel=j;} printf(\第%d点到第%d点距离最大是%.2f\\n\ } 5.编程,输入一个n行m列(n<=4,m<=4)的数组,先以n行m列的格式输出该数组,然后找出该数组中值最小的元素,输出该元素及其行下标和列下标。 程序如下: #include void main() {int n,m,i,j,a[4][4],min,max,min_row,min_col,max_row,max_col; printf(\输入行数\scanf(\printf(\输入列数\scanf(\for(i=0;i<=n-1;i++) {for(j=0;j<=m-1;j++) scanf(\for(i=0;i<=n-1;i++) {for(j=0;j<=m-1;j++) printf(\printf(\min_row=min_col=0; min=a[0][0]; for(i=0;i<=n-1;i++) for(j=0;j<=m-1;j++) if(a[i][j] {min=a[i][j]; min_row=i; min_col=j;} max=a[0][0]; for(i=0;i<=n-1;i++) for(j=0;j<=m-1;j++) {if(a[i][j]>max) max=a[i][j]; max_row=i; max_col=j;} printf(\最大值是:a[%d][%d]=%d,最小值是:a[%d][ %d]=%d\\n\,max_row,max_col,max,min_row,min_col,min);} 运行结果 输入行数3 输入列数2 1 2 3 4 5 6 1 2 3 4 5 6 最大值是:a[2][1]=6,最小值是:a[0][ 0]=1 Press any key to continue