一维数组
数组的运用场合
当我们需要涉及的变量特别多,光想名字都要想半天
所以引入数组
Q: (1)在程序中怎样存放100个学生的成绩?
(2)定义100个整型变量吗?
(3)C语言中的解决方案是……?
A: (1)存储学生成绩用整型数组 mark[100];
(2)存储一行文字用字符数组 str[200];
(3)存储一个4*6的矩阵用二维整型数组 a[4][6];
数组的定义
数组定义的一般形式:
类型 数组名[常量表达式];
float a[0]; /*数组大小为0没有意义*/
int b(2)(3); /*不能使用圆括号*/
int k, a[k]; /*不能用变量说明数组大小,C99之后可以*/
常见书写:
int n;scanf("%d", &n);int a[n];
数组的初始化
int a[5] = { 12, 34, 56 ,78 ,9 };int a[5] = { 12, 34 };int a[5] = { 0 };int a[] = { 11, 22, 33, 44, 55 };
数组的输入与输出
e.g.
Int a[5],i;
输入
for (i=0;i<=4;i++)
{scanf("%d",&a[i]);
}
输出
for (i=0;i<=4;i++)
{printf("%d ",a[i]);
}
程序实例
用户输入一系列数字,直到-1结束,找到平均数,输出大于平均数的所有数字
#include<stdio.h>
int main (){int x;double sum = 0;int cnt = 0;int number[100];//定义数组scanf("%d",&x);while(x!= -1){number[cnt] = x;//对数组里元素赋值sum += x;cnt ++;scanf("%d",&x);}if(cnt>0){int i;double average = sum / cnt;/*遍历数组里的元素*/for(i=0;i<cnt;i++){if(number[i]>average){printf("%d\n",average);printf("%d ",number[i]);//数组里的元素}}}return 0;
}
//存在安全隐患【可能数组越界】