6.二维数组

/***************************************************************************************
* Description:数组3:二维数组
* VersionName           DateDescription
1.0    路飞老师    2016/7/27初始创建
* Copyright (c) by 择善教育. All Rights Reserved.

****************************************************************************************/
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>//标准的输入输出头文件
#include<stdlib.h>//system函数的头文件
#include<string.h>//字符串操作函数的头文件

//程序的入口main函数
int main()
{
/*     A   B   C
语文   10  20  30
数学   40  50  60
英语   70  80  90

int iScore[3][3];//3行3列的数组
定义方式:类型  数组名[常量表达式][常量表达式]

iScore[0][0],iScore[0][1],iScore[0][2]
iScore[1][0],iScore[1][1],iScore[1][2]
iScore[2][0],iScore[2][1],iScore[2][2]

c语言,只要是数组,满足同类型,对称
*/
/*
初始化
分段赋值:int iScore[3][3]={{10,20,30},{40,50,60},{70,80,90}};//建议用这种
连续赋值:int iScore[3][3]={10,20,30,40,50,60,70,80,90};

1,可以只对部分元素赋值
 int iScore[3][3]={0};
2、如果全部元素赋值,那么一维的长度可以不给出,但是二维的长度一定要给出
3、二维数组可以看作是一维数组嵌套构成
  一个二维数组就可以分解为多个一维数组,一维数组的名字
  iScore[0]  iScore[1]  iScore[2]
*/
int iScore[][3] = { { 10, 20,30}, { 40, 50, 60 }, { 70, 80, 90 } };
int i, j,t;
int row, col;
int iMax[3] = { 0 }, iMin[3] = { 0 };
char acHz[] = "天";
char acNames[5][20] = { 0 };
int iCnt = 0, iLoc[5] = { 0 };


//遍历二维数组,并查看他们的内存地址
//iScore,iScore[0],iScore[0][0]
//iScore[i],iScore[i][0]
printf("二维数组的首地址=%#x\n",iScore);
for (i = 0; i < 3; i++)
{
printf("%d行首地址=%#x\n", i,iScore[i]);
for (j = 0; j < 3; j++)
{
printf("值=%d,地址=%#x  ", iScore[i][j], &iScore[i][j]);
}
printf("\n");
}
/*
求最值、排序
求各门成绩中,谁的成绩最好
对每个人,哪门成绩最好
*/
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{

if (j == 0)
{
iMax[i] = iScore[i][j];
iMin[i] = iScore[i][j];
}

if (iMax[i]<iScore[i][j])
{
iMax[i] = iScore[i][j];
}
if (iMin[i]>iScore[i][j])
{
iMin[i] = iScore[i][j];
}
}

}
for (i = 0; i < 3; i++)
{
printf("第%d门成绩的最高分是%d,最低分=%d\n", i, iMax[i], iMin[i]);
}

for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{

if (j == 0)
{
iMax[i] = iScore[j][i];
iMin[i] = iScore[j][i];
}

if (iMax[i]<iScore[j][i])
{
iMax[i] = iScore[j][i];
}
if (iMin[i]>iScore[j][i])
{
iMin[i] = iScore[j][i];
}
}

}
for (i = 0; i < 3; i++)
{
printf("第%d人的最高分是%d,最低分=%d\n", i, iMax[i], iMin[i]);
}
/*
求各门成绩进行排序
对每个人的成绩排序
*/
for (row = 0; row < 3; row++)
{
for (i = 0; i < 3 - 1; i++)
{
for (j = 0; j < 3 - i - 1; j++)
{
if (iScore[row][j]<iScore[row][j+1])
{
t = iScore[row][j];
iScore[row][j] = iScore[row][j + 1];
iScore[row][j + 1] = t;
}
}
}
}
printf("对各门成绩进行排序\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", iScore[i][j]);
}
printf("\n");
}

for (col = 0; col < 3; col++)
{
for (i = 0; i < 3 - 1; i++)
{
for (j = 0; j < 3 - i - 1; j++)
{
if (iScore[j][col]<iScore[j+1][col])
{
t = iScore[j][col];
iScore[j][col] = iScore[j + 1][col];
iScore[j + 1][col] = t;
}
}
}
}
printf("对每个人的成绩进行排序\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
{
printf("%d ", iScore[i][j]);
}
printf("\n");
}

/*
存储多个字符串:存储多个姓名
scanf输入多个姓名,然后遍历打印这些姓名
查找姓“李”的人的个数和位置
查找带“天”字的人的个数和位置
*/
for (i = 0; i < 5; i++)
{
printf("请输入%d个名字:",i);
scanf("%s", acNames[i]);//acNames[i]是每一个字符数组的首地址,即数组名
}
iCnt = 0;
for (i = 0; i < 5; i++)
{
printf("第%d个名字:%s\n", i,acNames[i]);
if (0 == strncmp(acNames[i],"李",2))
{
iLoc[iCnt] = i;
iCnt++;
}
}
for (i = 0; i < iCnt; i++)
{
printf("第%d个姓李的人的位置=%d\n",i,iLoc[i]);
}
//天天
iCnt = 0;
for (i = 0; i < 5; i++)
{
for (j = 0; acNames[i][j] != '\0';j++)//如果所有的都是汉字,j+=2
{
if (acNames[i][j] == acHz[0] && acNames[i][j+1]==acHz[1])
{
iLoc[iCnt] = i;
iCnt++;
break;
}
}
}
for (i = 0; i < iCnt; i++)
{
printf("第%d个含有天的人的位置=%d\n", i, iLoc[i]);
}

system("pause");

return 0;
}
//程序结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值