第八章、数组 8.1数组的定义和初始化
一维数组:
#define months 12
int day[months]={31,28,31,30,31,30,31,31,30,31,30,31};
一维数组在定义的同时进行了初始化。下标从0开始,到months-1。
二维数组:
二维数组的定义以及初始化:
short matrix[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
short matrix[][4]={{1,2,3,4},{5,6,7,8},{9,10};
第一维长度可以省略,但是第二维的长度不能省略。个数可以小于数组初始化的个数,默认初始化为0。
从键盘输入某年某月,输出该年该月拥有的天数:
#include8.2向函数传递一维数组#define MONTHS 12 int main() { int days[2][MONTHS]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}}; int year,month; do { scanf("%d%d",&year,&month); }while(year<0||year>12||month<0||months>12); if((year%4==0)&&(year%100!=0)||(year%400)==0) printf("%dn",days[1][montn-1]); else printf("%dn",days[2][montn-1]); }
从键盘输入学生成绩,计算平均分和最高分。
#include8.3排序和查找#include int ReadScore(int Score[])//数组名是代表数组的首地址,进行是址传递 { int i=-1; do { i++; scanf("%d",&score[i]); }while(score[i]>=0); return i; } int Average(int score[],int n) { int i,sum; sum=0; if(n>0) { for(i=0;i max) { max=score[i]; } } return max; } int main() { int score[20],n,ret,max; scanf("%d",&n); n=ReadScore(score); if(n==0) { exit(0); printf("输入有误!n"); } aver=Average(score,n); if(aver==-1) { exit(0); printf("无法求得平均数!n"); } else { printf("aver=%dn",aver); } max=FindMax(score,n); printf("max=%dn",max); return 0; }
冒泡排序。
void DateSort(int score[],int n)
{
int i,j,temp;
for(i=0;i
快速排序。
void DateScore(int score[],int n)
{
int i,j,k,temp;
for(i=0;i
折半查找。
int BinSearch(long num[],long x,int n)
{
int low=0,high=n-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(x>num[mid])
{
low=mid+1;
}
else if(x
8.4向函数传递二维数组
计算每个学生、每门课程的总分和平均分。
#include
#define STUD_N 40
#define COURSE_N 30
void ReadScore(int score[][COURSE_N],int num[],int n)
{ //可以省略第一列,第二列不能省略
int i,j;
for(i=0;i



