用程序流程图或者NS盒图进行设计:将2维数组A[10][6],转置为B[6][10],并将数值为0的元素,替换为-100.
#include<stdio.h>
int main(int argc, const char *argv[])
{
char v = 0;
scanf("%c", &v);
getchar();
if (v >= 'A' && v <= 'Z'){
v += 32;
printf("%c\n", v);
}else if (v >= 'a' && v <= 'z'){
v -= 32;
printf("%c\n", v);
}else if (v >= '0' && v <= '9'){
v -= '0';
v *= 10;
printf("%d\n", v);
}else{
printf("%c\n", '#');
}
return 0;
}
首先,我们来看题目要求,将一个10*6的二维数组A转置为6*10的二维数组B,并将元素值为0替换为-100。那么我们需要设计一个将数组转置的函数Transposition(),以及将数组中元素为0替换为-100的函数Replace()。接下来附上程序流程图和核心代码实现。
程序流程图:
核心代码实现:
#include <stdio.h>
// 定义数组的行和列的大小
#define ROW 10
#define COL 6
// 将数组A转置为数组B
void Transposition(int arr_A[][COL], int arr_B[][ROW]) {
int i, j;
for (i = 0; i < COL; i++) { // 列
for (j = 0; j < ROW; j++) { // 行
arr_B[i][j] = arr_A[j][i];
}
}
}
// 将数组中元素为0的替换为-100
void Replace(int arr[][ROW]) {
int i, j;
for (i = 0; i < COL; i++) { // 列
for (j = 0; j < ROW; j++) { // 行
if (arr[i][j] == 0) {
arr[i][j] = -100;
}
}
}
}
int main() {
// 定义二维数组A和B
int arr_A[ROW][COL] = {
{1, 2, 3, 4, 5, 6},
{7, 8, 9, 10, 11, 12},
{13, 14, 15, 16, 17, 18},
{19, 20, 21, 22, 23, 24},
{25, 26, 27, 28, 29, 30},
{31, 32, 33, 34, 35, 36},
{37, 38, 39, 40, 41, 42},
{43, 44, 45, 46, 47, 48},
{49, 50, 51, 52, 53, 54},
{55, 56, 57, 58, 59, 60}
};
int arr_B[COL][ROW];
// 将数组A转置为数组B
Transposition(arr_A, arr_B);
// 将数组B中元素为0的替换为-100
Replace(arr_B);
// 输出数组B
int i, j;
for (i = 0; i < COL; i++) { // 列
for (j = 0; j < ROW; j++) { // 行
printf("%d ", arr_B[i][j]);
}
printf("\n");
}
return 0;
}
注:为了方便起见,这里的二维数组A和B只是手动赋值为了一些数字,实际应用中需要根据具体需求进行赋值。