若有以下函数定义,则在主函数中正确的调用语句是______。 void fun(int array[3][5]) { ………} void main() { int a[3][5], b; …… } A. fun(a[3][5]); B. b=fun(a); C. fun(a); D. fun(array);
时间: 2024-04-02 13:32:57 浏览: 71
正确的调用语句是C. `fun(a);`。
在主函数中,定义了一个二维数组a和一个整型变量b。函数fun的参数是一个二维数组,因此在调用函数fun时,需要传递一个二维数组作为参数。在C语言中,数组名本身就代表数组的首地址,因此在调用函数时,只需要将数组名作为参数传递即可。因此,正确的调用语句是C. `fun(a);`
相关问题
编写程序,实现矩阵(3行3列)的转置(即行列互换)。 例如,输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 注意: 部分源程序存在文件program.c中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。*/ #include <stdio.h> #include<stdlib.h> void fun(int array[3][3]) { /********** Begin **********/ /********** End ***********/ } void NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ int i,j; FILE *wf ,*in; int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}}; in=fopen("a11.in","r"); for(i=0;i<3;i++) { for(j=0;j<3;j++) fscanf(in,"%d",&array[i][j]); }
```
void fun(int array[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
int temp = array[i][j];
array[i][j] = array[j][i];
array[j][i] = temp;
}
}
}
```
在 `NONO()` 函数中,还需要添加输出结果和关闭文件的代码,完整代码如下:
```
void NONO() {
int i,j;
FILE *wf, *in;
int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}};
in = fopen("a11.in", "r");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
fscanf(in, "%d", &array[i][j]);
}
}
fun(array);
printf("The transposed matrix is:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%-5d", array[i][j]);
}
printf("\n");
}
wf = fopen("a11.out", "w");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
fprintf(wf, "%-5d", array[i][j]);
}
fprintf(wf, "\n");
}
fclose(wf);
fclose(in);
}
```
编写程序,实现矩阵(3行、3列)的转置(即行列互换) ,以myf142.c存盘。 例如,若输入下面的矩阵: 100 200 300 400 500 600 700 800 900 则程序输出: 100 400 700 200 500 800 300 600 900 注意:部分源程序在文件如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 #include <stdio.h> #include <stdlib.h> void fun (int (*array)[3]) { } void main() { int i,j; int array [3][3]={{100,200,300},{400,500,600},{700,800,900}}; printf(" Original array:\n "); for (i=0;i<3;i++) {for (j=0;j<3;j++) printf("%7d ",array[i][j]); printf("\n "); } fun(array); printf("Converted array:\n "); for (i=0;i<3;i++) { for (j=0;j<3;j++) printf("%7d ",array[i][j]); printf("\n "); } }
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void fun(int (*array)[3]) {
int temp;
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
temp = array[i][j];
array[i][j] = array[j][i];
array[j][i] = temp;
}
}
}
int main() {
int i, j;
int array[3][3] = {{100, 200, 300}, {400, 500, 600}, {700, 800, 900}};
printf("Original array:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
printf("%7d ", array[i][j]);
printf("\n");
}
fun(array);
printf("Converted array:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++)
printf("%7d ", array[i][j]);
printf("\n");
}
return 0;
}
```
该程序中,`fun`函数用于实现矩阵的转置操作,即将矩阵的行列互换。具体实现方式是:使用一个临时变量 `temp`,遍历数组,将每一行和对应列的元素进行交换。最终输出转置后的矩阵。
在 `main` 函数中,首先定义一个 3x3 的矩阵 `array`,然后输出原始矩阵。接着调用 `fun` 函数进行转置操作,最后输出转置后的矩阵。
阅读全文