首页>计算机等级考试>模拟试题>正文
计算机等级考试模拟试题汇总

www.zige365.com 2007-4-18 16:52:25 点击:发送给好友 和学友门交流一下 收藏到我的会员中心

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)    /*只要下标中有一个为0或N-1,则它一定是周边元素*/
          {s=s+w[i][j]*w[i][j];                /*将周边元素求平方和*/
          }
  return s;                         /*返回周边元素的平方和*/
}
【解析】该题采用逐一判断的方式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0或N-1,则它一定是周边元素。

模拟试题(九)
1.填空题
请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。
例如:当str1=“cdefghij”,然后输入4,则str2=“cdef”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include <stdio.h>
#include<conio.h>
#define LEN 80
main()
{
  char str1[LEN],str2[LEN];
  int n,i;
  clrscr();
  printf("Enter the string:\n");
  gets(str1);
  printf("Enter the position of the string
deleted:");
  scanf(【1】);
  for(i=0;i<n;i++)
  【2】
  str2[i]='\0';
  printf("The new string is:%s\n",【3】);
}
答案及评析:
【1】″%d″,&n 【2】str2[i]=str1[i]; 【3】str2
【解析】填空1:本题考查对标准输入函数scanf()的调用格式,由后面的程序可以知道,变量n保存了要截取的字符数,注意在n前面不要忘了取址符‘ &'。填空2:截取前n个字符,就是将字符串str1的前n个字符依次赋给字符串str2的前n个字符。填空3:本题考查对标准输出函数printf()的调用格式,根据题意,应输出截取后的字符串,即字符串str2。

2. 改错题
下列给定程序中,函数fun()的功能是:依次取出字符串中所有的字母,形成新的字符串,并取代原字符串。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include <stdio.h>
#include <conio.h>
void fun(char *s)
{
 int i,j;
 for(i=0,j=0; s[i]!= '\0'; i++)
/**********************found***********************/

     if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z'))
        s[j++]=s[i];
/**********************found***********************/

 s[j]= "\0";
}
main()
{
 char item[80];
 clrscr();
 printf("\nEnter a string: ");
 gets(item);
 printf("\n\nThe string is:\%s\n",item);
 fun(item);
 printf("\n\nThe string of changing is :\%s\n",item);
}

答案及评析:
(1)错误:if((s[i]>= 'A'&&s[i]<= 'Z')&&(s[i]>= 'a'&&s[i]<= 'z'))
     正确:if((s[i]>= 'A'&&s[i]<= 'Z')||(s[i]>= 'a'&&s[i]<= 'z'))
(2)错误:s[j]= "\0";
正确:s[j]='\0';
【解析】错误1:字母包括小写字母和大写字母,这里是"或"的关系,所以用"||"运算符。
错误2:字符串的结束标志符为字符,而不是字符串。


3. 编程题
下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组右上半三角元素中的值全部置成0。例如a数组中的值为
a=4  5  6
1  7  9
3  2  6,
则返回主程序后a数组中的值应为
0  0  0
1  0  0
3  2  0
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define N 5
int fun (int a[][N])
{


}
main()
{
  int a[N][N],i,j;
  clrscr();
  printf("*****The array*****\n");
  for(i=0;i<N;i++)              /*产生一个随机的5*5矩阵*/
     { for(j=0;j<N;j++)
          {a[i][j]=rand()%10;
           printf("%4d", a[i][j]);
          }
       printf("\n");
     }
  fun(a);
  printf("THE RESULT\n");
  for(i=0;i<N;i++)
     { for(j=0;j<N;j++)
          printf("%4d",a[i][j]);
       printf("\n");
     }
}
答案及评析:
int fun (int a[][N])
{
  int i,j;
  for(i=0;i<N;i++)
     for(j=i;j<N;j++)
        a[i][j]=0;       /*将数组右上半三角元素中的值全部置成0*/
}
【解析】本题旨在考查控制数组中右上半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。

模拟试题(十)

1.填空题
请补充main函数,该函数的功能是:从键盘输入一个字符串并保存在字符str1中,把字符串str1中下标为偶数的字符保存在字符串str2中并输出。例如,当str1=“cdefghij”,则str2=“cegi”。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#define LEN 80
main()
{
  char str1[LEN],str2[LEN];
  char *p1=str1,*p2=str2;
  int i=0,j=0;
  clrscr();
  printf("Enter the string:\n");
  scanf(【1】);
  printf("***the origial string***\n");
  while(*(p1+j))
  {
  printf("【2】",*(p1+j));
  j++;
  }
  for(i=0;i<j;i+=2)
  *p2++=*(str1+i);
  *p2='\0';
  printf("\nThe new string is:%s\n",【3】);
}
答案及评析:
【1】″%s″,str1 【2】%c 【3】str2
【解析】填空1:本题考查对标准输入函数scanf()的调用格式,当输入字符串时,格式控制字符串为″%s″,题目要求输入的字符串保存在str1中,所以地址表列应为字符串的首地址,即为str1。填空2:本题考查对标准输出函数printf()的调用格式,当输出为字符型变量时,格式控制字符串为″%c″。填空3:题目要求将str1中下标为偶数的字符保存在字符串str2中并输出,所以printf()函数的输出表列是str2
2. 改错题
在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中值为负数的平均值(不包括0)。
例如:数组中元素的值依次为43,-47,-21,53,-8,12,0,则程序的运行结果为-25.333333。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include    <conio.h>
#include    <stdio.h>
double  fun(int   x[ ])
{
 double sum=0.0;
 int  c=0, i=0;
/**********************found***********************/

 while(x[i]==0)
     {
       if(x[i]<0)
         {
           sum=sum+x[i];
           c++;
         }
      i++;
     }
/**********************found***********************/

 sum=sum\c;
 return  sum;
}

main()
{
 int  x[1000]; 
 int  i=0;
 clrscr();
 printf("\nPlease enter some data(end with 0) :");
 do
 {
  scanf("%d",&x[i]);
 }while(x[i++]!=0);
 printf("%f\n",fun(x));
}
答案及评析:
(1)错误:while(x[i]==0)
     正确:while(x[i]!=0)
(2)错误:sum=sum\c;
正确:sum=sum/c;
【解析】错误1:此处考查的是对循环条件的理解,当被判断的数组元素为0时,说明这是数组的最后一个元素,此时要跳出循环。
错误2:C语言中的除法运算符是"/",而不是"\"。

3. 编程题
请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:
234 345 753 134 436 458 100 321 135 760
则输出结果为6,100。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
int fun(int *s,int t,int *k)
{


}
main()
{
  int a[10]={234,345,753,134,436,458,100,321,135,760},k;
  clrscr();
  fun(a, 10, &k);
  printf("%d, %d\n ", k, a[k]);
}
答案及评析:
int fun(int *s,int t,int *k)
{
  int i;
  *k=0;       /*k所指的数是数组的下标值*/
  for(i=0;i<t;i++)
     if(s[*k]>s[i])
        *k=i;    /*找到数组的最小元素,把该元素的下标赋给k所指的数*/
  return s[*k];              /*返回数组的最小元素*/
}
【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值,即*k=0。

本新闻共11页,当前在第11页  1  2  3  4  5  6  7  8  9  10  11  

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