实验6 数组
一、一维数组实验
2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如: Input 10 number: 0 1 2 3 4 5 6 7 8 9 After reversed: 9 8 7 6 5 4 3 2 1 0 #include
int i, j, a[10], t;
printf(\
for(i=0; i<10; i++) /*读入数据*/ scanf(\
printf(\
for(i=0; i<10; i++) /*输出原始数据*/ printf(\
printf(\
for(i=0,j=9; i t=a[i]; a[i]=a[j]; a[j]= t; } printf(\输出逆序存放后的数据*/ for(i=0; i<10; i++) printf(\ printf(\} 3. 编程:输入n个(1 Input n: 5 Input 5 integer: 8 2 5 1 4 max=8 index=0 min=1 index=3 average=4 #include int i, n , max, min, a[10], sum; float average; printf(\ scanf(\ if(1 printf(\输入数据并求累加和*/ for(i=0, sum=0; i scanf(\ sum+=a[i]; } average=(float)sum/n; /*求出平均值*/ for(i=0, max=0, min=0; i if(a[i] > a[max]) max= i; if(a[i] < a[min]) min= i; } printf(\ printf(\ printf(\} else printf(\数据超出范围\ } 4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。 #include void main() { int i, max, min; float a[10], ave; printf(\请输入10个评委的打分:\ for(i=0, ave=0; i<10; i++) /*输入分数并求累加和*/ { scanf(\ ave); } ave+=a[i]; } for(i=0, max=0 , min=0; i<10; i++) /*求最大、最小值的下标*/ { if(a[i]>a[max]) max=i; if(a[i] ave=ave-a[max]-a[min]; ave=ave/8; printf(\该选手的评委打分是:\for(i=0; i<10; i++) printf(\printf(\ printf(\去掉最高分%.2f,去掉最低分%.2f,该选手的平均得分是%.2f\\n\a[max], a[min], 5. 编程:用两种方法输出斐波那切数列的前40项(参考例6-4)。 要求: (1)方法1:不使用数组; #include int f1=1, f2=1, f3, i; printf(\ for(i=3; i<=40; i++) { f3=f1+f2; printf(\ if(i%5==0) printf(\ f1= f2; f2= f3; } } (2)方法2:使用一维数组。 #include void main() { int i; int fib[40]; fib[0]=fib[1]=1; } 6. 编程:输入n个(1 Input n: 5 Input 5 number: 8.5 2.3 5.1 1.4 4.9 After sorted: 8.50 5.10 4.90 2.30 1.40 #include int i, j, n; float a[10], t; printf(\ scanf(\ if(n>1 && n<=10) { printf(\ for(i=0;i scanf(\ printf(\输出排序前的数据*/ for(i=0; i printf(\printf(\ for(i=0; i for(i=2; i<40; i++) /*计算其余的38个数*/ fib[i]= fib[i-1] + fib[i-2]; for(i=0; i<40; i++) { printf(\ if((i+1)%5==0) printf(\} { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf(\输出排序结果*/ for(i=0; i printf(\ printf(\} else printf(\数据超出范围\ } 7. 在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。 程序分析:首先找到插入位置,然后将插入位置之后的数依次后移一个位置。 #include int i, p; float a[10]={70.8, 68.5, 65, 47, 38, 30, 20, 19, 10} ; float m; printf(\原始数据 :\输出原始数据序列*/ for(i=0; i<9; i++) printf(\printf(\ printf(\请输入要插入的数据m: \ scanf(\ /*找到插入位置*/ p = 9; /*默认插入到最后的位置*/ for(i=0; i<9; i++) if( m > a[i]) { p=i; break; } for(i=9; i>=p+1; i--) /*将插入位置之后的元素后移*/ a[i]=a[i-1]; /*插入*/ a[p]=m; printf(\插入%.2f 后:\输出插入后结果*/ for(i=0; i<=9; i++)