您的位置:首页 > 编程语言 > C语言/C++

Day6_c语言_二维数组练习

2014-10-22 17:41 169 查看
//

// main.m

// Day6_二维数组

//

// Created by 王佳兴 on 14-10-21.

// Copyright (c) 2014年 lanou3g.com蓝鸥科技. All rights reserved.

//

#import <Foundation/Foundation.h>

int main(int argc,const
char * argv[]) {

1、(**)有一个3行
4列的二维数组,要求编程找出最大的元素,并输出所在的行和列

//定义一个3行4列的二维数组
int array[3][4] = {0};

//循环用随机值得出二维数组中各个元素的值
for (int i =0; i <
3; i++) {
for (int j =0; j <
4; j++) {
array[i][j] = arc4random() %50;
printf("%2d ", array[i][j]);
}
printf("\n");
}

//初始化最大元素的下标
int maxRow =
0, maxCol =0;

//循环得到最大值的下标
for (int i =0; i <
3; i++) {
for (int j =0; j <
4; j++) {
if (array[i][j] > array[maxRow][maxCol]) {
maxRow = i;
maxCol = j;
}
}
}

//打印结果
printf("最大值为:%d\n", array[maxRow][maxCol]);
printf("最大值在第%d行,第%d列\n",
maxRow, maxCol);

2、(**)输入6个字符串,并对它们按从小到大的顺序排序后输出

//定义包含6个字符串的字符数组

char strings[6][12]
= {"iOS","WangJiaxing","Cocos2D-X","Unity3D","Android","Java"};

//循环将6个字符串排序
for (int i =0; i <
6 - 1; i++) {
for (int j =0; j <
6 - i-1; j++) {

//判断将字符串按升序排序
if (strcmp(strings[j], strings[j +
1]) > 0) {
char temp[12] = {0};
strcpy(temp, strings[j]);
strcpy(strings[j], strings[j +1]);
strcpy(strings[j +1], temp);
}
}
}

//按顺序打印出字符串
for (int i =0; i <
6; i++) {
printf("%s\n", strings[i]);
}

3、(****)找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印有关信息。(提示:注意特殊情况:没鞍点或多个鞍点)

int array[10][10] = {0};
int dest[10][10] = {0};
int maxRow =
0, maxCol =0;
for (int i =0; i <
10; i++) {
for (int j =0; j <
10; j++) {
array[i][j] = arc4random() %50;
printf("%.2d ", array[i][j]);
if (array[i][j] > array[i][maxRow]) {
array[i][maxRow] = array[i][j];

}
dest[i][j] = array[j][i];
printf("%2d ", dest[i][j]);
if (dest[i][j] > dest[i][maxRow]) {
dest[i][maxRow] = dest[i][j];

}

}

printf("\n");
printf("%d\n", array[i][maxRow]);
printf("\n");
printf("%d\n", dest[i][maxRow]);
}

printf("**************************\n");
for (int i =0; i <
10; i++) {
for (int j =0; j <
10; j++) {
dest[i][j] = array[j][i];
printf("%2d ", dest[i][j]);
if (dest[i][j] > dest[i][maxRow]) {
dest[i][maxRow] = dest[i][j];

}
}
}

int array[4][5] = {0};

//第一重循环,遍历小数组
for (int i =0; i <
4; i++) {

//第二重循环,遍历小数组的元素
for (int j =0; j <
5; j++) {

//给每个元素赋值,随机范围是0~49
array[i][j] = arc4random() %50;
//输出每个元素
printf("%2d ", array[i][j]);

}
printf("\n");

}
int maxRow[5] = {0};
int minCol[4] = {0};

//遍历数组
for (int i =0; i <
4; i++) {
for (int j =0; j <
5; j++) {
if (array[i][j] > maxRow[j]) {
maxRow[j] = array[i][j];
}
}
printf("%d", maxRow[i]);
printf("\n");
}
for (int i =0; i <
5; i++) {
for (int j =0; j <
4; j++) {
if (array[i][j] < minCol[j]) {
minCol[j] = array[j][i];
}
}
printf("%d", minCol[i]);
printf("\n");
}
for (int i =0; i <
4; i++) {
for (int j =0; j <
5; j++) {

if (array[i][j] == maxRow[j] && array[i][j] == minCol[i]) {
printf("%d %d\n", i, j);
}
}
}

4、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中(相当于一个模仿从上面看)
int array[5][5][5] = {0};
for (int i =0; i <
5; i++) {
for (int j =0; j <
5; j++) {
for (int k =0; k <
5; k++) {
array[i][j][k] = arc4random() %50;
}
}
}
int array1[5][5] = {0};
int sum =
0;
for (int i =0; i <
5; i++) {
for (int j =0; j <
5; j++) {
for (int k =0; k <
5; k++) {
sum += array[i][j][k];
}
array1[i][j] += sum;
}
}
int avg = sum /
25;
printf("%d\n", avg);

return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: