1.C/C++规定,在一个源程序中,main()函数的位置( )。C A.必须在最开始 B.必须在最后
C.可以任意 D.必须在系统调用的库函数的后面 2.以下()是C/C++合法的标识符。A A.char2 B.@x C.int D.7Bw
3.下面的程序,对于输入:2 9 15,输出的结果是( )。B #include\"iostream.h\" void main() {int a; float b;
cout<<\"input a,b:\"< cout<<\"a+b=\"<A.2 B.11 C. 26 D.24 4. 在Visual C++中,打开一个项目只需要打开对应的项目工作区文件即可,项目工作区文件的扩展名为( )。C A.obj B.dsp C.dsw D.cpp 5.下面关于C语言与C++关系的说法中,( )是正确的。D A.C语言是C++的子集 B.C++对C语言进行了改进 C.C++和C语言都是面向对象的 D.C++继承了C语言的众多优点 6.设置一个断点的方法是将光标移到需要设置断点的行上,然后按( )键。A A.F9 B.F10 C.F11 D.F12 7.下面关于编译预处理命令的说法中,正确的是( )。C A.一条文件包含命令能包含多个文件 B.文件包含命令不可以嵌套使用 C.编译预处理命令是在编译之前被处理的命令 D.编译预处理命令中的“#”可以省略 8.使用( )可以设置数据输出的宽度。B A.setbase(int n) B.setw(int n) C.setfill(int n) D.setprecision(int n) 二、 填空题 1.C/C++程序是由一个或多个函数组成的,但必须要有一个( )函数,程序从这个函数开始运行的。 main() 2.C/C++字符集包括大、小写英文字母、( )、( )和包括运算符在内的特殊字符,程序中出现字符集以外的字符就是一个语法错误。 数字0-9、下划线 3.在Visual C++中编写程序时,除了注释中可以出现汉字,还能在( )中使用汉字。字符串 4.文件包含命令是以( )开始的预处理命令,而宏定义命令是以 ( )开始的预处理命令。#include #define 1 / 51 5.在cout命令中,使用 ( )格式控制符可以把一个数据以十六进制的形式输出。hex 6.在C/C++中,头文件的扩展名一般为( )。.h 7.程序的错误一般分两种:( )和( )。前者是编译器可以发现的,而后者编译器则无法发现。语法错误和逻辑错误 8.在Visual C++中调试程序时,可以使用快捷菜单中的 ( )命令来插入断点和清除断点。Insert/Remove Breakpoint 9.C++源程序的扩展名为( )。.cpp 10.在Visual C++中,浏览当前项目中的所有源程序文件应在工作区的( )选项卡。Fileview 三、 简答题 1. C++与C语言的主要区别是什么?C++是C语言的超集。C++中的类和对象部分,C语言没有,C++是面向对象的程序设计。见教材P3。 2. C/C++程序由哪些部分组成?C/C++程序是由一个或多个函数组成,其中必须要有一个main()函数。在一个函数内,语句的执行是从上到下的。 3. 判断下列符号中哪些不能作为C/C++的标识符: a? , 3a, a-b, f(x), A D, a.txt, D $, ∏, double 能作为C/C++的标识符:abc,b,s_2,Int 4. C/C++语言的书写格式有哪些特点?C/C++程序书写形式自由。一行可以写多条语句,一条语句也可以分别写在不同行上。区别大小写字母。 5. 何时在#include中使用尖括号,何时使用双引号?用尖括号时,预处理程序在系统指定的文件夹中寻找文件;用双引号时,预处理程序首先在当前文件所在的文件目录中寻找文件,若找不到再到系统指定的文件夹中查找。 6. 如果程序顺利地通过编译、连接,但是程序运行时结果有错误,最好的调试手段是什么?最好的调试手段是设置断点,并让程序运行到该断点,然后在Debug窗口观察各变量的值,从中发现错误。 第二章 一、 选择题 1.下列选项中可以作为C/C++的合法整型常量的是( )。B A.1011B B.047 C.x23 D.20H 2.下列不合法的常量是( )。C A.2.7 B.1.0E+3 C.3.5E-3.0 D.3.4e-5 3.下列常量中不是字符型常量的是( )。D A. '\\x44' B.'\' C.'\\\\' D.\"m\" 4.下列选项中合法的变量名为( )。C A.#define B.float C.a12_3 D.sqrt(x) 5.下列不正确的变量定义方法是( )。D A.int a,&b=a; B.float a,*b=&a; C.int a(4),b(0); D.int a=b=5; 6.下列运算符优先级按由高到低的顺序排列正确的是( )。C A.*=、&&、!=、% B.*=、%、&&、!= C. %、!= 、&&、*= D.&&、!=、%、= 7.已知x、y为整型,z为实型,ch为字符型,下列表达式中合法的是( )。C A.z=(y+x)++ B.x+y=z C.y=ch+x D.y=z%x 2 / 51 8.若有定义\"int x;\",则经过表达式\"x=(float)7/3\"运算后,x的值为( )。C A.0 B.2.3 C.2 D.1 9.若有定义\"int x=13,y=5;\",则表达式\"x++,y+=2,x/y\"的值为( )。B 10.设整型变量m、n、a、b、c、d均为数值1,表达式(m=a>b)&&(n=c>d)运算后,m、n的值分别是( )。B A.0,0 B.0,1 C.1,0 D.1,1 二、把下列数学表达式写成C/C++表达式。 1.x+y≠a+b : (x+y)!=(a+b). 2.(ln10+xy)3 :pow(log(10)+x*y),3) 3. sin():sin(w*u)/(cos(45*180/3.14)+3*pow(x,y)) ycos453x4.e3(:exp(3)+sqrt(2*x+3*y) 2x3y)5.x-y6. xy:fabs(x-y)+(x+y)/(3*x) 3x1:1/(1/r1+1/r2+1/r3) 111r1r2r3 三、根据下列条件写一个C/C++表达式。 1.a和b中有一个大于d:a>d||b>d 2.将x、y中较大的值送给z:z=x>y?x : y 3.将直角坐标系中点(x,y)表示在第3象限内:x<0&&y<0 4.3个数据x、y、z能组成三角形:x+y>z||y+z>z||x+z>y 5.将含有3位小数的实型变量x的值,四舍五入到百分位:(int)(x*100+0.5)/100. 6.d是不大于100的偶数:d>0&&d<=100&&d%2==0 7.x、y中至少有一个是5的倍数:x%5==0||y%5==0 8.对n(>0)个人进行分班,每班k(>0)个人,最后不足k人也编一个班,问要编几个班:n%k==0?n/k : n/k+1 四、编程题: 1 编程序求半径为r、高为h的圆柱体的体积。 #include \"iostream.h\" void main() {float r,h,v; cin>>r>>h; v=3.1416*r*r*h; cout< 3 / 51 void main() { float a,b,c,ave,min; cin>>a>>b>>c; ave=(a+b+c)/3; min=(amin=(c char c1='1',c2='2'; int x; x=10*(c1-'0')+c2-'0'; cout< int c1,c2,c3; cin>>x; c1=x/100; c2=x/10%10; c3=x%10; x=100*c3+10*c2+c1; cout< #include \"iostream.h\" void main() {int year,x; cin>>year; x=year%400==0||year%4==0&&year%100!=0; x!=0?cout< #include \"iostream.h\" void main() {int year; 4 / 51 char x; cin>>year; x=(year%400==0||year%4==0&&year%100!=0)?'y': 'n'; cout< #include \"iostream.h\" #include \"math.h\" void main() {double x,y; cin>>x; y=log(x*x+3)/log(10)+3.14/2*cos(40*3.14/180); cout< 1.为了避免嵌套的if else 语句的二义性,C/C++语言规定else总是与( )组成配对关系。C A. 缩排位置相同的if B.在其之前未配对的if C. 在其之前未配对的最近的if D.同一行上的if 1,x02.设有函数关系为y0,x0,下面( )选项不能正确表示上述关系。D 1,x0A. if(x<=0) B. y=1; if(x<0)y=-1; if(x<=0) else y=0; if(x<0)y=-1; else y=1; else y=0; C.y=-1; D. y=-1; if(x>=0) if(x!=0) if(x==0)y=0; if(x>0)y=1; else y=1; else y=0; 3.若有变量定义“int a=7;”,则下列语句组对应的输出结果是( )。D(该答案后还应附“其他值”) switch(a%5) {case 0:cout<default: cout<<”其他值”; } A.其他值 B.5 C. 7 D.7 5其他值 5 / 51 4.以下程序段中循环体语句“k++”执行的次数为( )。C for(k=0,m=4;m;m-=2) for(n=1;n<4;n++) k++; A. 16 B.12 C.6 D.8 5.执行下面程序段后,变量k的值为( )。B for(k=0,m=1;m<4;m++) { for(n=1;n<5;n++) if(m*n%3==0)continue; k++; } A. 1 B.3 C.6 D.12 6.下面叙述中正确的是( )。C A.for循环只能用于循环次数已经确定的情况 B.for循环同do-while语句一样,先执行循环体再判断 C.不管哪种形式的循环语句,都可以从循环体内转到循环体外 D.for循环体内不可以出现while语句 7.下面语句中不是死循环的是( ).A A. int i=100; B. int i,sum(0); while(1) for(i=1;;i++)sum++; { i=i%100+1; if(i==20)break; } C. int k=0; D. int s=3379 do{ while(s++%2+3%2)s++ ++k; }while(k>=0); 8.若输入字符串“ABC”,下面程序段的输出为( )。C char c; while(cin>>c,c!=’\\n’) cou< cin>>m>>n; if(m>0&&n>0)break; } 功能:输入两个正整数给m和n。 6 / 51 (2)若有变量定于“int count=0,m=1;”,试写出下列语句组对应的输出结果。 do { if(m%5)continue; count++; while(++m<=100); } 结果:20 (3)#include”iostream.h” void main() { int m,n(4),k; long int t,s=0; for(m=1;m<=n;m++) { for(t=1,k=1;k<=m;k++) t*=m; s+=t ; } cout<<”s=”< char c; while(cin>>c,c!=’.’) { if(c>=’a’&&c<’z’) c+=1; if(c==’z’)c=’a’; cout< (5) #include”iostream.h” #include”iomanip.h” void main() { int i,j; for(i=4;i>=1;i--) { 7 / 51 cout< 三、程序填空题: (1)下面的程序是检查输入的算术表达式中括号是否配对,并显示相应的结果。本程序边输入,边统计,以输入‘?’作为表达式输入结束,然后显示结果。 #include”iostream.h” void main() { int count(0); char c; cout<<”请输入表达式,以输入?表示结束”< if(c==’(‘) count++; else if( ) count--; } if( ) cout<<”左右括号配对”< (2) 用辗转相减法求两个正整数m和n的最大公约数。 #include”iostream.h” void main() { int m,n; ; while(m-n!=0) 8 / 51 if(m>n) ; else ; cout<<”gcd(m,n)=”< (3)求100的阶乘的末尾包含多少个0?程序通过找出1-100之间的所有整数中包含5这个因子的个数来求解。如100=5*5*4含5的因子个数为2,在求阶乘过程中会在末尾产生2个0。 #include \"iostream.h\" void main() { int m,n,k=0; for(m=5;m<100;) { ; while(n%5==0) { k++; ; } ; } cout<<”100!include”< 四、编程题: 1.编一程序,实现下列分段函数的求值: |x|,x52 y3x2x1,5x20 x/5,x20#include \"iostream.h\" #include \"math.h\" void main() {float x,y; cout<<\"input x:\"< y=fabs(x); 9 / 51 else if(x<20) y=3*x*x-2*x+1; else y=x/5; cout<<\"x=\"< 编一程序,输入工资数,求纳税款和实得工资数。 #include \"iostream.h\" void main() { float s,p,t,w; cout<<\"input s:\"< switch(int(s)/1000) {case 0:p=0;break; case 1:p=0.05;break; case 2:p=0.08;break; case 3: case 4:p=0.1;break; default:p=0.15;break; } t=s*p; w=s-t; cout<<\"纳税款=\"< for(m=100;m<1000;m++) {if(m%10+m/10%10+m/100==5) count++; } cout<<\"count=\"< 4.鸡兔共笼有30个头,90只脚,求鸡兔各有多少? #include \"iostream.h\" void main() {int m,n; for(m=0;m<=30;m++) for(n=0;n<=30;n++) if(m*2+n*4==90&&m+n==30) cout<<\"鸡:\"< -4 项小于10为止。 #include \"iostream.h\" void main() {double pi=1.0; int n,t=1; for(n=1;1.0/(2*n+1)>1e-6;n++) { t=(-1)*t; pi=pi+t/(2.0*n+1.0); } pi=4*pi; cout<<\"pi=\"< #include \"iostream.h\" void main() {float pi=0.0; int n,t=-1; for(n=1;1.0/n>1e-6;n=n+2) { t=(-1)*t; pi=pi+1.0*t/n; } pi=4*pi; cout<<\"pi=\"< for(x=1;x<=100;x++) for(y=1;y<=100;y++) 11 / 51 if(x*x+2*x==y*y*y) cout<<\"x=\"< #include \"iostream.h\" #include \"stdio.h\" void main() {char ch; while((ch=getchar())!='.') if(ch==' ') cout< 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< 二分法的步骤为等分区间[x1,x2]成[x1,x]和[x,x2],其中,若f(x)与f(x1)同号,则取[x,x2]作为新的区间,否则取[x1,x]作为新的区间, 依次类推,当新区间的长度或f(x)的绝对值小于eps时,x 就作为所求的实根。 #include \"iostream.h\" #include \"math.h\" void main() {float x1=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) 12 / 51 x1=x; else x2=x; }while(fabs(x2-x1)>eps); cout< 1.下列数组定义语句中,正确的是( )。C A.int a[3,4]; B.int n=3,m=4,int a[n][m]; C.int a[3][4]; D.int a(3)(4); 2.以下不能对二维数组a初始化的语句是( )。A A. int a[2][]={{1},{2}}; B.int a[2][3]={1,2,3,4,5,6}; C. int a[2][3]={1}; D.int a[2][3]={ {1},{2}}; 3.要使字符数组str中存放串”Lucky”并能正确处理,下列正确的定义语句是( )。C A.char str[]={‘L’,’u’,’c’,’k’,’y’} ; B. char str[5]={‘L’,’u’,’c’,’k’,’y’} ; C. char str[]=”Lucky”; D. char str [5]= ”Lucky” ; 4.已知有语句“int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}},*p=&a[0][0];”,则表达式(*p+2)+*(p+2)的值应为( )。D A.10 B.5 C. 6 D.8 5.已知有语句“int a[5]={1,3,5,7,9},*p=&a[3];”,则表达式p[-1]的值为( )。C A.表达形式不合法 B.值不确定 C.5 D.6 6.要比较两个字符数组a、b中字符串是否相等,下面正确的是( )。B A.a==b B.strcmp(a,b)==0 C. strcpy(a,b) D. strcmp(a,b)=0 7.下面正确的描述是( )。A A.gets函数可以输入包括空格的字符串 B.cin可以输入包含空格的字符串 C.使用gets函数不需要声明头文件:#include “stdio.h” D.使用gets函数必须需要声明头文件:#include “iostream.h” 8.已知如下变量的定义“char s[10],*p;”下列正确的语句是( )。B A.s=”asdfghj”; B.p=”asdfgh”; C.cin< char s[ ]=”1234567890”,*p; int i; for(p=s+5;*p!=’\\0’;p++)cout<<*p; p=s+4;i=0; while(i++<5)cout< 结果是:678904321 2.若分别输入4和8,则以下程序的输出结果各是什么? #include”iostream.h” 13 / 51 . void main() { char b[17]=”0123456789ABCDEF”; int i=0,h,n,c[10];long int m; cin>>m>>h; do { c[i++]=m%h; }while((m=m/h)!=0); for(--i;i>=0;--i) { n=c[i];cout<结果是:4 3. #include”iostream.h” void main() { int a[ ]={-2,3,0,-5,-4,6,9},*p=a,m,n; m=n=*p; for(p=a;p{if(*p>m)m=*p; if(*p 1.利用一维数组显示Fibonacci数列的前20项,每行显示5个数,每个数宽度5位。即:0,1,1,2,3,5,8,13,…,如图所示。 #include”iostream.h” #include\"iomanip.h\" void main() { int i; int x[20]= ; for(i=2;i<20;i++) ; 14 / 51 . for(i=0;i<20;i++) { if(i%5==0)cout< cout< 填空为:(1){0,1} (2)x[i]=x[i-1]+x[i-2] (3)setw(5)< int a[6],i,j; for(i=0;i<6;i++) { a[i]= ; for(j=0; ;j++) cout<<'*'; cout<< <填空为:(1)rand()%101 (2)j3.下列程序将数组a中的每4个相邻元素的平均值存放于数组b中。 #include\"iostream.h\" void main() { int a[10],m,n; float b[7]; for(m=0;m<10;m++)cin>>a[m]; for(m=0;m<7;m++) { ; 15 / 51 for(n=m; ;n++) b[m]=b[m]+a[n]; ; } for(m=0;m<7;m++) cout<填空为:(1)b[m]=0 (2)n char ch1[40],ch2[40],*s1=ch1,*s2=ch2; int r; ; ; while(*s1!='\\0'&& ) { s1++;s2++; } if(*s1=='\\0'&&*s2=='\\0') ; else r=*s1-*s2; cout<<\"The result is\"< 5.已知数组a和b都是按由小到大顺序排列的有序数组,试将其合并后放入数组c中,使c也按由小到大的顺序排列。 #define M 3 #define N 3 #include\"iostream.h\" void main() { int a[M],b[N],c[M+N],j,k,l; for(k=0;k 3533A4730675250103476639133B 111566641123695538115125101127132135 103134118109113130要求: (1)将两个矩阵相加结果放入C矩阵中。 (2)统计C矩阵中最大值和下标。 (3)以下三角形式显示A矩阵、上三角形式显示B矩阵。 (4)将A矩阵第1行与第3行对应元素交换位置,即第1行元素放到第3行;第3行元素放到第1行。 (5)求A矩阵两条对角线元素之和。 (1) #include \"stdlib.h\" #include \"iostream.h\" void main() {int a[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<<\"矩阵B的内容如下:\\n\"; for(i=0;i<4;i++) {for(j=0;j<4;j++) 17 / 51 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< {int a[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<<\"矩阵B的内容如下:\\n\"; for(i=0;i<4;i++) {for(j=0;j<4;j++) 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++) 18 / 51 {for(j=0;j<4;j++) cout< cout<<\"max=c[\"< {int a[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<<\"矩阵B的主对角线以上元素内容如下:\\n\"; for(i=0;i<4;i++) {for(j=i;j<4;j++) cout<#include \"stdlib.h\" #include \"iostream.h\" void main() 19 / 51 {int a[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<for(j=0;j<4;j++) {int t=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<#include \"stdlib.h\" #include \"iostream.h\" void main() {int a[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<for(i=0;i<4;i++) for(j=0;j<4;j++) if(i==j||i+j==3) s=s+a[i][j]; cout<<\"对角线元素之和为:\"< 20 / 51 #include \"stdio.h\" void main() {int i;char s1[50],s2[20]; gets(s1); for(i=0;s1[i]!='\\0';i++) s2[i]=s1[i]; s2[i]='\\0'; puts(s2); } 用字符指针实现 #include \"stdio.h\" void main() {int i;char s1[50],*p1=s1,*p2; p2=new char[20]; gets(p2); while(*p2!='\\0') *p1++=*p2++; *p1='\\0'; puts(s1); } 3.编一个程序,将一串字符逆序存放后输出。 #include \"stdio.h\" void main() { char s[80],ch; int i,len=0; gets(s); while(s[len]!='\\0')len++; for(i=0;i 21 / 51 cin>>ch; for(i=j=0;s[i]!='\\0';i++) if(s[i]!=ch) {s[j]=s[i];j++;} s[j]='\\0'; puts(s); } 第五章 一、选择题 1. 下列叙述错误的是____A_____。 A. 主函数中定义的变量在整个程序中都是有效的 B. 复合语句中定义的变量只在该复合语句中有效 C. 其它函数中定义的变量在主函数中不能使用 D. 形式参数是局部变量 2. 若函数的形参为一维数组,则下列说法中错误的是____B_____。 A. 形参数组可以不指定大小 B. 函数调用时对应的实参只能是数组名 C. 函数调用时,系统会为形参数组分配存储单元 D. 函数中对形参的修改将会影响对应的实参值 3. 若函数的类型和return语句中的表达式的类型不一致,则____D_____。 A. 编译时出错 B. 运行时出现不确定结果 C. 不会出错,且返回值的类型以return语句中表达式的类型为准 D. 不会出错,且返回值的类型以函数类型为准 4. 下面的函数定义正确的是_____D____。 A. float f(float x;float y) B. float f(float x,y) {return x*y;} {return x*y;} C. float f(x,y) D. float f( int x, int y) {int x,y ; return x*y;} {return x*y;} 5. 下面函数头的定义格式正确的是____C_____。 A. void sort(int a[n],int n) B. void sort(int a[ ][ ],int n) C. void sort(int a[ ],int n) D. void sort(int a[ ],n) 6. 下面4个程序中输出结果是125的有____*****(34)*****_____。 (1). #include \"iostream.h\" void cube(int x) { x=x*x*x; } void main() { int x=5;cube(x); cout< 22 / 51 void main() { int x=cube(5); cout< A. m(&5,&j) B. m(5,j) C. m(5,&j) D. m(&5,j) 8. 设函数的说明为: void fun(int a[],int m); ,若有定义:int a[10],n,x; 则下面调用该函数正确的是____A_____。 A. fun( a, n); B. x=fun( a, n); C. fun( a[10], 10); D. x=fun( a[], n); 9. 下面函数说明正确的是____C_____。 A. void f1(int a=3, int b, int c); B. void f2 int a, int b=3, int c); C. void f3(int a, int b, int c=3); D. void f4(int a, int b, int 3); 10. 有两个函数分别为: int f(int);和int f(int,int =100);,则下面说法正确的是_____B_____。 A. 不能在同一个程序中定义 B. 可以在同一个程序中定义,但不可以重载 C. 可以在同一个程序中定义并可重载 D. 以上说法均错误 11. 以下几种函数模板的定义正确的是____A_____。 A. template C. template 12. 下面程序的输出结果是____B_____。 #include \"iostream.h\" int m=10; void f(int m,int &n) { m=m+2; n=n+2;} void main() { int n=5; f(m,n); cout<<\"m=\"< 二、阅读程序,写出运行结果 1. #include\"iostream.h\" int isprime(int m) 23 / 51 { for(int i=2;m%i!=0;i++); return (i==m); } void main() { int m=3; while(isprime(m)) {cout<<\"yes\"< 2. #include\"iostream.h\" int count(double *a) { double *p=a; while(*p!=0)p++; return (p-a); } void main() { double a[ ]={1.0,2.0,8.0,3.0,0.0,4.0,7.0}; cout< #include\"iostream.h\" #include\"iomanip.h\" int sum(int a[],int n) { for(int s=0,int i=0;i int i,a[]={5,4,3,2,1}; cout< 24 / 51 25 16 9 2 1 4. #include\"iostream.h\" void f(int *p,int n) { for(int i=0;i int i,a[]={0,1,2,3,4},*p=&a[0]; f(p,2); for(i=0;i<5;i++)cout<结果: 21234 5. #include\"iostream.h\" int m=10; void a(int n) { n=15/n;m=m/2; } void main() { int n=3;a(n); cout<<\"m=\"< #include\"iostream.h\" int x=5; int p(int x) { int y=1;static int z=1; y++;z++; return x+y+z; } void main() { for(int i=1;i<3;i++)cout< 结果:911 三、程序填空 1. 该程序功能:对x=1,2,...,10,求f(x)x5xsin(x)的最大值。 #include \"iostream.h\" 25 / 51 2#include \"math.h\" float f(int x) { float y; y=x*x-5*x+sin(x); ____________; } void main() { int x; float max; _____________; for(x=2;x<=10;x++) ________________ ; cout< void backmove(char *x,int m) { int i,j,n;char w; n=strlen(x); for(j=0;j for(i=0;i char s[20]; gets(s); _______________; //假设平移3个字符 puts(s); } 填空:(1) *(x+n-1) (2) *(x+n-2-i) (3) *x (4) backmove(s,3) 3. 函数index()为查找字符串sub是否是字符串st的子串。若是,返回sub在st中首次出现的下标,否则返回-1。字符串sub和st非空。如sub: \" cd \",st: \"abcdefcd \",返回2。 #include \"iostream.h\" #include \"stdio.h\" void main() { 26 / 51 char s1[80],s2[80]; _______________; gets(s1);gets(s2); if(_______________) cout<<\"子串在字符串中首次出现的下标:\"< int index(char st[],char sub[]) { int i,j,k; for(i=0;st[i]!='\\0';i++) { for(j=i,k=0;sub[k]!= '\\0'&&st[j]==sub[k] ;____________); if(sub[k]== '\\0')________________; } return -1; } 填空:(1) int index(char [],char []) (2) index(s1,s2) (3) k++,j++ (4) return(i) 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| ________________ ; double x,y,y1; y1=f(x1); do{ x=0.5*(x1+x2); y=f(x); if(y1*y>0.0)____________________; else if (y1*y<0.0) ___________________; }while(fabs(y)>=eps______fabs(x2-x1)>=eps); return(x); } double f(double x) { return x*x*x-5*x*x+16*x-80; } void main()输出为:s=288 (4)若输入:“AB20dfz5”,则下列程序输出结果是什么? #include”iostream.h” void main() {void main() {2.不使用strcpy()函数,用字符指针的形式将一个字符串的内容复制到另一个字符数组中。 用字符数组实现