TOP

国家计算机二级c语言历年上机真题及基础知识10
2011-09-20 16:15:52 来源: 作者: 【 】 浏览:199次 评论:0
微信搜索关注"91考试网"公众号,领30元,获取公务员、事业编、教师等考试资料40G!

第十套

 

1.填空题

 

请补充函数fun(),该函数的功能是判断一个数的个位数字和百位数字之和是否等于其十位上的数字,是则返回yes!,否则返回no!

 

注意:部分源程序给出如下。

 

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

 

试题程序:

 

#include <stdio.h>

 

#include <conio.h>

 

char *fun(int n)

 

{

 

 int g,s,b;

 

 g=n%10;

 

 s=n/10%10;

 

 b=1;

 

 if((g+b)==s)

 

          return2;

 

 else

 

          return3;

 

}

 

main()

 

{

 

 int num=0;

 

 clrscr();

 

 printf("******Input data *******\n");

 

 scanf("%d",&num);

 

 printf("\n\n\n");

 

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

 

 printf("\n\n\n%s",fun(num));

 

}

 

 

答案及评析:

 

1n/100%10                   2″yes!″                               3″no!″

 

【解析】填空1:由程序可以知道,变量g保存了整数的个位数,变量s保存了整数的十位数,所以变量b应该保存整数的百位数。将整数除以100再对10取余,则得到这个整数的百位数。填空2:当个位数字和百位数字之和等于十位数字时,则返回yes!。填空3:当个位数字和百位数字之和不等于十位数字时,则返回no!

 

2. 改错题

 

下列给定的程序中,函数fun()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。

 

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

 

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

 

试题程序:

 

#include<stdio.h>

 

#define N 20

 

void fun(int a[],int n)

 

{

 

 int i,j,t,p;

 

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

 

 

 for(j=0;j<n-1;j++) ;

 

   {

 

    p=j;

 

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

 

       if(a[i]>a[p]) 

 

          p=i;

 

    t=a[p];

 

    a[p]=a[j];

 

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

 

 

    a[p]=t; 

 

   }

 

}

 

main()

 

{

 

 int a[N]={11,32,-5,2,14},i,m=5;

 

 printf("排序前的数据:");

 

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

 

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

 

 printf("\n");

 

 fun(a,m);

 

 printf("排序后的顺序:");     

 

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

 

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

 

 printf("\n");

 

}

 

答案及评析:

 

1错误for(j=0;j<n-1;j++) ;

 

   正确for(j=0;j<n-1;j++)

 

2)错误:a[p]=t;

 

     正确:a[j]=t;

 

【解析】错误1:根据C语言语法,for循环中循环条件后不加分号,除非做空操作。

 

错误2:将两数进行交换的常用语句,借助第三个变量。

 

 

3. 编程题

 

下列程序定义了N×N的二维数组并在主函数中赋值。请编写函数fun(),函数的功能是:求出数组周边元素的平方和并作为函数值返回给主函数中的s。例如:若a 数组中的值为

 

a=0  1   2   7  9

 

1  11  21  5  5

 

2  21  6  11  1

 

9  7   9  10  2

 

5  4   1  4   1

 

则返回主程序后s的值应为310

 

注意:部分源程序给出如下。

 

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

 

试题程序:

 

#include <stdio.h>

 

#include<conio.h>

 

#include<stdlib.h>

 

#define  N  5

 

int fun (int w[][N])

 

{

 

 

 

}

 

main()

 

{

 

  int a[N][N]={0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};

 

  int i, j;

 

  int s;

 

  clrscr();

 

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

 

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

 

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

 

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

 

      printf("\n ");

 

    }

 

  s=fun(a);

 

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

 

  printf("The sum is : %d\n ",s);

 

}

 

答案及评析:

 

int fun (int w[][N])

 

{

 

  int i,j,k=0;

 

  int s=0;

 

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

 

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

 

       if(i==0||i==N-1||j==0||j==N-1)    /*只要下标中有一个为0N-1则它一定是周边元素*/

 

          {s=s+w[i][j]*w[i][j];                /*将周边元素求平方和*/

 

          }

 

  return s;                         /*返回周边元素的平方和*/

 

}

 

【解析】该题采用逐一判断的方式,周边元素的下标一定有一个是0N-1,且只要下标中有一个为0N-1,则它一定是周边元素。

 

Tags: 责任编辑:91kaoshiwang
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇计算机二级考试2009年 9月真题 下一篇国家计算机二级c语言历年上机真题..

相关栏目

最新文章

推荐文章

网站客服QQ: 960335752 - 14613519 - 48225117