一、实验内容
1、实验要求:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。
代码:
#include <stdio.h> #define N 1000 int main() { int a,i=0,sum=0,max,min,m=0,n=0,e=0; double average; int score[N]; printf("人数 "); scanf("%d",&a); for(i=0;i<a;i++) { printf("学生成绩 "); scanf("%d",&score[i]); sum=sum+score[i]; } average=(double)sum/a; printf("%.2lf ",average); max=score[0]; min=score[0]; for(i=0;i<a;i++) { if(score[i]>max) { max=score[i]; m=i; if(score[i]<min) { min=score[i]; e=i; } printf("max=%d,min=%d,m=%d",max,min,m); printf("input the score you want to find ",m); scanf("%d",&n); for(i=0;i<a;i++) { if(n==score[i]) { printf("%d ",i); m=m+1; } } printf("符合要求的一共有%d个 ",m); return 0; }
运行结果:
2.
实验要求:现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。
代码:
#include <stdio.h> #define N 10 int main() { int num[N]={3,6,9,12,16,19,23,26,29},i,j,n,a,b; printf("请输入一个数字: "); scanf("%d",&a); for(i=0;i>=0;i++) { if(a<num[i+1]) { for(j=8;j>i;j--) { num[j+1]=num[j]; } num[i+1]=a; break; } } for(i=0;i<N;i++) printf("%4d",num[i]); return 0; }
运行结果:
3.实验要求:运用数组写火柴棍
代码:
#include <stdio.h> int main() { int a,b,c,x,y,z; int match[10]={6,2,5,5,4,5,6,3,7,6}; for(a=10;a<10;a=a-1) { x=match[a]; for(b=10;b<10;b=b-1) { y=match[b]; for(c=10;c<10;c=c-1) { z=match[c]; if(a+b==c&&x+y+z==12) { printf("%d+%d=%d ",a,b,c); } } } } return 0; }
运行结果:
知识点总结:1.数组的基本格式 :数组类型 数组名称 数组长度,数组的下标从零开始。
2.数组必须先定义后使用。
3.数组能处理大量数据,优化程序。
4.数组一旦创建,不能改变大小。
5.多方面考虑题目结果,使代码完整。
6.变量对应的关系要搞清楚。
实验总结: 1.数组与循环结构紧密相连,循环变量的值随数组元素的下标变化。
2.注意数组越界问题。
3.注意数组中插入数字时,其后面的数字位置都加1.
4.数组不能被赋值。