江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2013秋江苏省计算机二级C++上机真题第1套

2013秋江苏省计算机二级Visual C++上机试卷

一、改错题(20)

[题目]

  以下程序的功能是:验证一个字符串中的小括号"("")"是否匹配,即左小括号和右小括号是否成对出现,并且符合括号配对规则,例如,字符串")(""(( )"中的小括号都不匹配

   正确程序的输入/输出结果如下(下划线部分为键盘输入);

   请输入一个字符串:ab(cde)(fg)(b)

   该字符串的小括号正确匹配

   请输入一个字符串:ab)bc(de)(

   该字符串的小括号不匹配

   含有错误的源程序如下:

   #include <iostream.h>

   int judge(char str[],int n)

   {

     int count;

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

          if(str[i] == '(')

            count++;

          else if(str[i]==')'){

            count--;

            if(count>0)

               return 0;

          }

      }

      if(count!=0)

         return 0;

     return 1;

   }

       

   void main()

   {

     char str[50];

     cout<<"请输入一个字符串:";

     cin.getline(str,50);

     if(!judge(str, strlen(str)))

       cout<<"该字符串的小括号正确匹配"<<endl;

     else

       cout<<"该字符串的小括号不匹配"<<endl;

   }

【要求】

    1.打开T盘中myfa.txt文件,将其文本拷贝到文件myfa.cpp(或将上述程序录入到文

  myfa.cpp),根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。程

  序中的注解可以不输入。 

    2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预

      处理命令,但不能增加其他语句,也不能删除整条语句。

    3.将改正后的源程序文件myfa.cpp必须放在T盘根目录下,供阅卷用。

 

二、编程题(20)

【题目】

试定义一个类NUM,根据给定的二维数组a生成二维数组b,其生成规则如下:

  b[m][n]=

具体要求如下:

(1)私有数据成员

   int a[3][4]:原数组a

   float b[3][4]:生成数组b

(2)公有成员函数

   NUM(int k[][4], int n):构造函数,利用数组k初始化数组a

   void fun1(int k, int p):按下列算法提示计算数组b的元素b[k][p]

   void fun2():按题意生成数组b

   void print(): 按行列方阵形式输出数组a和数组b

   算法提示: 计算  的程序采用两重循环,其中 为外循环,

    为内循环

(3)在主函数中对该类进行测试

   输出示例:

   数组a:

   5    8    10    15

  17    6     4     8

   6    15    9     12

数组b:

7.07107   14.5344  24.2441  39.1695

24.5967   12.7269  10.0145  10.2021

29.5146   11.4176  7.54247  6.84524

 

[要求]

 源程序文件名必须为myfb.cpp,并放在T盘根目录下,供阅卷用

 

参考答案:

一、改错题

在第1行与第2行之间       添加#include <string.h>

4    int  count;    改为:int count=0

10   if(count>0)    改为: if(count<0)

23   if(!judge(str,strlen(str))  改为:if(judge(str,strlen(str))

 

 

 

 

 

二、编程题

#include <iostream.h>

#include <math.h>

 

class NUM{

   int a[3][4];

   float b[3][4];

public:

       NUM(int k[][4], int n)

       {

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

                 for(int j=0;j<4;j++)

                        a[i][j]=k[i][j];

       }

 

       void fun1(int k,int p)

       {

       float temp=0;

          for(int i=0;i<=k; i++)

                 for(int j=0; j<=p;j++){

             float t0=a[i][j]*a[i][j];

                      temp+=sqrt(t0/(k+1)/(k+1)+t0/(p+1)/(p+1));

                 }

              b[k][p]=temp/(k*p+1);

       }

 

       void fun2()

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

             for(int j=0; j<4; j++)

                      fun1(i,j);     

       }

 

       void print()

       {

      cout<<"数组a:"<<endl;

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

        for(int j=0;j<4;j++)

                     cout<<a[i][j]<<'\t';

           cout<<endl;

         }

         cout<<"\n数组b:"<<endl;

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

        for(int j=0;j<4;j++)

                     cout<<b[i][j]<<'\t';

              cout<<endl;

         }

       }

};

 

void main()

{

       int a1[3][4]={5,8,10,15,17,6,4,8,6,15,9,12};

       NUM n1(a1,3);

       n1.fun2();

       n1.print();

}