文档详情

一维数组实验和答案.doc

发布:2018-02-05约2.06千字共4页下载文档
文本预览下载声明
数组中的常用算法:求和,求最大、最小值,查找,排序。 输入10个数输出其中最小的数。(反之最大数) #includestdio.h void main() { int a[10],i,min; printf(请输入10个数:\n); for(i=0;i10;i++) scanf(%d,a[i]); min=a[0]; for(i=1;i10;i++) { if(mina[i]) min=a[i]; } printf(最小的数为%d\n,min); } 输入10个数输出找出其中最大的数是第几个(查找)。 #includestdio.h void main() { int a[10],i,max; printf(输入10个数:\n); for(i=0;i10;i++) scanf(%d,a[i]); max=0; for(i=1;i10;i++) { if(a[max]a[i]) max=i; } printf(最大数是第%d个数为%d,max+1,a[max]); } 或: #includestdio.h void main() { int a[10],i,n,max; for(i=0;i10;i++) scanf(%d,a[i]); max=a[0]-1; for(i=0;i10;i++) { if(maxa[i]) { max=a[i]; n=i+1;} } printf(%d,%d,max,n); } 将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 注意:例:输入1、3、5、7、9,a[0]=1,a[4]=9 输出9、7、5、3、1. a[4]=9,a[0]=1. #includestdio.h void main() { int a[5],i,t; printf(请输入5个数:\n); for(i=0;i5;i++) scanf(%d,a[i]); for(i=0;i5/2;i++) { t=a[i]; a[i]=a[5-1-i]; a[5-1-i]=t; } for(i=0;i5;i++) printf(%3d,a[i]); } 问题描述:输入10个数,保存在一个数组中,在数组中查找某个数,给出是否找到的 信息。如果找到了,要求输出该数在数组中所处的位置;如果找不到,输出“没有找到!”。 #includestdio.h #define N 10 void main() { int a[N],i,an; for(i=0;iN;i++) scanf(%d,a[i]); printf(请输入你要查的数\n); scanf(%d,an); for(i=0;iN;i++) { if(a[i]==an) break; } if(iN) printf(在数组中的第%d个位置,值为%d\n,i+1,an); else printf(没有找到); } 用起泡法排序,将7,3,5,1,2由小到大排序。 起泡法的思路:将相邻的两个数比较,将小的调到前头。 #includestdio.h void main() { int a[5]={7,3,5,1,2},i,j,t; for(i=0;i5-1;i++) { for(j=0;j5-1-i;j++) if(a[j]a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } for(i=0;i5;i++) printf(%d,a[i]); } 6、问题描述: 如果一个数组中保存的元素是有序的(由大到小),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。 int num[5]={23,45,60,67,88} #includestdio.h #define N 5 void main() { int i,j; int num[N+1]={23,45,60,67,88},in; printf(\n 请输入一个要插入的数:); scanf(%d,in); for(i=0;iN;i++) { if(num[i]in) break; } for(j=N;ji;j--) num[j]=num[j-1]; num[i]=in; printf(\n 插入后的数组元素:\n); for(i=0;iN+1;i++) printf(%d ,num[i]); printf(\n); }
显示全部
相似文档