二维和多维数组:
二维数组定义:类型 数组名[行][列];
空间长度:sizeof(int)*行*列
元素个数: 行*列
引用元素:需要确定哪一行哪一列的元素 数组[行][列]
习题:
统计这个二维数组中每一行的总分,平均分,最高分.
#include<stdio.h>
void main()
{
int score1[5][5] = {{1,2,3,4,5},
{21,22,23,24,25},
{31,32,33,34,35},
{100,101,3300,103,104},
{1000,1001,1005,1003,1004}};
}
求总分,平均分,最高分
//总分,平均分
int j = 0;
int num = 0,pjf = 0;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
num = num + score1[i][j];
//printf("%d\t",num);
}
pjf = num/5;
printf("每行总分:%d平均分:%d\n",num,pjf);
num = 0;
}
//最高分,监哨值法
int a = 0,listen = 0;
int max = 0;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
listen = score1[i][j+1];
if(a<listen)
{
a = listen;
}
}
printf("\n最高分:%d",a);
a = 0;
}
习题:
判断下列数组是否是称的
斜对称 :
1 2 3 4
2 2 7 8
3 7 3 5
4 8 5 4
#include<stdio.h>
int main()
{
int score[4][4]={{1,2,3,4},
{2,2,7,8},
{3,7,3,5},
{4,8,5,4}};
int i = 0,j = 0,d = 0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(score[i][j] = score[j][i]
{
d++;
}
}
}
if(d==16)
{
printf("是对称的!");
}
else
{
printf("不是对称的!");
}
}
习题:
求下列数组所有元素的最大值,和次大值 .
#include<stdio.h>
void main()
{
int score1[5][5] = {{1,2,3,4,5},
{21,22,23,24,25},
{31,32,33,34,35},
{100,101,3300,103,104},
{1000,1001,1005,1003,1004}};
}
求最大值:
int i = 0,j = 0;
int listen = 0,max = 0;
for(i=0;i<5;i++)
{
listen = score[i][0];
for(j=0;j<4;j++)
{
if(listen<score[i][j+1])
{
listen = score[i][j+1];
}
}
printf("%d",listen);
}
求次大值:
int i = 0,j = 0;
int a = 0,b = 0,max = 0;
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(a<score[i][j+1]) //当a=3300时,score[i][j+1]=34>3300的条件不成立,执行else
{
b = a; //此时b=32
a = score[i][j+1]; //此时a=3300
printf("%d,%d\n",b,a); //打印b,a的值
}
else
{
if(score[i][j+1]>b)
{
printf("%d,",b); //此时b=32
b = score[i][j+1]; //此时score[i][j+1]=34
printf("%d\n",b); //此时b=34
}
}
}
}
printf("%d",b);