c程序的控制结构习题复习资料
- 格式:docx
- 大小:15.67 KB
- 文档页数:9
第三章基本控制结构程序设计习题一.基本概念与基础知识自测题3.1 程序阅读题3.1.3 请看如下程序段:if(num==1) cout<<”Alpha”;else if(num==2) cout<<”Bata”;else if(num==3) cout<<”Gamma”;else cout<<”Delta”;当num的值分别为1、2、3时,上面程序段的输出分别为(1)、(2)、(3)。
解答:检查条件语句与字符串输出概念:(1)Alpha(2)Bata(3)Gamma3.1.4 执行下面程序段后,m和k的值分别为(1)、(2)。
int m,k;for(k=1,m=0;k<=50;k++){if(m>=10) break;if(m%2==0){m+=5;continue;}m-=3;}(2)6二.编程与综合练习题3.2 编程求一元二次方程ax2+bx+c=0的根。
包括以下判断和结果:若输入a=0,给出提示;若∆>0,输出两个不等实根;若∆=0,输出两个相等实根;若∆<0,输出两个复数根。
解:本题以一个绝对值极小的数作为实数0。
#include <iostream.h>#include <math.h>#include <stdlib.h>void main(){double a,b,c;double delta,x1,x2;const double zero=1e-9; //定义一个很小的常数int sign;cout<<"输入三个系数a(a!=0), b, c:"<<endl;cin>>a>>b>>c;if(fabs(a)<zero){cout<<"二次项系数为0,方程根是-c/b";exit(0);}cout<<"a="<<a<<'\t'<<"b="<<b<<'\t'<<"c="<<c<<endl;delta=b*b-4*a*c;if(fabs(delta)<zero){//绝对值很小的数即被认为是0cout<<"方程有两个相同实根:";cout<<"x1=x2="<<-b/(2*a)<<endl;}else {if(delta>0)sign=1;elsesign=0;delta=sqrt(fabs(delta));x1=-b/(2*a);x2=delta/(2*a);if(sign){cout<<"方程有两个不同实根:";cout<<"x1="<<x1+x2<<'\t'<<"x2="<<x1-x2<<endl;}else{//delta<0cout<<"方程无实根!有两个不同复数根:";cout<<"x1="<<x1<<"+i"<<x2<<'\t'<<"x2="<<x1<<"-i"<<x2<<endl;}}}3.3 设计程序将输入的百分制成绩转换为五分制输出,90分以上为5分,80~89分为4分,70~79分为3分,60~69分为2分,60分以下为1分。
C语言第四章程序控制结构复习题选择结构程序设计复习题一.选择题1.已有定义语句:int x=3,y=4,z=5;,则值为0的表达式是:()a) x>y++ b) x<=++y c) x !=y+z>y-z d) y%z>=y-z 2.已有定义语句:int x=3,y=0,z=0;,则值为0的表达式是:()a) x&&y b) x||z c) x ||z+2&&y-z d) !((x<y)&& !z||y)<="" bdsfid="66" p=""></y)&&>3. x为奇数时值为“真”,x为偶数时值为“假”的表达式是:()a) !(x%2==1) b) x%2==0 c) x%2 d) !(x%2)4. 已有定义语句:int a=3,b=4;,则执行下述表达式后,变量b 的值是:()(a++==4)&&(b++==5)a) 3 b) 4 c) 5 d) 65. 已有定义语句:int a=4,b=6;,则执行下述表达式后,变量b 的值是:()(a++==4)||(b++==6)a) 4 b) 5 c) 6 d) 76. 已有定义语句:int x=6,y=4,z=5;,执行以下语句后,能正确表示x,y,z值的选项是:()if(xa) x=4,y=5,z=6b) x=4,y=6,z=6c) x=4,y=5,z=5d) x=5,y=6,z=47. 以下程序的运行结果是:()main(){ int i=0;if(i==0) printf(“**”);else printf(“$”); printf(“*\n”);}a) * b) $* c) ** d) ***8. 若变量a,b,c都为整型,且a=1、b=15、c=0,则表达式a==b>c的值是()a) 0 b) 非零c) “真”d) 19. a为0时,值为“真”的表达式是()a) a b) !(++a) c) a=0 d) a==010. 若有定义和语句:int a=4,b=5,c=0d; d=!a&&!b||!c;,则d 的值是()a) 0 b) 1 c) -1 d) 非0的数11. 以下选项不能正确判断a为偶数的表达式是()a) a%2==0 b) !a%2!=0c) a/2*2-a==0 d) !(a%2)12. 有以下程序:main(){ int a=2,b=1,c=2;if(b<a)< bdsfid="99" p=""></a)<>if(b<0) c=0,c++;b++;printf(“b=%d,c=%d\n”,b,c);}程序的输出结果是:()a) b=1,c=2 b) b=1,c=0c) b=2,c=2 d) b=1,c=113. 有以下程序:main(){ int n;scanf(“%d”,&n);if(n++<5) printf(“%X\n”,n);else printf(“%X\n”,n--);}若执行程序时从键盘上输入9,则输出结果是:()a) 11 b) A c) 9 d) 814. 有以下程序:main(){ int m=5;if(++m>5)if(m++>5) printf(“%d\n”,m+5); else printf(“%d\n”,m--);else printf(“%d\n”,--m);}程序的输出结果是:()a) 8 b) 5 c) 10 d) 1215. 有以下程序:main(){ float x=2.0,y;if(x<0.0) y=0.0;else if(x<5.0)&&(!x)) y=1.0/(x+2.0); else if(x<10.0) y=1.0/x;else y=1.0;printf(“%f\n”,y);}程序的输出结果是:()a) 0.000000 b) 0.250000c) 0.500000d) 1.00000016. 假设所有变量均已正确说明:a=b=c=0; x=35;if(!a) x--;else if(b) ; if(c) x=3;else x=4;以上程序段运行后,x的值是:()a) 34 b) 35 c) 4 d) 317. 当a=1、b=3、c=5、d=4时,执行下面一段程序:if(a<b)< bdsfid="147" p=""></b)<>if(celseif(a<c)< bdsfid="152" p=""></c)<>if(belse x=3;else x=6;else x=7;以上程序段运行后,x的值是:()a) 1 b) 2 c) 3 d) 618. 执行以下程序:main(){ int s,t,a,b;scanf(“%d,%d”,&a,&b);s=1;t=1;if(a>0) s=s+1;if(a>b) t=s+t;else if(a==b) t=5;else t=2*s;printf(“t=%d\n”,t);}要使输出结果为:t=4,给a和b输入的值应满足的条件是:()a) a>b b) a<b<a a>b</b19. 以下程序的输出结果是:()main(){ int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b ?(a>c ? a:c) : (b));}a) 5 b) 4 c) 6 d) 不确定20. 若有定义语句:int x=3,y=2,z=1; 则以下表达式的值是:()z*=(x>y ? ++x :y++)a) 0 b) 1 c) 4 d) 321. 有以下程序:main(){ int a=15,b=21,m=0;switch(a%3){ case 0: m++;break;case 1: m++;switch(b%2){ default: m++;case 0: m++;break;}}printf(“%d\n”,m);}程序的输出结果是:()a) 1 b) 2 c) 3 d) 422.以下while循环中,循环体执行的次数是:()k=1;while (--k) k=10;a) 10次b) 无限次c) 一次也不执行d) 1次23.有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=0;while (!x!=0) x++;a) 退出while循环后,x的值为0b) 退出while循环后,x的值为1c) while的控制表达式是非法的d) while循环执行无限次24. 有以下程序段,其中n为整型变量,执行后输出结果是:()while(n--) ; printf(“%d”,n) ;a) 2 b) 10 c) -1 d) 025. 有以下程序段,其中t为整型变量,以下选项中叙述正确的是:()t=1;while (-1){ t--;if(t) break;}a) 循环一次也不执行b) 循环执行一次c) 循环控制表达式(-1)不合法d) 循环执行2次26. 有以下程序段,其中x为整型变量,以下选项中叙述正确的是:()x=-1;do{;}while (x++);printf(“x=%d”,x);a) 该循环没有循环体,程序错误b) 输出x=1c) 输出x=0d) 输出x=-127. 有以下程序段,其中x,y为整型变量,程序输出结果是:()for(x=0,y=0;(x<=1)&&(y=1);x++,y--) ;printf(“x=%d,y=%d”,x,y);a) x=2,y=0 b) x=1,y=0c) x=1,y=1 d) x=0,y=028. 有以下程序:{ int x=0,y=0;while(x<5&&++y) y--,x++; printf(“%d,%d”,y,x);}程序的输出结果是:()a) 0,5 b) 1,5 c) 0,4 d) 1,429. 有以下程序:main(){ int num=0;do{ num++ ;printf(“%d\n”,num); } while(num<=2);}程序的输出结果是:()a) 1 b) 1c) 1 d) 12 2 23 3430. 有以下程序:main(){ int x=3;do{ printf(“%d”,x-=2); }while(!(--x));}程序的输出结果是:()a) 1 b) 3 0 c) 1 -2 d) 死循环31. 有以下程序:main(){ int y=10;do { y--; } while(--y);printf(“%d\n”,y--);}程序的输出结果是:()a) 1 b) -1 c) 8 d) 032. 有以下程序:main(){ int x=3,y;do{ y=--x;if( !y) printf(“x”) ;else printf(“y”) ;} while(x);}程序的输出结果是:()a) xyx b) yyx c) yxx d) yxy33. 有以下程序段,此处do-while循环的结束条件是:()int n=0,p;do {scanf(“%d”,&p);n++;} while (p!=12345&&n<3);a) p的值不等于12345并且n的值小于3b) p的值等于12345并且n的值大于等于3c) p的值不等于12345或者n的值小于3d) p的值等于12345或者n的值大于等于334. 有以下程序:main(){ int a,b,t;for(a=3,b=0 ;!a==b ;a--,b++)if(a>b) { t=a;a=b;b=t;}printf(“%d,%d\n”,a,b);程序的输出结果是:()a) 4,1 b) 1,4 c) 4,-1 d) -1,435. 有以下程序:main(){ int x=3,y=0;do{ while( !y) y=-x;} while(x--);printf(“%d,%d\n”,x,y);}程序的输出结果是:()a) -1,3 b) -1,-3c) 0,0 d) 1,-336. 有以下程序:main(){ int m,n;printf(“Enter m,n:”) ; scanf(“%d%d”,&m,&n); while(m!=n){while(m>n) m-=n;while(n>m) n-=m;}printf(“m=%d\n”,m);}程序的输出结果是:()a) m=3 b) m=2 c) m=1 d) m=037. 有以下程序:main(){ int i,s=1;for(i=1 ;i<=50 ;i++)if( !(i%5)&& !(i%3)) s+=i;printf(“%d\n”,s);程序的输出结果是:()a) 409 b) 277 c) 1 d) 9138. 有以下程序:main(){ int x=0,y=0,i;for(i=1 ; ;++i){ if(i%2==0) {x++ ;continue ;} if(i%5==0) {y++ ;break ;}}printf(“%d,%d”,x,y);}程序的输出结果是:()a) 2,1 b) 2,2 c) 2,5 d) 5,239. 有以下程序:main(){ int i=0,a=0;while(i<30){for(;;){if((i%10)==0) break;else i--;}i+=11; a+=i;}printf(“%d\n”,a);}程序的输出结果是:()a) 66 b) 63 c) 33 d) 3240. 有以下程序:main(){ int a,b;for(a=1,b=1 ;a<=100 ;a++){ if(b>=10) break;if(b%3==1){ b+=3; continue; }}printf(“%d\n”,a);}程序的输出结果是:()a) 101 b) 6 c) 5 d) 441. 有以下程序:main(){ int i=0;for(i+=3 ;i<=5 ;i=i+2)switch(i%5){ case 0: printf(“*”);case 1: printf(“#”); break;default: printf(“!”); break;case 2: printf(“&”);}}程序的输出结果是:()a) *# b) !& c) !*# d) *#*二.填空题1.设y是int型变量,请写出当y是奇数时值为1的关系表达式_ y%2 或y%2==0 或y%2!=0_.2. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是__ x>5||x<-5__.3. 若x为int类型,请以最简单的形式写出与!x等价的C语言表达式___ x==0__.4. 设x,y,z,t均为int型变量,则执行下述语句后,x的值是__4__,y的值是__3__,z的值是__4__,t的值是__1__。
一、判断题(每小题2分,共20分)1.switch结构case语句后的多个语句必须放在花括号中。
答案:F。
2.要在if选择结构体中包括多条语句,就要把这些语句放在花括号中。
复合语句可以放在程序中出现单个语句的任何地方。
答案:T3.空语句就是在正常语句出现的地方放一个分号(;),表示不采取任何操作。
答案:T4.do/while重复结构执行循环体之后再测试循环条件,因此,do/while结构至少执行循环体一次。
答案:T5. break语句在while、for和do/while结构中执行时,将使程序立即退出这些结构。
答案:T6.大多数程序中,每个case面的语句之后要包括一个break语句。
几个case可以不执行相同语句。
答案:F7.continue语句用于循环语句中,并不终止本层循环,而只是绕过本次循环。
答案:T8.如果表达式x>y为true或a<b为true,则表达式(x>y&&a<b)为true。
答案:F9.for重复结构处理计数器控制循环的所有细节。
for结构的一般格式如下: for(expression1, expression2, expression3)statement其中expression1初始化循环控制变量,expression2是循环条件,expression3递增控制变量。
答案:F10.goto语句只能从循环体内跳到循环体外,不能从循环体外跳到循环体内。
答案:T二、选择题(每题3分,共45分)1.若k为整型,以下while循环体中的语句执行( )。
k=2;while(k=0){cout<<k;k--;cout<<" ";}A.无限次B.0次C.1次D.2次答案:B2.在下列选项中,会构成死循环的是( )。
A. int i=100;B. for(;;);C. int k=10000;D. int s=36;答案:B3.为了避免在嵌套的条件语句if…else中产生二义性,C++规定else子句总是与()配对。
一,单选题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<<"*";}执行这个程序段输出字符*的个数是( )。
C程序设计复习资料(含答案)C程序设计复习要点第一章概述1.C程序的构成与结构特点2.C程序上机调试过程与流程第二章数据类型、运算量与表达式1.数据类型的种类(基本数据类型和构造数据类型)2.常量的数据类型及其表示(表示方法、存储字节数与表数范围)——整、实、字符、字符串和转义字符3.变量的命名、定义方法与赋初值4.各种表达式及其运算规则——优先级、结合性、类型自动转换与强制转换●算术运算符、表达式及其构造(注意“/”和“%”特殊性)●自增、自减运算符及其简单表达式运算●赋值运算符及其表达式(注意复合赋值运算符的运算方法)●逗号运算符及其表达式第三章流程控制1.赋值语句的一般形式、赋值过程及赋值规则(注意左右数据类型的一致或兼容)2.输入和输出函数的格式、功能及用法(只要求常用的格式控制符d, f, c, s),提醒注意:●格式输出中域宽和小数位数的控制●格式输入与输出中普通字符的原样输入和输出问题●熟悉并区别以下函数:putchar()、printf()、puts();getchar()、scanf()、gets()3.关系运算符及其表达式、逻辑运算符及其表达式和条件运算符及其表达式的运算规则(优先级、结合性)4.关系表达式与逻辑表达式的构造(根据已知条件写表达式)5.if语句的三种形式:if …语句、if …else …语句、if 语句的嵌套●if 语句的格式与用法:简单if、嵌套if、并列if●逻辑关系与执行过程●嵌套规则(重点掌握if …else …if …else …if …else)6.switch语句的格式与用法7.*熟练使用if和switch语句阅读和编写较为简单的选择结构程序8.三种循环语句:while() …、do …while()、for()的格式、执行过程及其用法●循环变量初始化、循环条件构造、循环体所要实现的任务和控制变量修改注意循环期间与结束时循环控制变量的取值问题9.结合例题理解和区别break与continue语句的作用及其用法10.本章涉及的主要算法:累加(计数)、累乘、递推、穷举、判素数、求最大公约与最小公倍等11.*熟练使用三种循环语句并结合以上算法阅读和编写较为简单的循环结构及其嵌套程序第四章复杂数据类型1.一维、二维数组的定义、初始化及其引用方法(数据输入、输出、存储与处理)2.字符数组的定义、初始化及其引用(字符串输入、输出、存储与处理)3.常用字符串处理函数:gets()、puts()、strlen()、strcmp()、strcpy()4.数组涉及的主要算法:排序、极值、逆序、回文和字符串的连接、复制、求长度等5.*熟练使用数组并结合以上算法阅读和编写较为简单的程序6.指针的概念:指针、指针变量、指针运算(*、&、++、--、+、-)7.变量、数组和字符串指针的定义、指向与引用(仅限于一维数组)8.了解指针数组与二级指针的概念和定义9.*能够阅读并理解使用指针进行数据处理的相关程序(极值、逆序、回文和字符串的连接、复制、求长度等)10.结构体与共用体的概念、定义与引用(仅限概念)第五章结构化程序设计与应用1.熟悉程序的三种基本结构:顺序、选择和循环2.*通过其中部分例题掌握选择、循环语句的使用以及循环和数组涉及的主要算法第六章函数与编译预处理1.掌握函数的定义、声明和调用方法及参数传递方式2.*结合相关例题掌握一般函数和递归函数的定义与使用3.熟悉局部变量与全局变量的定义及作用范围,了解各种静态与动态变量的定义、作用范围与生存期4.了解内部函数与外部函数的定义及调用规则5.掌握宏定义与宏展开(重点掌握带参数宏的定义与展开)6.了解文件包含的作用及其使用场合第七章文件1.了解文件的概念2.熟悉文件打开、关闭及各种与文件读写有关函数的格式与用法特别提醒:以上带*部分主要涉及程序阅读、程序填空和编写程序,其余部分主要以选择和概念填空题出现3ae bc C语言程序设计参考题型说明:★本题仅反映考试的题型,作为考前复习参考。
第4章控制结构习题一、选择题。
1.关于程序设计所要求的基本结构,以下选项中描述错误的是( )A)循环结构B)分支结构C)goto 跳转D)顺序结构正确答案: C解析:为了表示更复杂的处理逻辑,在Python程序中存在三种基本结构,它们分别是:顺序结构;分支结构;循环结构。
2.下面代码的输出结果是for s in “HelloWorld”:if s==“W”:continueprint(s,end="")A)HelloB)WorldC)HelloWorldD)Helloorld正确答案: D解析:Python通过保留字for实现“遍历循环”,for语句的循环执行次数是由遍历结构体中元素的个数确定的。
遍历循环可以理解为从要遍历的结构中逐一提取元素,并赋值给循环变量,对于所提取的每个元素执行一次循环体。
Python 提供了两个保留字:break和continue,用来辅助控制循环执行。
continue语句只结束本次循环,而不终止整个循环的执行。
3.关于Python循环结构,以下选项中描述错误的是()A)遍历循环中的遍历结构可以是字符串、文件、组合数据类型和range()函数等。
B)break用来跳出最内层for或者while循环,脱离该循环后程序从循环代码后继续执行C)每个continue语句只有能力跳出当前层次的循环D)Python通过for、while等保留字提供遍历循环和无限循环结构正确答案: C解析:continue用来结束当前当次循环,但不跳出当前循环;每个break语句只有能力跳出当前层次的循环。
4.以下程序的输出结果是:()for i in "CHINA":for k in range(2):print(i, end="")if i == 'N':breakA)CCHHIINNAAB)CCHHIIAAC)CCHHIAAD)CCHHIINAA正确答案: D解析:每个break语句只有能力跳出当前层次的循环。