二级C语言操作例题(七)

该程序涉及C语言编程,包括生成不含重复随机数的数组、计算矩阵主对角线元素之和以及矩阵转置。题目提供了三个编程题目,第一题要求填充函数以生成20个不重复的随机数并存入数组;第二题要求修改程序以正确读取矩阵并计算主对角线元素之和;第三题需实现3x3矩阵的转置功能,并将结果输出到控制台和文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、程序填空题

在此程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。

#include  <stdlib.h>

#include  <stdio.h>

#define   N  20

void  fun( int  *a)

{ int  i, x, n=0;

  x=rand()%20;

/**********found**********/

  while (n<__1__)

  {  for(i=0; i<n; i++ )

/**********found**********/

         if( x==a[i] )

    __2__;

/**********found**********/

     if( i==__3__)

{ a[n]=x; n++; }

     x=rand()%20;

  }

}

void main()

{ int  x[N]={0} ,i;

  fun( x );

  printf("The result :  \n");

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

  { printf("%4d",x[i]);

    if((i+1)%5==0)printf("\n");

  }

  printf("\n\n");

}

答案:(1) N (2) break (3) n

二、程序修改题

在此程序中,函数的功能是:先从键盘上输入一个3行、3列的矩阵的各个元素的值,然后输出主对角线元素之和。

#include <stdio.h>

void fun()

{

 int a[3][3],sum;

 int i,j;

/*************found**************/

 sum=1;

 for (i=0;i<3;i++)

    { for (j=0;j<3;j++)

/*************found**************/

      scanf("%d",a[i][j]);

    }

 for(i=0;i<3;i++)

     sum=sum+a[i][i];

 printf("Sum=%d\n",sum);

}

void main()

{

fun();

}

答案:(1) sum=0; (2) scanf("%d",&a[i][j]);

三、程序设计题

在此程序中,编写程序,实现矩阵(3行、3列)的转置(即行列互换)。

例如,若输入下面的矩阵:

则程序输出:

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

void fun (int array[3][3])

{

  

}

void main()

{

  FILE *wf;

  int i,j;

  int array [3][3]={{100,200,300},{400,500,600},{700,800,900}};

  system("CLS");

  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 ");

     }   

/******************************/

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

  for (i=0;i<3;i++)

     { for (j=0;j<3;j++)

          fprintf(wf,"%7d ",array[i][j]);

       fprintf(wf,"\n");

     }   

  fclose(wf);

/*****************************/

}

答案:

  int i,j,t;

  for(i=0;i<3;i++)            /*将右上三角和左下三角对换,实现行列互换*/

     for(j=i+1;j<3;j++)

        {t=array[i][j];

         array[i][j]=array[j][i];

         array[j][i]=t;

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值