一、单项选择题
1. 声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。 2.inline
3.对象、对象指针、引用
4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。 5.int *fun(char,int&);
二、单项选择题
1.A;使用了const限制改变。
2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。只是函数重载的依据是参数个数和数据类型的不同。 3.C;参考课本P61,当形参有两个时,使用C的格式。
三、改错题
1.下面程序错在何处? template T y; y = x*x - T; // 错误,T是类型,不是变量,不能参加运算; return y; } 2.找出下面程序中的错误之并改正之。 #include Type max(T x, y) // x的类型和template中的不一样,并且y没有类型。 { return (x>y) ? (x) : (y); } 修改如下: #include 3. 找出下面程序中的错误之并改正之。 函数change 的参数定义成了常量,只能使用参数,而无权修改他。 #include void change(const string& s) //函数change 的参数定义成了常量,只能使用参数,而无权修改他。 { s = s + \"pig!\"; } void main() { string str(\"it is a \"); change(str); cout << str << endl; } 修改如下: #include //函数change 的参数定义成了常量,只能使用参数,而无权修改他。 { s = s + \"pig!\"; } void main() { string str(\"it is a \"); change(str); cout << str << endl; } 四、编程题 1.编写一个求方程ax2 + bx + c = 0的根 的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。要求从主函数输入a,b,c的值并输出结果。 #include using namespace std; void equation_1 (int a, int b, int c) { double x1, x2, temp; temp = b*b - 4 * a * c; x1 = (-b + sqrt(temp) ) / (2 * a * 1.0); //分母乘以1.0是为了保证分母的结果位double型 x2 = (-b - sqrt(temp) ) / (2 * a * 1.0); cout<<\"两个不相等的实根\"<< endl; cout<<\"x1 = \"<< x1<<\} void equation_2 (int a, int b, int c) { double x1, x2, temp; temp = b*b - 4 * a * c; x1 = (-b + sqrt(temp) ) / (2 * a * 1.0); x2 = x1; cout<<\"两个相等的实根\"<< endl; cout<<\"x1 = \"<< x1<<\ } void equation_3 (int a, int b, int c) { double temp, real1, real2, image1, image2; temp = - (b*b - 4 * a * c); real1 = -b / (2 * a *1.0); real2 = real1; image1 = sqrt(temp); image2 = - image1; cout<<\"两个虚根\"<< endl; cout<<\"x1 = \"<< real1<<\" + \"<< image1<<\"j\"<< endl; cout<<\"x2 = \"<< real2<<\" - \"<< -image2<<\"j\"<< endl; //加了两个减号,显示更清晰 } void main() { int a, b, c; double temp; cout<<\"输入a,b,c的值\"<< endl; //从主函数输入a、b、c cin>>a>>b>>c; cout<<\"方程为:\"<< a<<\"x*x+\"<< b<<\"x+\"<< c<<\" = 0\"<< endl; temp = b*b - 4 * a * c; if(temp > 0) //使用if选择语句进行判断选择 equation_1 (a, b, c); if(temp == 0) equation_2 (a, b, c); if(temp < 0) equation_3 (a, b, c); } 运行结果: 2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。要求在短小而完全的程序中显示这个程序是怎样被调用的。 #include < iostream > #include < string > using namespace std; char up (char c) { return (c >= 97 && c <= 122) ? (c - 32) : c; //小写字母的ASCII码从97-122,大写从65-90,小写转大写码值减32 } void main() { int i=0; string str = \"Welcome\"; while(str[i] != '\\0') //字符串未到末尾则调用up函数 cout<< up(str[i++]); cout<< endl; } 运行结果: 3.编写主程序条用带实数r和整数n两个参数的函数并输出r的n次幂。 #include < iostream > using namespace std; double power(double r, int n) { int i; double result = 1.0; for(i=0; i void main() { double r; int n; cout<<\"r = \"; cin>>r; cout<<\"n = \"; cin>>n; cout<< r<<\"的\"<< n<<\"次幂是:\"<< power(r,n)<< endl; //调用函数 } 运行结果: 4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。其方式为第1行有1个字符C,第2行有2个字符C ,等等。 #include < iostream > using namespace std; void print_triangle(char c, int n) { int i, j; for(i=0; i< n; i++) //使用双重for循环输出三角形 { for(j=0; j<=i; j++) { cout<< c; } cout<< endl; } } void main() { char C; int N; cout << \"请输入一个字符:\"; cin >> C; cout << \"请输入行数:\"; cin >> N; print_triangle(C,N); //调用打印三角形函数 } 运行结果: 5.编写一个ieqiu字符串长度的函数,strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。 #include < iostream > #include < string > using namespace std; int strlen(string str) //传递对象参数,求字符串长度 { int len = 0; while(str[len] != '\\0') { len++; } return len; } void revers(string& str1) //传递引用参数,将字符串倒序 { char c; int j, len; len=strlen(str1); j=len/2-1; while(j>=0) { c = str1[j]; str1[j] = str1[len-j-1]; str1[len-j-1] = c; j--; } str1[len]='\\0'; } void main() { string str = \"Welcome\"; cout<< str <<\"----的长度:\"<< strlen(str)<< endl; cout<< \"倒序前字符串:\" << str << endl; //倒序前 revers(str);// cout<< \"倒序前字符串:\" << str<< endl; //倒序后 } 运行结果: 6.用函数模板实现3个数值中按最小值到最大值排序的程序。 #include void main() { int a, b, c; double e, f, g; cout << \"请输入三个整数:\"; cin >> a >> b >> c; sort(a,b,c); cout << \"请输入三个浮点数:\"; cin >> e >> f >> g; sort(e,f,g); } 运行结果: 7.利用函数模板设计一个求数组元素总和的函数,并检验之。 #include < iostream > using namespace std; template T s = 0; for(int i=0; i int a[5]={5,8,1,3,4}; int s = sum(a,5); //调用求和函数 cout << \"数组的和为:\" << s < 8.重载上题中的函数模板,使他能够进行两个数组的求和。 #include < iostream > using namespace std; template T s = 0; for(int i=0; i void main() { int a1[5]={5,8,1,3,4}; int a2[8]={1,2,3,4,5,2,3,6}; int s1 = sum(a1,5); //自动重载第一个sum函数 int s2 = sum(a2,8); //自动重载第一个sum函数 int s3 = sum(a1,5,a2,8); //自动重载第二个sum函数 cout << \"数组a1的和为:\" << s1 < 因篇幅问题不能全部显示,请点此查看更多更全内容