CC++程序设计教程龚沛曾课后习题问题详解全集.docx
《CC++程序设计教程龚沛曾课后习题问题详解全集.docx》由会员分享,可在线阅读,更多相关《CC++程序设计教程龚沛曾课后习题问题详解全集.docx(29页珍藏版)》请在冰豆网上搜索。
CC++程序设计教程龚沛曾课后习题问题详解全集
习题一
一、
1、C2、A3、B4、C5、D6、A7、C8、B
二、
1、main
2、数字、下划线
3、字符串
4、#include、#define
5、hex
6、.h
7、语法错误逻辑错误
8、Insert/RemoveBreakpoint
9、.cpp
10、Fileview
三、略
********************************************************
习题二
1、B2、C3、D4、C5、D6、C7、C8、B9、B10、B11、D
1、x+y!
=a+b
2、pow((ln(10)+x*y),3)
3、sin(w*u)/(cos(45*3.14/180)+3*x*x)注:
对于函数cos,其要求的参数是弧度表示。
4、exp(3)+sqrt((2*x+3*y))
5、fabs(x-y)+(x+y)/(3*x)
6、1.0/(1.0/r1+1.0/r2+1.0/r3)
三、
1、a>d&&b<=d||a<=d&&b>d(a和b中有且只有一个大于d)
2、z=(x>y?
x:
y)
3、x<0&&y<0
4、x+y>z&&x+z>y&&y+z>x
5、int(x*100+0.5)/100.0
6、d>0&&d<=100&&d%2==0
7、x%5==0||y%5==0
8、n%k==0?
n/k:
n/k+1
四、
1、略
2、主要语句:
x%2==0?
cout<<"偶数":
cout<<"基数";
3、主要语句:
cout<4、主要语句:year%400==0||year%4==0&&year%100!=0?cout<<"闰年":cout<<"非闰年";5、主要语句:y=ln(x*x+3)/ln(10)+3.14/2*cos(40*3.14/180);******************************第三章一、1.C2.D3.D(该答案后还应附“其他值”)4.C5.B6.C7.A8.C9.B二、(1)输入两个正整数给m和n。(2)20(3)s=288(4)AB20ega5(5)******三、(1)c==')'count==0count>0count(2)cin>>m>>nm=m-nn=n-m(3)n=mn=n/5m=m+5四、1、#include"iostream.h"#include"math.h"voidmain(){floatx,y;cout<<"inputx:"<cin>>x;if(x<5)y=fabs(x);elseif(x<20)y=3*x*x-2*x+1;elsey=x/5;cout<<"x="<}2、#include"iostream.h"voidmain(){floats,p,t,w;cout<<"inputs:"<cin>>s;switch(int(s)/1000){case0:p=0;break;case1:p=0.05;break;case2:p=0.08;break;case3:case4:p=0.1;break;default:p=0.15;break;}t=s*p;w=s-t;cout<<"纳税款="<}3、#include"iostream.h"voidmain(){intm,count=0;for(m=100;m<1000;m++){if(m%10+m/10%10+m/100==5)count++;}cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
4、主要语句:
year%400==0||year%4==0&&year%100!
=0?
cout<<"闰年":
cout<<"非闰年";
5、主要语句:
y=ln(x*x+3)/ln(10)+3.14/2*cos(40*3.14/180);
******************************
第三章
1.C2.D3.D(该答案后还应附“其他值”)4.C
5.B6.C7.A8.C9.B
(1)输入两个正整数给m和n。
(2)20
(3)s=288
(4)AB20ega5
(5)*
**
***
(1)c==')'
count==0
count>0
count
(2)cin>>m>>n
m=m-n
n=n-m
(3)n=m
n=n/5
m=m+5
1、
#include"iostream.h"
#include"math.h"
voidmain()
{floatx,y;
cout<<"inputx:
"<cin>>x;if(x<5)y=fabs(x);elseif(x<20)y=3*x*x-2*x+1;elsey=x/5;cout<<"x="<}2、#include"iostream.h"voidmain(){floats,p,t,w;cout<<"inputs:"<cin>>s;switch(int(s)/1000){case0:p=0;break;case1:p=0.05;break;case2:p=0.08;break;case3:case4:p=0.1;break;default:p=0.15;break;}t=s*p;w=s-t;cout<<"纳税款="<}3、#include"iostream.h"voidmain(){intm,count=0;for(m=100;m<1000;m++){if(m%10+m/10%10+m/100==5)count++;}cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cin>>x;
if(x<5)
y=fabs(x);
elseif(x<20)
y=3*x*x-2*x+1;
else
y=x/5;
cout<<"x="<}2、#include"iostream.h"voidmain(){floats,p,t,w;cout<<"inputs:"<cin>>s;switch(int(s)/1000){case0:p=0;break;case1:p=0.05;break;case2:p=0.08;break;case3:case4:p=0.1;break;default:p=0.15;break;}t=s*p;w=s-t;cout<<"纳税款="<}3、#include"iostream.h"voidmain(){intm,count=0;for(m=100;m<1000;m++){if(m%10+m/10%10+m/100==5)count++;}cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
}
2、
{
floats,p,t,w;
cout<<"inputs:
"<cin>>s;switch(int(s)/1000){case0:p=0;break;case1:p=0.05;break;case2:p=0.08;break;case3:case4:p=0.1;break;default:p=0.15;break;}t=s*p;w=s-t;cout<<"纳税款="<}3、#include"iostream.h"voidmain(){intm,count=0;for(m=100;m<1000;m++){if(m%10+m/10%10+m/100==5)count++;}cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cin>>s;
switch(int(s)/1000)
{case0:
p=0;break;
case1:
p=0.05;break;
case2:
p=0.08;break;
case3:
case4:
p=0.1;break;
default:
p=0.15;break;
t=s*p;
w=s-t;
cout<<"纳税款="<}3、#include"iostream.h"voidmain(){intm,count=0;for(m=100;m<1000;m++){if(m%10+m/10%10+m/100==5)count++;}cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
3、
{intm,count=0;
for(m=100;m<1000;m++)
{if(m%10+m/10%10+m/100==5)
count++;
cout<<"count="<} 4、#include"iostream.h"voidmain(){intm,n;for(m=0;m<=30;m++)for(n=0;n<=30;n++)if(m*2+n*4==90&&m+n==30)cout<<"鸡:"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
4、
{intm,n;
for(m=0;m<=30;m++)
for(n=0;n<=30;n++)
if(m*2+n*4==90&&m+n==30)
cout<<"鸡:
"<"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
"<} 5、#include"iostream.h"voidmain(){floate=1,t=1;intn;for(n=1;1/t>1e-6;n++){t=t*n;e=e+1/t;}cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
5、
{floate=1,t=1;
intn;
for(n=1;1/t>1e-6;n++)
{t=t*n;
e=e+1/t;
cout<<"e="<} 6、#include"iostream.h"voidmain(){intx,y;for(x=1;x<=100;x++)for(y=1;y<=100;y++)if(x*x+2*x==y*y*y)cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
6、
{intx,y;
for(x=1;x<=100;x++)
for(y=1;y<=100;y++)
if(x*x+2*x==y*y*y)
cout<<"x="<} 7、#include"iostream.h"#include"stdio.h"voidmain(){charch;while((ch=getchar())!='.')if(ch=='')cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
7、
#include"stdio.h"
{charch;
while((ch=getchar())!
='.')
if(ch=='')
cout<elsecout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}8、#include"iostream.h"#include"math.h"voidmain(){intm,k1,k2;for(m=0;m<=1000;m++){k1=sqrt(m+100);k2=sqrt(m+100+168);if(k1*k1==m+100&&k2*k2==m+100+168)cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
8、
{intm,k1,k2;
for(m=0;m<=1000;m++)
{k1=sqrt(m+100);
k2=sqrt(m+100+168);
if(k1*k1==m+100&&k2*k2==m+100+168)
cout<}}9、二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。#include"iostream.h"#include"math.h"voidmain(){floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;do{x=(x1+x2)/2;y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;if(y1*y>0)x1=x;elsex2=x;}while(fabs(x2-x1)>eps);cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
9、
二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间,
依次类推,当新区间的长度或f(x)的绝对值小于eps时,x就作为所求的实根。
{floatx1=0,x2=10,x,y1,y2,y,eps=1e-6;
do{x=(x1+x2)/2;
y1=pow(x1,9)-4*pow(x1,5)-5*pow(x1,3)-270000;
y=pow(x,9)-4*pow(x,5)-5*pow(x,3)-270000;
if(y1*y>0)
x1=x;
x2=x;
}while(fabs(x2-x1)>eps);
cout<} 第四章一、1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B二、1、6789043212、1443、m-n=14三、1、#include"iomanip.h"{0,1}x[i]=x[i-1]+x[i-2]setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
第四章
1、C2、A、D3、A、B、C4、D5、C6、D7、A8、B
1、678904321
2、144
3、m-n=14
#include"iomanip.h"
{0,1}
x[i]=x[i-1]+x[i-2]
setw(5)<2、rand()%100+1j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
rand()%100+1
j"A("<3、b[m]=0nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
"A("<
b[m]=0
nb[m]=b[m]/44、gets(ch1)gets(ch2)*s1==*s2r=05、j=k=l=0jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
b[m]=b[m]/4
gets(ch1)
gets(ch2)
*s1==*s2
r=0
j=k=l=0
jc[l]=a[j]c[l++]=b[k++]kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
c[l]=a[j]
c[l++]=b[k++]
kj 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
j 四、1.(1)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
1.
(1)
#include"stdlib.h"
{inta[4][4],b[4][4],c[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=rand()%41+30;
b[i][j]=rand()%35+101;
cout<<"矩阵A的内容如下:
\n";
{for(j=0;j<4;j++)
cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<<"矩阵B的内容如下:
cout<
cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
c[i][j]=a[i][j]+b[i][j];
cout<<"矩阵C的内容如下:
cout<cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}}(2)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],t,i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(2)
{inta[4][4],t,i,j;
cout<cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}for(i=0;i<4;i++)for(j=0;j{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}cout<<"转置后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
for(j=0;j
{t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
cout<<"转置后矩阵A的内容如下:
cout<cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}}(3)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(3)
{inta[4][4],b[4][4],c[4][4],i,j,max,imax,jmax;
cout<cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}cout<<"矩阵B的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];cout<<"矩阵C的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}max=c[0][0];for(i=0;i<4;i++)for(j=0;j<4;j++)if(c[i][j]>max){max=c[i][j];imax=i;jmax=j;}cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
max=c[0][0];
if(c[i][j]>max)
{max=c[i][j];
imax=i;
jmax=j;
cout<<"max=c["<}(4)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=rand()%35+101;cout<<"矩阵A的主对角线以下元素内容如下:\n";for(i=0;i<4;i++){for(j=0;j<=i;j++)cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(4)
{inta[4][4],b[4][4],i,j;
cout<<"矩阵A的主对角线以下元素内容如下:
{for(j=0;j<=i;j++)
cout<cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}cout<<"矩阵B的主对角线以上元素内容如下:\n";for(i=0;i<4;i++){for(j=i;j<4;j++)cout<cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<<"矩阵B的主对角线以上元素内容如下:
{for(j=i;j<4;j++)
cout<}}(5)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(5)
{inta[4][4],i,j;
cout<cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}for(j=0;j<4;j++){intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}cout<<"改变后矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
{intt=a[0][j];a[0][j]=a[2][j];a[2][j]=t;}
cout<<"改变后矩阵A的内容如下:
cout<cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}}(6)#include"stdlib.h"#include"iostream.h"voidmain(){inta[4][4],i,j,s=0;for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=rand()%41+30;cout<<"矩阵A的内容如下:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(6)
{inta[4][4],i,j,s=0;
cout<cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<}for(i=0;i<4;i++)for(j=0;j<4;j++)if(i==j||i+j==3)s=s+a[i][j];cout<<"对角线元素之和为:"<} 第五章习题一、选择题1.下列叙述错误的是____A_____。(A)主函数中定义的变量在整个程序中都是有效的。(B)复合语句中定义的变量只在该复合语句中有效。(C)其它函数中定义的变量在主函数中不能使用。(D)形式参数是局部变量。2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。(A)形参数组可以不指定大小。(B)调用函数时的对应实参必须是数组名。(C)调用函数时,系统会为形参数组分配存储单元。(D)函数中对形参的修改将会影响实参值。3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。(A)编译时出错。(B)运行时出现不确定结果。(C)不会出错,且返回值的类型以return语句中表达式的类型为准。(D)不会出错,且返回值的类型以函数类型为准。4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。(A)3(B)4(C)5(D)75.以下关于定义重载函数的要求中,错误的是_____D_____。(A)要求参数个数不同。(B)要求至少有一个参数类型不同。(C)要求参数个数相同时,参数类型不同。(D)要求函数的返回值不同。6.下面的函数定义正确的是_____D____。(A)floatf(floatx;floaty)(B)floatf(floatx,y){returnx*y;}{returnx*y;}(C)floatf(x,y)(D)floatf(intx,inty){intx,y;{returnx*y;}returnx*y;}7.下面函数头的定义格式正确的是____C_____。(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)(C)voidsort(inta[],intn)(D)voidsort(inta[],n)8.以下几种模板函数的定义错误的是____C_____。(A)templateTfun1(Ta,intb){……}(C)templatevoidfun1(inta,intb){Ti;……}9.下面4个程序中输出结果是125的有____C_____个。(1).#include"iostream.h"voidcube(intx){x=x*x*x;}voidmain(){intx=5;cube(x);cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
if(i==j||i+j==3)
s=s+a[i][j];
cout<<"对角线元素之和为:
"<
第五章习题
一、选择题
1.下列叙述错误的是____A_____。
(A)主函数中定义的变量在整个程序中都是有效的。
(B)复合语句中定义的变量只在该复合语句中有效。
(C)其它函数中定义的变量在主函数中不能使用。
(D)形式参数是局部变量。
2.若函数的形参为一维数组,则下列说法中错误的是__B、C_______。
(A)形参数组可以不指定大小。
(B)调用函数时的对应实参必须是数组名。
(C)调用函数时,系统会为形参数组分配存储单元。
(D)函数中对形参的修改将会影响实参值。
3.若函数的类型和return语句中的表达式的类型不一致,则____D_____。
(A)编译时出错。
(B)运行时出现不确定结果。
(C)不会出错,且返回值的类型以return语句中表达式的类型为准。
(D)不会出错,且返回值的类型以函数类型为准。
4.在函数调用语句f(g(x,y),z=x+y,(x,y));中,实参的个数是____A_____。
(A)3(B)4(C)5(D)7
5.以下关于定义重载函数的要求中,错误的是_____D_____。
(A)要求参数个数不同。
(B)要求至少有一个参数类型不同。
(C)要求参数个数相同时,参数类型不同。
(D)要求函数的返回值不同。
6.下面的函数定义正确的是_____D____。
(A)floatf(floatx;floaty)(B)floatf(floatx,y)
{returnx*y;}{returnx*y;}
(C)floatf(x,y)(D)floatf(intx,inty)
{intx,y;{returnx*y;}
returnx*y;}
7.下面函数头的定义格式正确的是____C_____。
(A)voidsort(inta[n],intn)(B)voidsort(inta[][],intn)
(C)voidsort(inta[],intn)(D)voidsort(inta[],n)
8.以下几种模板函数的定义错误的是____C_____。
(A)template
Tfun1(Ta,intb)
{……}
(C)template
voidfun1(inta,intb)
{Ti;……}
9.下面4个程序中输出结果是125的有____C_____个。
(1).#include"iostream.h"
voidcube(intx)
{x=x*x*x;}
intx=5;cube(x);
cout<}(3).#include"iostream.h"intcube(intx){x=x*x*x;return(x);}voidmain(){intx=cube(5);//将x改为5cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(3).#include"iostream.h"
intcube(intx)
{x=x*x*x;return(x);}
intx=cube(5);//将x改为5
cout<}(A)1(B)2(C)3(D)410.下面函数说明正确的是____C_____。(A)voidf1(inta=3,intb,intc);(B)voidf2inta,intb=3,intc);(C)voidf3(inta,intb,intc=3);(D)voidf4(inta,intb,int3);11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)12.设函数的说明为:intfun(inta[],int&x);则下面调用该函数正确的是____B_____。(A)fun(a,n);(B)x=fun(a,n);(C)fun(a[10],n);(D)x=fun(a[],n); 二、写运行结果1、2、3、4、5、6、三.程序填空1.【程序说明】分段函数为【程序段】floaty(floatx){if(x<=0)return(x*x-x+1);elsereturnx*x*x+x+3;}2.【程序说明】函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。m、n为非负整数。如“abcdefghij”,后移动3个位置,成“hijabcdefg”。【程序段】voidbackmove(char*x,intn,intm){inti,j;charw;for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
(A)1(B)2(C)3(D)4
10.下面函数说明正确的是____C_____。
(A)voidf1(inta=3,intb,intc);
(B)voidf2inta,intb=3,intc);
(C)voidf3(inta,intb,intc=3);
(D)voidf4(inta,intb,int3);
11.设函数m()的说明形式为voidm(int,int*);利用函数m()对数5和整数j作函数m()定义的计算,正确的调用形式为_____C_____。
(A)m(&5,&j)(B)m(5,j)(C)m(5,&j)(D)m(&5,j)
12.设函数的说明为:
intfun(inta[],int&x);则下面调用该函数正确的是____B_____。
(A)fun(a,n);(B)x=fun(a,n);
(C)fun(a[10],n);(D)x=fun(a[],n);
二、写运行结果
三.程序填空
1.【程序说明】
分段函数为
【程序段】
floaty(floatx)
{if(x<=0)
return(x*x-x+1);
elsereturnx*x*x+x+3;
2.【程序说明】
函数backmove()是把字符指针x所指长度为n的字符串后移动m个位置,移出的字符移到串首。
m、n为非负整数。
如“abcdefghij”,后移动3个位置,成“hijabcdefg”。
voidbackmove(char*x,intn,intm)
inti,j;charw;
for(j=0;j{w=*(x+n-1);for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
{w=*(x+n-1);
for(i=0;i*x=w;}}3.【程序说明】函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub:"cd",st:"abcdefcd",返回2。【程序】#include“iostream.h”#includevoidmain(){chars1[80],s2[80];intindex(char[],char[]);gets(s1);gets(s2);if(index(s1,s2))cout<<"子串在字符串中首次出现的下标:"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
*x=w;
3.【程序说明】
函数index()为查找字符串sub是否是字符串st的子串。
若是,返回sub在st中首次出现的下标,否则返回-1。
字符串sub和st非空。
如sub:
"cd",st:
"abcdefcd",返回2。
【程序】
#include“iostream.h”
#include
{chars1[80],s2[80];
intindex(char[],char[]);
gets(s1);gets(s2);
if(index(s1,s2))
cout<<"子串在字符串中首次出现的下标:
"<elsecout<<"找不到";}intindex(charst[],charsub[]){inti,j,k;for(i=0;st[i]!='\0';i++){for(j=i,k=0;sub[k]!='\0'&&st[j]==sub[k];k++,j++);if(sub[k]=='\0')return(i);}return(0);}4.【程序说明】函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
cout<<"找不到";
intindex(charst[],charsub[])
{inti,j,k;
for(i=0;st[i]!
='\0';i++)
{for(j=i,k=0;sub[k]!
='\0'&&st[j]==sub[k];k++,j++);
if(sub[k]=='\0')return(i);
return(0);
4.【程序说明】
函数root为用二分法求方程f(x)=0在[x1,x2]的实根,精度为eps。
二分法求根的基本思想为f(x)在区间[a,b]上连续,f(a)与f(b)异号,区间中点c=(a+b)/2的f(c)符号和f(a)符号确定c代替a或b,使根所在区间每次减半,直到|a-b|下面程序为求方程在[1,7]区间的实根,精度取10-6。【程序】#include“math.h”#includedoubleroot(doublex1,doublex2,doubleeps=1e-6){doublef(doublex);doublex,y,y1;y1=f(x1);do{x=0.5*(x1+x2);y=f(x);if(y1*y>0.0)x1=x;elseif(y1*y<0.0)x2=x;}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);return(x);}doublef(doublex){returnx*x*x-5*x*x+16*x-80;}voidmain(){cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
下面程序为求方程在[1,7]区间的实根,精度取10-6。
#include“math.h”
doubleroot(doublex1,doublex2,doubleeps=1e-6)
{doublef(doublex);
doublex,y,y1;
y1=f(x1);
do{x=0.5*(x1+x2);
y=f(x);
if(y1*y>0.0)x1=x;
elseif(y1*y<0.0)x2=x;
}while(fabs(y)>=eps&&fabs(x2-x1)>=eps);
return(x);
doublef(doublex)
{returnx*x*x-5*x*x+16*x-80;}
{cout<5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。【程序】#defineSIZE13#defineSIZE24#include“iostream.h”floatmax_value(f
5.【程序说明】下面程序的功能是求出二维数组中最大的元素所在的行号和列号。
#defineSIZE13
#defineSIZE24
floatmax_value(f
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1