题目描述
程序定义了NxN的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素中的值乘以m 。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5
int fun ( int a[][N], int m )
/不得改动此注释文字及位置,begein/
{
}
/不得改动此注释文字及位置,end/
NONO( )
{
FILE *rf, *wf ;
int i, j, n, a[5][5] ;
rf = fopen(“bc02.in”, “r”) ;
wf = fopen(“bc02.out”, “w”) ;
for(i = 0 ; i < 5 ; i++)
for(j = 0 ; j < 5 ; j++)
fscanf(rf, “%d “, &a[i][j]) ;
fscanf(rf, “%d”, &n) ;
fun(a, n) ;
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 5; j++ )
fprintf(wf, “%4d”, a[i][j] );
fprintf(wf, “\n”);
}
fclose(rf) ;
fclose(wf) ;
}
main ( )
{ int a[N][N], m, i, j;
printf(”***** The array *****\n”);
for ( i =0; i<N; i++ )
{ for ( j =0; j<N; j++ )
{ a[i][j] = rand()%20; printf( “%4d”, a[i][j] ); }
printf(“\n”);
}
do m = rand()%10 ; while ( m>=3 );
printf(“m = %4d\n”,m);
fun ( a ,m );
printf (“THE RESULT\n”);
for ( i =0; i<N; i++ )
{ for ( j =0; j<N; j++ ) printf( “%4d”, a[i][j] );
printf(“\n”);
}
NONO ( );
}
题解
参考下面的代码,该函数将循环遍历数组的右上三角形并对其中的每个元素乘以m,这样就能够得到实现要求。
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 5
int fun(int a[][N], int m) {
int i, j;
for (i = 0; i < N; i++) {
for (j = i + 1; j < N; j++) {
a[i][j] *= m;
}
}
return 0;
}
int main() {
int a[N][N], m, i, j;
printf("***** The array *****\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
a[i][j] = rand() % 20;
printf("%4d", a[i][j]);
}
printf("\n");
}
do m = rand() % 10; while (m >= 3);
printf("m = %4d\n", m);
fun(a, m);
printf("THE RESULT\n");
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
printf("%4d", a[i][j]);
}
printf("\n");
}
return 0;
}
这个程序的功能是创建一个NxN的二维整数数组,将其填充随机值,在主函数中调用函数fun来将数组的右上三角元素乘以给定的m,然后打印结果数组。在函数fun中,我们使用了一个双重循环,其中i循环表示行数,j循环表示列数。我们只遍历右上三角形,例如当i为0时,j的初始值应该为1,以避免重复计算。在循环中,我们只针对右上三角元素,也就是i小于j的元素进行处理,乘以给定的m。
最后,我们使用两个for循环在主函数中打印原始的和修改后的两个数组。我们在每行中打印数组元素,这样可以使输出更容易阅读。
标签:进阶,++,int,printf,fun,程序设计,4d,include,试题 From: https://blog.51cto.com/u_16060410/6320519