首页>计算机等级考试>模拟试题>正文
2010年9月计算机等级考试二级C语言模拟试题及参考答案(三)

www.zige365.com 2010-7-1 17:11:49 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

  例如,若输入252,则输出应该是20;若输入202,则输出应该是0。

  请改正程序中的错误,使其能得出正确的结果。

  注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

 #include  <stdio.h>

  long  fun(long num)

  {

  long k;

  do

  {

  k*=num%10 ;

  num\=10;

  }while(num);

  return (k);

  }

  main()

  {

  long n;

  printf("\Please enter a number:");

  scanf("%ld",&n);

  printf("\n%ld\n",fun(n));

  }

  【答案及解析】

             仔细阅读题目和程序后可以知道k是连乘的结果,但k未赋初值,应该给k赋值1。因此将long k;改为long k=1;或long k;k=1;第2处错误为/=被误写成\=,因此应该改为:num/=10。

  三、编程题

  程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:使N×N的二维数组左下三角元素中的值乘以n。

  例如:若n的值为3,a数组中的值为:

  1   9   7

(1)本题主要考查二维数组的有关概念。题目要求是使N×N的二维数组左下三角元素中的值乘以n。即第1行1个,第2行2个,……,第N行N个元素乘n。这就需要用双重循环来进行判断,并设变量j、k,j从0到N-1,k从0到j,将a[j][k]乘n。

  (2)按上述分析写出的函数是:

  int fun(int a[][N],int n)

  {

  int j,k;

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

  for(k=0;k<j+1;k++)

  a[j][k]*=n;

  }

  2   3   8

  4   5   6

  则返回主程序后a数组中的值应为:

  3   9   7

  6   9   8

  12  15  18

  注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

  #include  <stdio.h>

  #include  <stdlib.h>

  #define    N    5

  int fun(int a[][N],int n)

  {

  }

  main()

  {

  int  a[N][N],n,i,j;

  printf("***The array***\n");

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

 {

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

  {

  a[i][j]=rand()%10;

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

  printf("\n");

  }

  do n=rand()%10; while(n>=3);

  printf("n=%4d\n",n);

  fun(a,n);

  printf ("***THE RESULT***\n");

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

  {

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

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

  printf("\n");

  }

  }

 

本新闻共3页,当前在第3页  1  2  3  

我要投稿 新闻来源: 编辑: 作者:
相关新闻