二级C语言操作例题(十五)

一、程序填空题

在此程序中,函数fun的功能是:将a所指3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。

例如,有下列矩阵:

若k=2,程序执行结果为

#include  <stdio.h>

#define   M   3

#define   N   5

void fun(int  (*a)[N],int  k)

{ int  i,j,p,temp;

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

  for(p=1; p<= __1__; p++)

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

     {  temp=a[i][0];

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

        for(j=0; j< __2__ ; j++) a[i][j]=a[i][j+1];

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

        a[i][N-1]= __3__;

     }

}

void main( )

{ int  x[M][N]={ {1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5} },i,j;

  printf("The array before moving:\n\n");

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

  {  for(j=0; j<N; j++)  printf("%3d",x[i][j]);

     printf("\n");

  }

  fun(x,2);

  printf("The array after moving:\n\n");

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

  {  for(j=0; j<N; j++)  printf("%3d",x[i][j]);

     printf("\n");

  }

}

答案:(1) k (2) N-1 (3) temp

二、程序修改题

在此程序中,函数fun的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。

#include <conio.h>

#include <stdio.h>

#define  M 10

int  a[M][M] = {0} ;

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

void fun(int **a, int m)

{  int j, k ;

   for (j = 0 ; j < m ; j++ )

        for (k = 0 ; k < m ; k++ )

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

          a[j][k] = k * j ;

}

void main ( )

{  int  i, j, n ;

   printf ( " Enter n : " ) ;  scanf ("%d", &n ) ;

   fun ( a, n ) ;

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

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

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

        printf ( "\n" ) ;

   }

}

答案:(1) void fun(int a[][M], int m) (2) a[j][k] = (k+1)*(j+1);

三、程序设计题

在此程序中,函数fun的功能是:将a、b中的两个正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。

例如,当a=45,b=12。调用该函数后,c=5241。

#include <stdio.h>

void fun(int  a, int  b, long  *c)

{

}

void main()

{  int  a,b; long  c;void NONO ();

   printf("Input a, b:");

   scanf("%d%d", &a, &b);

   fun(a, b, &c);

   printf("The result is: %ld\n", c);

   NONO();

}

void NONO ()

{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

  FILE *rf, *wf ;

  int i, a,b ; long c ;

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

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

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

    fscanf(rf, "%d,%d", &a, &b) ;

    fun(a, b, &c) ;

    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;

  }

  fclose(rf) ;

  fclose(wf) ;

}

答案:

*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值