中南大学c++题库编程答案.docx
sin.wv.r+1a?01 .计算分段函数:|cosi-.t2+3,ti=0使用库函数sqrt来计算平方根。#include <iostream> ttinclude <iomanip>ttinclude <cmath>using namespace std;int main()Idouble x, y;cout”请输入个数x:cin»x;if(x!=O)y=sin (x) + (sqrt (x*x+l);elsey=cos (x)-x*x+3*x;cout"函数值:"setprecision (6) <<y<<endl;return 0;)2 .编写程序,输入某大写字母的ASCII码值,输出该字母的对应小ttinclude <iostream>using namespace std;int main()int a =,a,A,;int x;while( cin»x )if ( x>= 'A' && x<=,Z')cout" "<< (char) (x+a) «endl;elsecout”输入的不是大写字母的ASCI!码"endl;return 0;3 .用牛顿迭代法求方程:3x 3-4x 2-5x+13=0在x= 1附近的根,要 求精度为10-6。#include <iostream>#include <cmath>using namespace std;int main()float xn,xn 1 ,f,f 1;cout<<"请输入x的初值:";cin»xnl;doxn=xn1;f=(3*(xn-4/3)*xn-5)*xn+15;fl=(9*xn-8)*xn-5;xn 1 =xn-f7f 1; while(fabs(xn 1 -xn)>= 1 e-6);cout”方程的个根:"xn l«endl;return 0;4 .编写函数fun(),它的功能是利用以下所示的简单迭代方法求方程cos(x)-x=0 的一个实根。x n+1 =cos(x n )#include <stdio.h>#include <math.h>float value()(float xO, x1;xO = 0;x1 = cos(xO);while (abs(xO - x1) >= 0.000001)(xO = x1;x1 = cos(xO);return x1;)void main()(print!("迭代方法求方程:cos(x)-x=0的解为%fn", value();5 .编写函数int f (int x , int n),求出20个数中的最大数, 并在以下main函数中进行测试。#include<iostream. h>void main()inta = 1, 4, 6, 7, 3, 9, 10, 30, 59, 32, 48, 72, 87, 13, 27, 45, 64, 8, 2, 6);cout“a 中最大值为:“f(a, 20) endl;#include "stdafx. h"ttinclude <iostream>using namespace std;int f (int x, int n);int main(int argc, char* argv)int a20=1, 8, 10, 3, 7, 15, 28, 2, 4, 22, 0, 17, 25, 9, 19, 6, 14, 26, 20, 11;printf ("max is %dn", f (a, 20);return 0;)int f (int x, int n)(int i;int max;max = x0;for (i=l;i<n;i+)if (maxxi)max = xi;Jreturn max;return 0;)6 .将给定的十进制数转换为十六进制数。ttinclude <iostream>using namespace std;int main()int x;while( cin>>x )printf C %X Hn”, x);return 0;7 .编写个自定义函数:int f( int M, int N) , f()的功能是: 对给定的正整数M和N,找出满足方程"5x+6y=M"的正整数解中x和 y都是偶数的解。要求:若M和N不都是正整数,则结束函数并返 回1;只有M和N都是正整数时,继续求解操作,并用二重循 环进行求解:(1)在函数中输出满足条件的正整数解x和y,(2)使函数值返冋满足条件的正整数解的组数。ttinclude <iostream> using namespace std int f ( int M, int N);void main()cout«f (500, 650) «endl;#include <iostream> using namespace std;void main() cout«f (500,650) «endl; int f ( int M, int N )(int x, y, count = 0;if( M < 1 | N <1 ) return -1;for ( x = 2 ; x = N/5 ; x+=2 )for ( y = 2 ; y <= M/6 ; y+=2 )if( 5*x + 6*y = M )count+;cout"x - "«x«" y = "«y«endl;return (count?count:-l);)8 .编写个解“一百元买鸡”问题的自定义函数:int f( int M, int N)»其中M代表公鸡的单价(元/只),N代表母鸡的单价(元/只),价格由主调函数给定;购鸡方案中要求总花费刚好为 100元,且不允许全部购买公鸡或全部购买母鸡(即公鸡、母鸡只 数都不能为);求解所有购鸡方案。若M和N只要有一个以上参 数无意义,则函数结束执行并返回 1值;若M和N都有意义,则 函数输出所有可能的购鸡方案,并返回方案的组数。要求用二重循 环实现。ttinclude <iostream> using namespace std;void main() cout<<f(15, 28)<<endl; ttinclude <iostream>using namespace std;int f ( int M, int N);void main() cout<<f (30, 20)«endl; int f ( int M, int N )Iint x, y, count = 0;if( M < 1 I I N 1 ) return -1;for ( x = 1 ; x = 100/M ; x+)for( y = 1 ; y = 100/N &&( M*x + N*y=100); y+ )if ( M*x + N*y =100 )count+;cout"公鸡="«x«"母鸡="<<y<<endl;return (count?count:-l);9 .编写个自定义函数:int f( long a,int n, long x) , f()的功能是:对给定的含有n个元素的维数组a及某个指定数x, 查找数组a中是否存在元素值等于x的元素,若存在,则函数值返 回找到的下标最大的那个元素的下标;若不存在,则函数值返回 lottinclude <iostream>using namespace std;int f (long a, int n, long x);void main() long x=7;long a5 = 3, 5, 2, 7, 9;cout<<f (a, 5, x) «endl;ttinclude <iostream>using namespace std;int f (long a, int n, long x);void main() long x=7;long a5 = 3, 5, 2, 7, 9);cout<<f (a, 5, x) «endl;int f (long a, int n, long x)(int count = 0, pos = -1;for( int i=0;i< n ; i+)if ( ai=x )pos = i;count+;if( count=0 ) return -1;return pos;10.编写个自定义函数:int f( long a, int n, long x), f()的功能是:对给定的维数组a及某个指定数x,找出数组a 中元素值等于x的元素个数,以及最后个值为x的元素所在位置 下标。在函数中输出这两个结果,并将找到的元素个数作为函数值 返回。#include <iostream> using namespace std int f (long a口,int n, long x);void main() long x=7;long a5 = 3,7,2, 7, 9;cout«f (a, 5, x) «endl; #include <iostream>using namespace std;int f (long a, int n, long x);void main() long x=7;long a5 = 3, 5, 2, 7, 9;cout<<f (a, 5, x) «endl;)int f (long a, int n, long x)Iint count = 0, pos = -1;for ( int i=0;i n ; i+)if( ai=x )pos = i;count+;coutcount” "«i«endl;return count;11.编写个自定义函数:int f( long a,int n, long x),f ()的功能是:对给定的含有n个元素的维数组a及某个指定数x,查找数组a中是否存在元素值等于x的元素,若存在,则函数值返回找到的下标最小的那个元素的下标;若不存在,则函数值返回1。#include <iostream> using namespace std;int f (long a口,int n, long x);void main() long x=8;long a5 = 3,7,2, 7, 9;cout<<f (a, 5, x) «endl;ttinclude <iostream>using namespace std;int f (long a, int n, long x);void main() long x=7;long a5 = 3, 5, 2, 7, 9);cout<<f (a, 5, x) «endl;int f (long a, int n, long x)int count = 0, pos = -1;for ( int i=n-l;i>=0 ; i)if ( ai=x )count+;if( count=0 ) return -1;return pos;12.编写个自定义函数:int f (int N) , f()的功能是:对给定的正整数N,找出满足下列方程“3x+4y=N”的正整数解。若N不是 正整数,则结束函数并返回1:若N是正整数,则函数中输出找 到的所有正整数解,并且使函数值返回解的组数。用二重循环实 现。#include <iostream> using namespace std;int f (int N);void main() cout<<f(160)<<endl;#include <iostream> using namespace std int f (int N);void main() cout<<f (160)<<endl; system("pause"); int f( int N )(int x, y, count = 0;for ( x = 1 ; x = N/3 ; x+ )(for ( y = 1 ; y <= N/4 ; y+ )if ( 3*x + 4*y = N )count+;cout«"x = "«x«" y = "«y«endl;return (count?count:-l);13.编写个解“鸡兔共笼”问题的自定义函数:int f(int N), 其中N代表动物的脚总数;且笼中每种动物都至少有1只以上。若N不符合实际,则结束函数并返回1;若N符合实际要求,则函数 输出所有可能的鸡、兔数,并返回符合条件解的组数。用二重循环 实现。#include <iostream>using namespace std;int f (int N);void main() cout<<f (160) «endl; #include <iostream> using namespace std;int f (int N);void main() cout<<f (160) «endl; int f( int N )int x, y, count = 0;for( x = 1 ; x = N/2 ; x+ )(for( y = 1 ; y <= N/4 ; y+ )if( 2*x + 4*y = N )(count+;cout "鸡=" x "兔=" y endl;return (count?count:-l);14.编写个自定义函数:int f( int M) , f()的功能是:对给定 的正整数M,找出满足方程"5x+6y=M且x不超过!00的正整数解。若M不是正整数,则结束函数并返回1;若M是正整数时,则函 数中输出所有的正整数解,并且使函数值返冋正整数解的组数,要 求使用一重循环。#include <iostream>using namespace std;int f ( int M); cout«f (500) <<endl; #include <iostream>using namespace std;int f( int M);void main() cout«f (500) <<endl; int f( int M )(int x, y, count = 0;int t;if( M = 0 ) return -1;for( x = 1 ; x = M/5 && x = 100 ; x+ )(100 - 5*x)/6;if ( 5*x + 6*t = M )!:count+;cout"x= "«x«" y= "«t«endl;return (count?count:-l);)15编写个自定义函数:int f( int M, int N) , f()的功能是:对给定的正整数M和N,找出满足方程"7x+4y=M的正整数解中 x是偶 数且y是奇数的解。要求:若M和N不都是正整数,则结束 函数并返回一1:只有M和N都是正整数时,继续求解操作,用二 重 循环进行求解:(1)在函数中输出满足条件的正整数解x和y, (2)并且使函数值返冋满足条件的正整数解的组数。#include <iostream> using namespace std;int f( int M, int N);void main() cout«f (500, 650) «endl; #include <iostream> using namespace std;int f( int M, int N);void main() cout«f (500,650) «endl; int f ( int M, int N )int x, y, count = 0;if( M < 1 | N <1 ) return -1;for( x = 2 ; x <= N/7 ; x+=2 )for( y = 1 ; y <= M/4 ; y+=2if( 7*x + 4*y = M )count+;cout"x = "x" y="«y«endl;return (count?count:-l);16 .编写个自定义函数:int f( char x, int N) , f()的功能是:对给定的字符c和整数N,用c代表的符号打印个N行的图案,每行开头没有任何空格。比如,当c为*且N为5时,打印 的图案如本题图所示。且函数值返回1。ttinclude <iostream> using namespace std; int f (char x, int N);void main() f , 5) ; ) #include <iostream> using namespace std;int f (char x, int N);void main()char x;int n, i, m;cout ”请输入字符和行数:'';cin>>x>>n;for (i=l;i=n;i+)(for (m=l;m<=i;m+)cout«x;cout<<endl;)17 .编写个自定义函数:int f( char x, int N) , f()的功能是:对给定的字符c和整数N,用c代表的符号打印个N行的图案,每行开头没有任何空格。比如,当c为T且N为5时,打印 的图案如本题图所示。且函数值返回1。TTTT TITII ruuri TTTUTTTT#include <iostream> using namespace std; int f (char x, int N);void main()fCr,5); ) ttinclude <iostream> using namespace std; int f (char x, int N);void main() char x;int n, i, m;cout ”请输入字符和行数:“;cin»x>>n;for(i=l;i=2*n;i=i+2)I:for(m=l;m<=i;m+)cout<<x;cout<<endl;)18 .编写个自定义函数:int f( int N) , f()的功能是:对给定 的正整数N,打印个N行N列的由A、B、C以及空格符 号组成的 方阵图案。比如,当N为5时,打印的图案如本题图所 示。且函数值返回1。include <iostream> using namespace std; int f (int N);void main() f(5); ) ttinclude <iostream> using namespace std; int f (int N);void main()int n;cin»n;f (n);)int f (int N)(int i, m;for(i=l;i<=N;i+)for (m=l;m<=N;m+)(if(m=lI|m=i)cout"Aelse if(m>i)cout<<"Belsecout"C " cout«endl;return 1;19 .编写个自定义函数:int f( int N) , f()的功能是:对给定的正整数N<10,打印个N行N列的由数字、字符P、K、空格 '组成的方阵图案。比如,当N为5时,打印的图案如本题图所 示。且函数值返回1。#include <iostream> using namespace std;int f (int N); f(5); #include <iostream>using namespace std;int f (int N);void main()Iint n;cout ”请输入一个数:"endl;cin>>n;f (n);int f (int N)int i, m;for(i=l;i=N;i+)(for(m=l;m<=N;m+)(if (i-l)cout"1else if (m>i)cout<<"K "else if(m<i)cout<<"P "elsecout<<m«" cout«endl;return 1;20.本题在主函数中给定个数N,通过调用自定义函数f得到、N 区间中不能被3整除的数之和。请根据函数f的声明语句及其功能 完成函数代码设计。#include <iostream>using namespace std;int f( int m);main () int n;cout“please enter n"cin>n;cout«f (n);using namespace std;int f( int m)int sum=O;for(int i=l;i=m;i+)if(i % 3 !=0) sum +=i;return sum; int n;cout please enter n:"cin»n;cout<<f(n);)21.本题在主函数中给定数组a及其元素个数n,通过调用自定义函 数f,使数组a的元素反序存放:即第1个位置的元素与倒数第1 个位置的元素交换,第2个位置的元素与倒数第2个位置的元素交 换,如此类推。交换的元素组数与元素总数n有关。要求n在 主函数中给定。根据主函数代码和函数f的声明,完成自定义函数 设计。#include <iostream>using namespace std; int i, a10;for (i=0; i =10T ; i+)cin»ai;f (a, 10);for (i=0; i =10T ; i+)coutai',;)ttinclude <iostream>using namespace std;void f (int x, int n)tmp = xi;xi= xn-i-l;xn-i-l=tmp;void main() int i, a10;for (i=0; i=10T ; i+) cin»ai;f (a, 10);for (i=0;i=10-1;i+)cout ai ,22,本题在主函数中给定个数N,通过调用自定义函数f得到1N 区间的偶数和。请根据函数f的声明语句及其功能完成函数代码设 计。#include <iostream>using namespace std;int f ( int m);main () int n;cout please enter n ;cin»n;cout«f (n);using namespace std;int f( int m)int sum=O;for(int i=0;i=m;i+)if(i%2=0) sum += i;return sum; int n;cout“please enter n"cin»n;cout<<f(n);)23.本题在主函数中给定个数N,通过调用自定义函数f得到N 区间的奇数和。请根据函数f的声明语句及其功能完成f函数代码 设计。#include <iostream>using namespace std;int f( int m);main () int n;cout<<"please enter n ;cin»n;cout<<f (n);#include <iostream> using namespace std;int f( int m)int sum=O;for(int i=0;i=m;i+)if(i%2 != 0) sum += i;return sum;int main() int n;cout“please enter n"cin»n;cout<<f(n);)24.本题在主函数中给定数组a及其元素个数n,通过调用自定义函 数f得到给定数组中的所有元素之和。请根据函数f的声明语句及 其功能完成f函数代码设计。#include <iostream>using namespace std;#define N 10 int f ( int x , int n);int i, aN;for (i=0; i =NT ; i+)cin»ai;cout«f (a, N);#include <iostream> using namespace std;#define N 10int f( int x , int n)Iint sum=0;for (int i=0;in;i+)sum += xreturn sum;void main()int i, aN;for (i=0; i =NT ; i+)cin>>ai;cout<<f (a, N);)25 .本题在主函数中给定数组a及其元素个数n,通过调用自定义函 数f求给定一维数组中所有下标为偶数的元素之和。请根据函数f 的声明语句及其功能完成函数代码设计。ttinclude <iostream>using namespace std;#define N 10 int f ( int x , int n);void main()int i, aN;for (i=0;i=N-1;i+)cin>>ai;cout<<f (a, N);)ttinclude <iostream>using namespace std;ttdefine N 10int i,sum=O;for(i=0;in;i+=2)sum += xi;return sum;)void main()int i, aN;for (i=0;i=N-1;i+)cin»ai;cout<<f (a, N);)26 .本题在主函数中给定数组a及其元素个数n,通过调用自定义函 数f求给定一维数组中所有下标为奇数的元素之和。请根据函数f 的声明语句及其功能完成函数代码设计。using namespace std;#define N 10int f( int x , int n);void main()int i, aN;for (i=0; i =NT ; i+)cin»ai;cout«f (a, N);)ttinclude <iostream> using namespace std;#define N 10 int f ( int x , int n);int i, aN;for (i=0;i<=N-l;i+)cin»ai;cout<<f (a, N);int f (int array, int n)(int sum = 0;for (int i=l; i<n; i+=2)(sum += array i;return sum;27.本题在主函数中给定方阵数组a及其行数(列数)M,通过调用 自定义函数f求给定二维数组中所有上三角元素(不含主对角线) 之和。请根据函数f的声明语句及其功能完成f函数代码设计。#include <iostream>using namespace std;#define M 3int f ( int x M);void main()int i, j, aM M;for (i=0; i=MT ; i+)for (j=0;j<=M-l;j+)cin»ai j;cout«f (a);using namespace std;#define M 3int f ( int x M);void main()int i, j, aM M;for (i=0;i=M-.; i+)for (j=0;j+)cin»ai j;cout<<f (a) «endl;int f (int x M)int sum=O;int i, j;for( i=0;iM;i+)for(j=i+l; j M; j+)I:sum+=xij;)return sum;)28.本题在主函数中给定方阵数组a及其行数(列数)M,通过调用自定义函数f求给定二维数组中所有下三角元素(不含主对角线)之和。请根据函数f的声明语句及其功能完成f函数代码设计。using namespace std;#define M 3int f ( int x M);void main()(int i, j, aM M;for (i=0; i=MT ; i+)for (j=0;j<=M-l;j+)cin»ai j;cout<<f (a);)ttinclude <iostream>using namespace std;ttdefine M 3int f ( int x M);void main()int i, j, aM M;for (i=0; i=MT ; i+)for (j=0;j<=M-l;j+)cin»ai j;cout<<f(a)<<endl;)int f (int x M)Iint sum=0 , i , j ;for (i=0;i<M;i+)sum+=xij;return sum;)29.本题在主函数中给定方阵数组a及其行数(列数)M,通过调用 自定义函数f求给定二维数组中所有主对角线上元素之和。请根据 函数f的声明语句及其功能完成f函数代码设计。#include <iostream>using namespace std;ttdefine M 3int f ( int x M);void main()for (i=0; i=MT ; i+)for (j=0;j<=M-l;j+)cin»ai j;cout<<f (a);)#include <iostream> using namespace std;#define M 3int f ( int x M);void main()int i, j, aM M;for (i=0;i=M-.; i+) for (j=0;j<=M-l;j+)cin»ai j;cout<<f(a)<<endl;int f (int x M)int sum=O;for(int i=0;iM;i+)sum+=xii;return sum;30.通过调用自定义函数f求有规律的数列1, 2,4, 8, 16,中前n项之和,其中n在主函数中给定。请根据函数f的声明语句及其功 能完成f函数代码设计。ttinclude <iostream>using namespace std;int f( int m);main () int n;cout please enter n”;cin»n;cout<<f (n);)#include <iostream>using namespace std;int f( int m);main () int n;cout“please enter n"cin»n;cout<<f (n);int f (int n)(int sum = 0;for (int i=0; i<n; i+)int value_=1;for (int j=0; j<i; j+)value_ *= 2;sum += value_;)return sum;)31.通过调用自定义函数f求有规律的数列1, 4, 9, 16, 25, ) 中前n项之和,其中n在主函数中给定。请根据函数f的声明语句 及其功能完成f函数代码设计。#include <iostream>using namespace std;int f( int m);main () int n;cout“please enter n"cin»n;cout<<f (n);#include <iostream>using namespace std;int f( int m);main () int n;cout“please enter n"cin»n;cout<<f (n);)int f (int n)for (int i=l; i=n; i+)sum += i*i;)retur