1、(**)有一个3行4列的二维数组,要求编程找出最大的元素,并输出所在的行和列。
int a[3][4] = {0};
int max = 0;
for (int i = 0; i < 3; i++) {
for ( int j = 0; j < 4; j++) {
a[i][j] = arc4random() % (30 - 0 + 1) + 0 ;
printf("%d ",a[i][j]);
max = max > a[i][j] ? max : a[i][j];
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (max == a[i][j]) {
printf(" \n a[%d][%d] = %d ", i, j, max);
}
}
}
2、(**)输入6个字符串,并对它们按从小到大的顺序排序后输出。
char b[20] = {0};
char a[6][15] = {"sasda", " dadad", "dasd", "threh", "geyghh", "kuit"};
for (int i = 0; i < 5; i++) {
for ( int j = 0; j < 5 - i; j++) {
if (strcmp(a[j], a[j + 1]) > 0) {
strcpy(b, a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], b);
}
}
}
for (int i = 0; i < 6; i ++) {
printf("%s ", a[i]);
}
3、(****)找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印有关信息。(提示:注意特殊情况:没鞍点或多个鞍点)
int a[4][4] = {0};
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
a[i][j] = arc4random() % (99 - 1 + 1) + 1;
printf("%d\t", a[i][j]);
}
printf("\n");
}
// 条件标记
BOOL flag = 1;
// // 记录鞍点个数
int count = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 4; k++) {
// 先判断当前数是否是次行最大值, 不满足跳出, 标记置零
if (a[i][j] < a[i][k]) {
flag = 0;
break;
}
}
// 如果继续循环, 判断当前数是否为次列最小, 不满足跳出, 标记置零
if (flag) {
for (int n = 0; n < 4; n++) {
if (a[i][j] > a[n][j]) {
flag = 0;
break;
}
}
}
if (flag) {
printf("鞍点为 a[%d][%d] = %d\n", i, j, a[i][j]);
count++;
}
flag = 1;
}
}
if (0 == count) {
printf("没有鞍点\n");
} else if (1 == count) {
printf("有一个鞍点\n");
} else {
printf("有多个鞍点\n");
}
4、(**)随机生成一个三维数组,编程求深度的平均值,保存在一个二维数组中(相当于一个魔方从上面看)。
float a[3][3][3] = {0};
float b[3][3] = {0};
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
a[i][j][k] = arc4random() % (6 - 1 + 1) + 1;
printf(" %.2f ",a[i][j][k]);
}
printf(" ");
}
printf("\n");
}
for (int i = 0 ; i < 3; i++) {
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
b[i][j] += a[i][j][k];
}
}
}
printf("\n");
for (int i = 0 ; i < 3; i++) {
for (int j = 0; j < 3; j++) {
b[i][j] = b[i][j] / 3;
printf(" %.2f ", b[i][j]);
}
printf("\n");
}
5 。 随机生成10000个 0 ~ 9999 之间的数,当出现重复的数时,只输出其中一个
方法1:
int a[10000] = {0};
int t = 0;
for (int i = 0; i < 10000; i++) {
a[i] = arc4random() % 10000;
}
for (int i = 0; i < 9999; i++) {
for (int j = 0; j < 9999 - i; j++) {
if (a[j] > a[j + 1]) {
t = a[j];
a[j] = a[j +1];
a[j + 1] = t;
}
}
}
for (int i = 0; i < 10000; i++) {
printf("a[%d] = %d ", i , a[i]);
}
printf("\n\n");
for (int i = 0; i < 10000; i++) {
if (a[i] == a[i + 1]) {
printf("a[%d] = %d ", i, a[i]);
i = i + 1;
}else{
printf("a[%d] = %d ", i, a[i]);
}
}
方法2:
int a[100] ={0};
for (int i = 0; i < 100; i++) { //
for (int j = 0; j < 100; j++) { //作比较 a[i] = i; 数值存入对应相同的下标
if (arc4random() % 100 == i) {
a[i] = i;
}
}
}
for (int i = 0; i < 100; i++) {
if (a[i] != 0) {
printf("a[%d] = %d \n", i ,a[i]);
}
}
多维数组
最新推荐文章于 2025-09-06 11:49:53 发布