5.5、二维数组的定义
#include <stdio.h>
int main()
{
int fs[N][3];
int i,j;
// int fs[3][3] ={{1,2,3},{4,5,6},{7,8,9}};
//int fs[][3] = {1,2,3,4,5,6,7,8,9};
for(i=0;i<N;i++)//从键盘上写入数据
{
for(j=0;j<3;j++)
scanf("%d",&fs[i][j]);
}
for(i=0;i<N;i++)//从键盘上输出数据
{
for(j=0;j<3;j++)
printf("fs[%d][%d]=%d\n",i,jfs[i][j]);
}
(一)二维数组初始化已经固定好的
(1)如何找出规律,实现数据的输入
(2)初始化
(二)二维数组没有初始化的
(1)如何实现数据的输入
(2)
二维数组的输入、输出
//初始化已经固定好的,找出规律,进行数据的输入
#include <stdio.h>
int main()
{
int i, j, a[10][10];
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
if (i < j)
a[i][j] = 1;
else
a[i][j] = i - j + 1;
}
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
printf("%2d ",a[i][j]);
printf("\n");
}
}
5.7 二维数组的应用
求矩阵的转置
//已经初始化过了,如何根据初值实现数据的输入
#include <stdio.h>
int main()
{
int i, j, a[3][4], n = 1, b[4][3];
for (i = 0; i < 3; i++)//生成A数组
{
for (j = 0; j < 4; j++)
{
a[i][j] = n++;
}
}
for (i = 0; i < 3; i++)//输出A数组
{
for (j = 0; j < 4; j++)
{
printf("%-3d",a[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
b[i][j] = a[j][i];
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
{
printf("%-3d",b[i][j]);
}
printf("\n");
}
return 0;
}
找二维数组中的最大数
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int a[5][5], i = 0, j = 0, temp = 0;
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
a[i][j] = rand() % 100;
printf("\n");
}
printf("\n");
}
temp = a[0][0];
for (i = 0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
if (temp < a[i][j])
{
temp = a[i][j];
}
}
}
printf("\n最大元素为 :%d",temp);
return 0;
}
5.7、习题没有看
5.8 二维字符数组
单词排序
输入5个单词,将她们按字母顺序排列后输出
words do win scanf printf
do printf scanf win words
#include <stdio.h>
#include <string.h>
int main()
{
char words[5][15] = { 0 };
char temp[15] = { 0 };
int i, j;
scanf("%s",&words[0]);
for (i = 1; i < 5; i++)
{
scanf("%s",&temp);
j = i - 1;
while (strcmp(temp, words[j]) < 0)
{
strcpy_s(words[j + 1], words[j]);
j--;
}
strcpy_s(words[j+1],temp);
}
printf("\n");
for (i = 0; i < 5; i++)
{
printf("%s\n", words[i]);
}
return 0;
}
二维字符数组的引用
对已定义的a,b**引用**:
for(int i = 0;i<3;i++)
printf(" %s\n",a[i]);//第i行字符串
for(int i = 0;i<3;i++);
printf(" %c\n",a[i][j]);
for(i = 0;i<3;i++)
printf(" %s\n",&a[i][i+1]);输出i行i+1列字符开始的字符串
5.8 二维字符数组
输入10个字符串,找出每个字符串的最大字符串,并依次存入一维数组中,然后
输出该一维数组。
(一)
(1)如何实现字符数组的输入
#include <stdio.h>
int main()
{
int j, k;
char a[10][80];
char b[10];
for (j = 0; j < 10; j++)
gets_s(a[j]);
for (j = 0; j < 10; j++)
{
b[j] = a[j][0];
for (j = 0; j < 10; j++)
{
if (b[j] < a[j][k])
b[j] = a[j][k];
}
}
for (j = 0; j < 10; j++)
printf("%d %c\n", j, b[j]);
}
求出如下矩阵中各行元素之和,并以矩阵形式输出原矩阵及相应行元素之和。
356
214
871
#include <stdio.h>
int main()
{
int i, j;
static int a[3][4] = { {3,5,6,7},{2,1,4,0},{8,7,1,0} };
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
a[i][3] += a[i][j];
for (i = 0; i < 3; i++)
{
for (j = 0; j < 4; j++)
printf("%3d",a[i][j]);
if (j == 3)
printf("\n");
}
}