一,单选题1. 有如下语句序列:int k=0;do{k+=5;cout<<'$';}while(k<19);while(k-->0)cout <<'*';执行上面的语句序列输出字符“$”和“*”的个数分别是()。
A 4和20B 5和20C 4和21D 5和21参考答案A2. 循环体被至少执行一次的循环语句为_______。
A whileB forC do ...whileD 多重循环参考答案C3. 有如下程序:int x=3;do{x-=2;cout<<x;} while(!(--x));执行这个程序的输出结果是()。
A 1B 3 0C 1-2D 死循环参考答案C4. 有如下程序段:int i=1;while(1){ i++;if (i%3==0) cout<<"*";}执行这个程序段输出字符*的个数是( )。
A 1B 2C 3D 4参考答案C5. 以下为死循环的程序段是()。
Afor ( int x=0; x<3; x-- )x+=2;Bint k = 0;do{ ++k; } while ( k>=0 );Cint a = 5;while ( a ){ a--; }Dint i = 3;for ( ; i; i-- );参考答案B6. C++语言的跳转语句中,对于break和continue说法正确的是__________。
A break语句只应用于循环体中B continue语句只应用于循环体中C break是无条件跳转语句,continue不是D break和continue的跳转范围不够明确,容易产生问题参考答案B7. 有如下程序段:int i=1;while(1){ i++;if (i%3==0) cout<<"*";}执行这个程序段输出字符*的个数是( )。
A 1B 2C 3D 4参考答案C8. 下列说法不正确的是:____________。
A for,while 和do-while循环体中的语句可以是空语句。
B 使用while 和do-while循环时,循环变量初始化的操作应在循环语句之前完成。
C for和do-while循环都是先执行循环体语句,后判断循环条件表达式。
D while循环是先判断循环条件表达式,后执行循环体语句。
参考答案C9. while(!x)其中表达式!x等价于__________。
A x=1B x!=0C x==0D x!=1参考答案C10. 以下程序段的结果是()。
int m=0, n=0;if ( m++ && n++ )m++;cout << m << "," << n << endl;A 0,0B 1,1C 1,0D 2,1参考答案C11. 若有定义int i=1;则执行完循环while(i++<5);以后i的值为__________。
A 6B 5C 4D 7参考答案A12. 有以下函数:以下程序段中不能根据x值正确计算出y值的是()。
Aif (x>0) y=1;else if (x==0) y=0;else y= -1;By=0;if (x>0) y=1;else if (x<0) y= -1;Cy=0;if (x>=0)if (x>0) y=1;else y= -1;Dif (x>=0)if (x>0) y=1;else y=0;else y= -1;参考答案C二.填空题1. 有如下循环语句:for(int i=50; i>20; i-=2) cout<<i<<',';运行时循环体的执行次数是__1__次。
参考答案1:152. 符合结构化原则的三种基本控制结构是:选择结构、循环结构和__1__。
参考答案1:顺序结构3. 一个数如果等于它的因子(包括1)之和,则称该数为完数,如:6=1+2+3; 编程求2到100之间的完数。
填写空缺部分。
#include <iostream>using namespace std;int main( ){int m,i,s=0;for(m=2;m<100;m++){__1__ ;i=1;while( __2__ ){if(m%i==0) s=s+i;i++;}if( __3__)cout<<" "<<s<<" \t";}cout<<endl;return 0;}参考答案1:s=02:i<m 或m>i3:s==m 或m==s4. 求1000内所有的完数。
所谓“完数”是指与其因子之和相等的数(除本身之外)。
例如:6=1+2+3,而1、2和3都是6的因子。
要求以如下形式输出:6——>1,2,3。
#include <iostream>using namespace std;int main(){int i,j,sum;for(i=2;i<=1000;i++){for(sum=1,j=2;j<=i/2;j++) //求i的因子和if(i%j==0)sum+=j;if( __1__ ) //判断i是否为完数{cout<<i<<"-->1";for(j=2;j<=i/2;j++) //按指定格式输出完数if(i%j==0)cout<<','<< __2__ ;cout<<endl;}}return 0;}参考答案1:sum==i 或i==sum2:j5. Fibonacci数列的头两个数分别是0和1,从第3个数开始,每个数等于前两个数的和。
求Fibonacci数列的前20个数。
要求每行输出5个数。
#include <stdio.hstream>#include <iomanip>using namespace std;int main( ){int f, f1, f2, i;cout<<"Fibonacci数列:\n";f1=0; f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3; i<=20; i++){f=__1__;cout<< f;f1=f2; f2=__2__ ;}cout<<endl;return 0;}参考答案1:f1+f2 或f2+f12:f6. 一个小球从100米高处落下,每次落地后反弹回原高度的一半,再落下。
求它在第10次落地时共经过多少米?第10次反弹多高?#include <iostream>#include <iomanip>using namespace std;int main(){float s=100.0,h=s/2;for(int i=2;__1__ ; i++){s+=h*2;h=__2__ ;}cout<<"第10次落地时,共经过"<<s<<"米;反弹高度是"<<h<<"米"<<endl;return 0;}参考答案1:i<=10 或10>=i 或i<11 或11>i2:h/2 或h/2;7. 根据x的值,计算分段函数y的值。
y的计算公式为#include <iostream>#include <cmath>using namespace std;int main(){double x,y;cout<<"请输入x:";cin>>x;if(x<0)y=fabs(x);else if(__1__ )y=exp(x)*sin(x);else if(x<20)y=pow(x,3);elsey=__2__(3+2*x);cout<<"y="<<y<<endl;return 0;}参考答案1:x<10 或10>x2:log(x)*8. 输入一个正整数,求该数的阶乘。
#include <iostream>using namespace std;int main(){int i,n;long int fact=1;cout<<"请输入一个正整数:";__1__;for(i=2;i<=n;i++) __2__*=i;cout<<n<<"!="<<fact<<endl;return 0;}参考答案1:cin>>n2:fact9. 显示输出3~100之间的所有素数。
#include <iostream>#include <cmath>using namespace std;int main(){cout<<"3~100之间的素数是:"<<endl;for(int m=3;m<100;m+=2){int k=int(sqrt(m));for(int i=2;i<=k;i++)if(m%i==0)__1__ ;if(__2__ )cout<<m<<“ “;}cout<<endl;return 0;}参考答案1:break2:k<i 或i>k10. #include <iostream.h>void main(){char k='c',h='d';int i=1,j=2;k+= i++;h-=--j;cout<<k<<h<<i<<j<<endl;}程序的运行结果:__1__。
参考答案1:dc2111.#include <iostream.h>void main(){int x,y,n;x=y=1; n=--x&&++y;cout<<n<<" "<<x<<" "<<y<<endl;n=(--x)||(++y);cout<<n<<" "<<x<<" "<<y<<endl;}程序运行结果第一行为:__1__。