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(); } |