C语言函数调用问题(可追加100分)
程序P5029.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。程序...
程序P5029.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。
程序的功能是:将m(2<=m<=20)行m列的二维数组arrayA中的最后一行放到二维数组arrayB的第0列中,把二维数组arrayA中的第0行放到二维数组arrayB的最后一列中,二维数组arrayB中的其他数据和arrayA一致。
程序的运行效果应类似地如图1所示,图1中的4和
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
是从键盘输入的内容。
#include <stdio.h>
#define MAX 20
/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=80, 考生可在本行后添加代码、最多1行、行长<=80字符) */
int ABC(int arr[20][20], int n, int n); /*是否有误???*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
int main(void)
{
int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
printf("Please input m: ");
scanf("%d", &m);
printf("\nPlease input arrayA:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
scanf("%d", &arrayA[i][j]);
}
}
/* 本部分代码功能建议:调用用户自定义函数实现数组内容变换 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
arrayB[i][j] = ABC(arrayA[20][20],m,m); /*是否有误???*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
printf("\nafter rotate:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
printf("%6d", arrayB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
int ABC(int arr[20][20], int n, int n) /*本段及其以下是否有误???*/
{
int x,y,n,z,numb;
z= y;
numb = x;
for(x= 0; x< n; x++)
{
if(y = 0)
{
arr[x][0] = arr[n-1][z];
z++;
}
for(y= x; y< n; y++)
{
if (x = 0)
{
arr[numb][n-1] = arr[0][y];
numb++;
}
}
}
return arr[x][y];
} 展开
程序的功能是:将m(2<=m<=20)行m列的二维数组arrayA中的最后一行放到二维数组arrayB的第0列中,把二维数组arrayA中的第0行放到二维数组arrayB的最后一列中,二维数组arrayB中的其他数据和arrayA一致。
程序的运行效果应类似地如图1所示,图1中的4和
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
是从键盘输入的内容。
#include <stdio.h>
#define MAX 20
/* 本部分代码功能建议:函数原型声明 */
/* User Code Begin(Limit: lines<=1, lineLen<=80, 考生可在本行后添加代码、最多1行、行长<=80字符) */
int ABC(int arr[20][20], int n, int n); /*是否有误???*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
int main(void)
{
int arrayA[MAX][MAX], arrayB[MAX][MAX], i, j, m;
printf("Please input m: ");
scanf("%d", &m);
printf("\nPlease input arrayA:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
scanf("%d", &arrayA[i][j]);
}
}
/* 本部分代码功能建议:调用用户自定义函数实现数组内容变换 */
/* User Code Begin(Limit: lines<=1, lineLen<=50, 考生可在本行后添加代码、最多1行、行长<=50字符) */
arrayB[i][j] = ABC(arrayA[20][20],m,m); /*是否有误???*/
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
printf("\nafter rotate:\n");
for (i=0; i<m; i++)
{
for (j=0; j<m; j++)
{
printf("%6d", arrayB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数的定义,行数不限) */
int ABC(int arr[20][20], int n, int n) /*本段及其以下是否有误???*/
{
int x,y,n,z,numb;
z= y;
numb = x;
for(x= 0; x< n; x++)
{
if(y = 0)
{
arr[x][0] = arr[n-1][z];
z++;
}
for(y= x; y< n; y++)
{
if (x = 0)
{
arr[numb][n-1] = arr[0][y];
numb++;
}
}
}
return arr[x][y];
} 展开
4个回答
展开全部
我重新写了 不介意吧?
int* ABC(int* arr, int n); // 第一处,函数声明
arrayB = ABC(arrayA[20][20], m); /* 第二处,函数调用。此处由于只能写一行,所以返回值必须是arrayB这个数组整体。之前的函数声明写成int*。 */
int* ABC(int *arr, int n)
{
int B[20][20];
int i, j;
for(i=0; i<m; i++) {
B[m-1][i] = arr[0][i]; //第一行给B的最后一列
B[i][0] = arr[m-1][i]; //最后一行给B的第一列
}
for(i=1; i<(m-1); i++)
for(j=0; j<m; j++)
B[i][j] = arr[i][j]; //其他的照搬
return B;
}
这样应该就可以了
int* ABC(int* arr, int n); // 第一处,函数声明
arrayB = ABC(arrayA[20][20], m); /* 第二处,函数调用。此处由于只能写一行,所以返回值必须是arrayB这个数组整体。之前的函数声明写成int*。 */
int* ABC(int *arr, int n)
{
int B[20][20];
int i, j;
for(i=0; i<m; i++) {
B[m-1][i] = arr[0][i]; //第一行给B的最后一列
B[i][0] = arr[m-1][i]; //最后一行给B的第一列
}
for(i=1; i<(m-1); i++)
for(j=0; j<m; j++)
B[i][j] = arr[i][j]; //其他的照搬
return B;
}
这样应该就可以了
追问
还是有误啊,你能不能亲自把程序运行以下?朋友
追答
不好意思哈。。
改了:
void ABC(int arrA[][MAX], int n, int arrB[][MAX]);
ABC(arrayA, m, arrayB);
void ABC(int arrA[][MAX], int n, int arrB[][MAX])
{
int i, j;
for(i=0; i<n; i++)
for(j=1; j<(n-1); j++)
arrB[i][j] = arrA[i][j]; //其他的照搬
for(i=0; i<n; i++) {
arrB[i][n-1] = arrA[0][i]; //第一行给B的最后一列
arrB[i][0] = arrA[n-1][i]; //最后一行给B的第一列
}
}
展开全部
有问题
改的是B
A没改
你函数的功能是在改A的值啊
改的是B
A没改
你函数的功能是在改A的值啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询