找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 116|回复: 1

C语言二级试题:计算矩阵对角线上的元素

[复制链接]

37

主题

21

回帖

241

积分

中级会员

积分
241
发表于 2026-3-26 11:55:04 | 显示全部楼层 |阅读模式
请编写函数fun, 其功能是:将a所指数组主对角线上的元素分别乘以2; 次对角线上的元素分别乘以3, 依次放入指针p所指的数组中。计算过程中不得修改a所指数组中的数据。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容, 仅在函数fun的花括号中填入所编写的若干语句。

考点:函数

PROG1.C代码文件:

  1. #include <stdio.h>

  2. #define N  3

  3. #pragma warning(disable:4996)

  4. void NONO( );



  5. void fun( int a[N][N],int *p)

  6. {





  7. }

  8. main()

  9. {   int a[N][N]={ 1,5,7,2,6,8,3,4,9};

  10.      int b[2*N],i;

  11.      fun(a,b);

  12.      for(i=0;i<2*N;i++)

  13.             printf("%d,",b[i]);

  14.      NONO();

  15. }



  16. void NONO( )

  17. {   int a[N][N];

  18.      int b[2*N],i,j,k;

  19.      FILE *rf, *wf;



  20.      rf = fopen("in.dat","r") ;

  21.      wf = fopen("out.dat","w") ;

  22.      for(k=0; k<9;k++) {

  23.            for(i=0;i<N;i++)

  24.                 for(j=0;j<N;j++)

  25.                      fscanf(rf,"%d,",&a[i][j]);

  26.          fun(a,b);

  27.          for(i=0;i<2*N;i++)

  28.               fprintf(wf, "%d,",b[i]);

  29.          fprintf(wf, "\n");

  30.      }

  31.      fclose(rf);

  32.      fclose(wf);

  33. }

复制代码


37

主题

21

回帖

241

积分

中级会员

积分
241
 楼主| 发表于 2026-3-26 11:55:28 | 显示全部楼层
试题解读:
首先需要理解, 题意中二维数组的主对角线元素是指行下标和列下标相等的元素, 次对角线元素是指行下标和列下标之和为N - 1的元素。
接下来编写fun函数, 程序定义两个变量i和k, k初值为0, 通过两个for循环完成题意要求, 第一个for循环遍历二维数组的主对角线元素a[i][i], 乘2后赋值给p[k], 再对k自增1; 第二个for循环遍历二维数组的次对角线元素a[i][N - i - 1], 乘3后赋值给p[k], 再对k自增1。

参考答案:
void fun(int a[N][N], int *p) {
    int i, k = 0;
    for (i = 0; i < N; i++) {
        p[k++] = a[i][i] * 2;
    }
    for (i = 0; i < N; i++) {
        p[k++] = a[i][N - i - 1] * 3;
    }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|郎哥嵌入式编程社区 ( 鲁ICP备15001146号-5 )

GMT+8, 2026-4-28 03:31 , Processed in 0.013136 second(s), 18 queries .

快速回复 返回顶部 返回列表