当前位置:文档之家› 东南大学2009年级上机考试试卷C++上答案

东南大学2009年级上机考试试卷C++上答案

东南大学09级计算机科学基础I上机试卷A一、改错题(50分)【要求】调试程序,修改其中的语法错误及少量逻辑错误。

只能修改、不能增加或删除整条语句,除了可以增加由"{"、回车等分隔符产生的行数外,不允许增加其它行数。

【注意】源程序以“学号f1.cpp”命名,存入自己学号文件夹。

【题目】自定义函数的功能为统计数组中负数的个数,并且将负数改为0;主函数产生-20~79之间的n个随机数,调用自定义的函数,输出函数调用后数组的所有元素的值及原数组中包含的负数个数。

修改程序,运行时能够得到如下的输出结果:产生的随机数为:21 47 14 -20 49 4 58 38 42 44-15 25 61 7 41 71 75 22 7 16数组中负数的个数为:2负数清零后的数组为:21 47 14 0 49 4 58 38 42 440 25 61 7 41 71 75 22 7 16程序中有十处错误。

改错题评分标准:每错5分,共50分【含错误的源程序】#include<iostream>#include<cstdlib>using namespace std; //错误:命名空间using namespace iostream;int ClrMinus(int [],int); //错误声明:int ClrMinus(int ,int);int main(){const int n=20; //错误变量声明int n=20int arr[n]={0},i;cout<<"产生的随机数为:"<<endl;for(i=0;i<n;i++) //数组元素范围错误for(i=1;i<=n;i++){arr[i]=rand()%100-n;cout<<arr[i]<<'\t';}cout<<endl;cout<<"数组中负数的个数为:"<<ClrMinus(arr,n)<<endl;//错误函数调用:ClrMinus(arr[],n)cout<<"负数清零后的数组为:\n";for(i=0;i<n;i++); //错误变量声明int n=20 多了;cout<<arr[i]<<'\t'; //错误数组作用域Arr[i]cout<<endl;return 0;}int ClrMinus(int Arr[],int m){int count=0; //未初始化int count;for(int i=0;i<m;i++) //错误变量声明int n=20{if(Arr[i]<0) //条件语句块错误:少了{}{Arr[i]=0;count++;}}return count;}二、编程题(50分)【注意】源程序以“学号f2.cpp”命名,存入自己学号文件夹。

【题目】寻找二维数组某个数,该数恰好是所在行各数的平均值,且是所在列中的最大值。

例如:10 12 13 14 151 2 3 4 52 3 7 8 920 21 22 23 243 314 56 78其中22就是符合条件的数。

【要求:】(1) 设计函数int fun(int a[][5],int &i,int &j);完成在数组中寻找符合条件的数,将该数据返回,若不存在符合条件的数时函数返回0。

(2)主函数完成:建立一个整型二维数组a[5][5], 对数组a初始化的数据从键盘输入,(不允许编译时初始化),并将产生的数组写入文件“学号f2.txt”的第一行,数之间用空格隔开。

调用函数fun(a,x,y)寻找符合条件的数,当函数返回值不为0时表示找到符合条件的数,将该数据及所在行位置、列位置写入文件“学号f2.txt”的第二行,写入文件的数据格式为:符合条件的数是:行位置为:列位置为:,中间用空格隔开。

否则在文件中写入:不存在符合条件的数据。

示范:写入文件中的数据格式为:第一行:a数组,元素之间用空格隔开第二行:符合条件的数是:22 行位置为:3 列位置为:2编程题评分标准:1. 头文件引用是否正确2分2. 主函数:22分(1)创建文件流对象与要求的文件相对应数否正确(2分)(2)是否关闭文件(2分)(3)变量初始化(2分)(4)产生a数组是否正确(8分)(5)将a数组是否按要求写入文件(4分)(6)将符合条件的数及其位置是否按要求写入文件(4分)3. fun函数:26分(1)求各行平均值,是否正确(8分)(2)求各列最大值,是否正确(8分)(3)条件满足判断返回是否正确(6分)(4)不满足条件返回是否正确(4分)#include<iostream>#include<fstream>using namespace std;int fun(int a[5][5],int &i,int &j);int main(){int x=0,y=0,m;ofstream ofile;ofile.open("学号f2.txt");cout<<"输入数据(5行5列):";for(i=0;i<5;i++)for(j=0;j<5;j++)cin>>a[i][j];for(i=0;i<5;i++)for(j=0;j<5;j++)ofile<<a[i][j]<<’‘;ofile<<endl;m=fun(a,x,y);if(m!=0){cout<<x<<' '<<y<<' '<<m<<endl;ofile<<”符合条件的数是::”<<m<<”\t行位置为:”<<x<<”\t列位置为:”<<y;}ofile<<endl;else{ cout<<"不存在符合条件的数"<<endl;ofile<<"不存在符合条件的数"<<endl;}ofile.close();return 0;}int fun(int a[][5],int &i,int &j){int s[5]={0},p[5]={0},max[5]={0};bool bo=0;for(i=0;i<5;i++){for(j=0;j<5;j++)s[i]+=a[i][j];p[i]=s[i]/5;}for(j=0;j<5;j++){max[j]=a[0][j];for(i=0;i<5;i++)if(a[i][j]>max[j])max[j]=a[i][j];}for(i=0;i<5;i++)for(j=0;j<5;j++)if(max[j]==a[i][j]&&p[i]==a[i][j]){return a[i][j];}if(bo==0) return 0;}#include<iostream.h>#include<fstream.h>void main(){ int x[5][5];int a,b;ofstream chu("D:\\第一次.txt");for(int i=0;i<5;i++)for(int j=0;j<5;j++){cin>>x[i][j];chu<<x[i][j]<<'\t';}chu<<endl;int fun(int a[][5],int &i,int &j);if(fun(x,a,b)==1) chu<<"不存在符合条件的数据";chu.close();}int sum(int a[5]){int s,i=0;for(i;i<5;i++) s+=a[i];return s;}int fun(int a[][5],int &i,int &j){ int *(p)[5]=a;int n=0,q;for(i;i<5;i++)for(j;j<5;j++){if(*(*(p+i)+j)==sum(a[i])/5) q=1;else {q=0;n++;}if(q=1)for(int k=0;k<5;k++){if(*(*(p+k)+j)<=*(*(p+i)+j))chu<<"符合条件的数是:"<<*(*(p+i)+j)<<"行位置为:"<<i<<"列位置为:"<<j;}if(n==25) return 1;if(n<25) return 0;}}#include<iostream.h>#include<fstream.h>void main(){ int x[5][5];int a,b;ofstream chu("D:\\第一次.txt");for(int i=0;i<5;i++)for(int j=0;j<5;j++){cin>>x[i][j];chu<<x[i][j]<<'\t';}chu<<endl;int fun(int a[][5],int &i,int &j);if(fun(x,a,b)==1) chu<<"不存在符合条件的数据";chu.close();}int sum(int a[5]){int s,i=0;for(i;i<5;i++) s+=a[i];return s;}int fun(int a[][5],int &i,int &j){ int (*p)[5]=a;int n=0,q;ofstream chu("D:\\第一次.txt");for(i;i<5;i++)for(j;j<5;j++){if(*(*(p+i)+j)==sum(a[i])/5) q=1;else {q=0;n++;}if(q=1)for(int k=0;k<5;k++){if(*(*(p+k)+j)<=*(*(p+i)+j))chu<<"符合条件的数是:"<<*(*(p+i)+j)<<"行位置为:"<<i<<"列位置为:"<<j;}if(n==25) return 1;if(n<25) return 0; }}。

相关主题