




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
11 1C+概述例题5:C+的合法注释是( )。A/*This is a C program/* B/ This is a C programC “This is a C program” D/This is a C program/答案:B分析:单行注释常采用“/”,多行注释采用“/*”和“*/”。单行注释也可采用“/*”和“*/”,但答案A书写格式错误,不能选答案A。注释和字符串的区别,双引号内的字符为字符串。不能选答案C。单行注释不需要结束符“/”,如果有,只能作为注释的一部分存在。也不能选答案D。例题6:下面标识符中正确的是( )。A_abc B3ab C int D+ab答案:A分析:C+的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。答案B第一个字符为数字不能选B。标识符不能为关键字,不能选答案C。答案D第一个字符不是字母或下划线,也不能选。例题7:分析下列该程序的错误。输入数据格式为:2,5(回车)。 main() int sum=0; int a,b; coutab; sum=a+b; coutsumendl;本程序把输入的两个数据进行累加并输出结果。输入数据格式为:2 5。正确程序:#include / 编译预处理命令,以“#”开头。把系统已经定义好的输入/输出功能包含到本程序中。using namespace std;/使用std 名字空间int main() / 程序的主函数 / 主函数开始int sum=0; / 定义一个变量sum存放累加结果,并且赋初值为0 int a,b; / 定义两个变量,保存输入值coutab; / 使用基本输入设备cin输入两个变量值 sum=a+b; / 进行累加,结果保存到sum变量coutsum”要求输入的多个数据用空格分隔。补充习题2.下列标识符中,( B )是合法的。(identifier 能唯一标识一个单元或函数的名字)Agoto BStudent C 123 Dkld4.C+语言中语句的结束符是( )。A , B ; C 。 D 、6.写一个程序输出 Hello,C+!。7.编译下列程序,改正错误信息,分析输出结果。#include using namespace std;int main() int x,y;coutinput x:x;y=x*x;couty=”y”n; - return 0;10.给出下列程序的运行结果。#include using namespace std;int main()int a(2),b(3),c(4); /参考变量的初始化 等价于 int a=2,coutc1=cendl;c=a+b;coutc2=ca+&cd)?+d:a=y&chB&!y)的值是( )。A0 B语法错 C1 D“假”分析:根据C+语言中运算符优先级的高低,“!”运算符最高,关系运算符高于逻辑运算符。则上面的表达式转换为:1&1&1,结果为1。答案:C。2例题10:设所有变量均为整型,则表达式(e=2,f=5,e+,f+,e+f)的值为_。答案:9分析:逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。本题的答案为9。例题11:已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=a+8-4的值为_。答案:e分析:C+语言中,对字符数据进行算术运算,实际上就是对字符的ASCII码进行运算。以字符形式输出时,再将ASCII码转换为相应的字符输出。本题表达式为ch=97+8-4=101,101相应的ASCII为字符e。4.选择题(1)下列数据类型不是C+语言基本数据类型的是( )。 A.字符型 B.整型 C.实型 D.数组答案:D(3)下列字符列中,可作为C+语言程序自定义标识符是( )。 A.switch B.file C.break D.do 答案:B (5) 下列字符列中,可以作为“字符串常量”的是( )。 A. ABC B.xyz C.uvw D. a 答案:B (6) 设变量m,n,a,b,c,d均为0,执行(m = a=b)|(n=c=d)后,m,n的值是( )。 A.0,0 B. 0,1 C. 1,0 D. 1,1答案:C(8) 在C+语言中,自定义的标识符( )。A.能使用关键字并且不区分大小写 B.不能使用关键字并且不区分大小写C.能使用关键字并且区分大小写 D.不能使用关键字并且区分大小写答案:D(9)设有代码“int a = 5;”,则执行了语句“a + = a - = a*a;”后,变量a的值是( )。A.3 B. 0 C. -40 D. 12答案:C(10)设a为5,执行下列代码后,b的值不为2的是( )。A. b = a/2 B. b = 6-(-a) C. b = a%2 D. b = a 3 ? 3: 2答案:C 补充习题1. 1. 选择题(1)C+语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符( C )。 A必须为字母 B必须为下划线 C必须为字母或下划线 D可以是字母、数字和下划线中任一中字符(2)下面正确的字符常量是( C )。/ 字符常量的标志:一对单引号 A“C” B CW D(5)关于逻辑运算符的说法正确的是( CD )。 注意逻辑运算符&与|的特别,可能会使得右边不需求解 A它们都是双目运算符,优先级相同B语句“int a=0,c=1,b;b=a&c+;” 执行后,c 的值为2C语句“int a=0,c=1,b;b=a|c+;” 执行后,c 的值为2D语句“int a=1,c=1,b;b=a&c+;” 执行后,c 的值为2(8)有如下程序段:注意x的类型为int int a=14,b=15,x; char c=A; x=(a&b)&(cb)&(n=cd)后n的值为( )。 A1 B2 C3 D4(18)用C+的语言表达式表示 |x3+log10x|的正确是( )。 Afabs(x*3+log(x) Babs(pow(x,3)+log(x)Cfabs(pow(x,3.0)+log(x) Dabs(pow(x,3.0)+log(x)(19)设int k=7,x=12;则能使值为3的表达式是_。 Ax%=(k%=5) Bx%=(k-k%5)Cx%=k-k%5 D(x%=k)-(k%=5)(21)设有语句int x=3,y=4,z=5;则下面表达式中值为0的是( D )。 Ax&y Bx=y Cx|y+z&y-z D!(xy)& !z | | 1)(23)判断char型变量n是否为小写字母的正确表达式为( D )。 Aa= n =a)&(n=n)| |(z=a)&(ny); Bif(x=y)&(x!=0) x+=y;Cif(x!=y)cinx;else ciny;Dif(xy) x+;y+;答案:B 分析:if语句后面的表达式必须放在括号内“()”,且不能使用赋之值运算符。在if和else后面用花括号“”括起来的多个语句成为了一个复合语句。例题3:下面程序的输出结果是( )。 #include using namespace std;int main() int a=6,b=6; if(a5)a-=1;b+=1; elsea+=1;b-=1; cout”a=”aendl; cout”b=”b;A5 Ba=5 Ca=5 D编译时出错 7 b=7 b=6答案:D 分析:在ifelse语句的中间应为单条语句或复合语句,不能为多条语句。例题4:对while、dowhile循环结构,下面说法正确的是( )。 A只是表达形式不同Bdowhile结构中的语句至少执行一次Cwhile结构中的语句至少执行一次D条件成立时,它们有可能一次也不执行答案:B分析:要知道while、dowhile两种循环结构的区别在于:while循环是先判断条件是否成立,成立时才执行,而dowhile是先执行再判断,它至少执行一次。例题5:以下不正确的是( )。 A语句for(i=0;i+)表示无限循环 Bfor(;)表示无限循环Cfor()也表示无限循环 Dwhile(1)表示无限循环答案:C分析:for循环语句中的表达式可以省略,但分号不可省略。例题6:下面循环体的执行次数为( )。#include using namespace std;int main() int a,b; for(a=0,b=5;a=b+1;a+=2,b-) couta=b.例题7:对中断语句的说法下面不正确的是( )。 A用户可以指定中断的位置 B用户可以指定转移的位置Cbreak语句可以跳出本循环 Dcontinue语句可以结束本次循环答案:B 分析:不论break语句还是continue语句转移的位置是根据程序默认的,不用人为的设置。例题8:下列函数的功能是( )。#include using namespace std;int main() char a; int i;cina;for(i=1;i=a)&(a=z) a=a-i; couta; A把a中的小写字母变成大写字母 B把a中的小写字母变成大写字母C把a中的所有字母变成小写字母 D把a中的字母变成它前面i个的字母答案:D分析:本题要求判断程序的功能,可以用列举法判断其gon功能,例设a=f,则程序结果为edcba,本程序仅对在小写字母az之间的字母起作用。1 2 填空题例题9:下面的程序实现输出x,y,z三个数中的最大值,请填入正确的内容。#include using namespace std;int main() int x=5,y=8,z=9, u, v; if( (1) ) u=x;else u=y;if( (2) ) v=u;else v=z;cout”v=”vy (2) uz分析:本程序首先找出x和y中较大的数放入变量u中,再将u 与z 做比较,其中较大者放入变量v中,为三个数中的最大值。例题10:有以下程序段:int n=0;while(n=1)n+;while循环执行次数是_。答案:为无限次。分析:要注意”=”和”= =”的区别,”=”是赋值运算符,”= =”是关系运算符“等于”。这里while(n=1)永远为1,为真值,则答案为无限次。例题11:计算120之间偶数之和,请填充:#include using namespace std;int main()int a,b,i;a=0;b=0;for(i=0; (1) ;i+=2) a+=i; (2) ; (3) ; cout”偶数之和为:”aendl;答案:(1)i=20或i21 (2)b+=i+1 (3) 例题12:下面程序运行结束后,k的值为_。#include using namespace std;int main()int i,j,k;for(i=0,j=10;i=j;i+,j-) k=i+j;countk;答案:10。分析:在程序中每循环一次,变量i+1,而变量j-1,i+j之和保持不变为10,直到循环结束。例题13:下面程序是输出100以内能被7整除且个位数是4的所有整数,请填空:#include using namespace std;int main()int i,j;for(i=0; (1) ;i+) j=i*10+4; if( (2) ) continue; (3) coutjendl; 答案:(1)i=9或i10 (2)j%7!=0 (3)else分析:由题目可知判断100以内的数,故i变量的终值应为:i=9或i10。要满足不被7整除的条件为: j%7!=0;反之不满足该条件的则要输出。2 4 看程序写结果例题16:#include using namespace std;int main() int a,b,c,d,x;a=c=0; b=1;d=20; if(a) d=d-10; else if(! b)if(! c) ;else x=25; cout”d=”dendl; cout”x=”xendl;运行结果:d=20x=25分析:这是一个if语句的嵌套结构,判断三个if语句的条件表达式都“假”,则执行最后一个else后面的语句“x=25”。例题17#include using namespace std;int main() int x=6,y=8; if(x+6) cout+y6)cout- -yendl; elsecouty+endl; 运行结果:7分析:程序在判断第一个条件if(x+6)时,由于此时x的值为6所以不成立,故不做语句cout+y6),因x值为7,条件成立,故执行语句cout- -yendl;此时y值为8,执行- -y,则输出7。例题18:#include using namespace std;int main() int a; couta; switch(a %2) case 0: cout”a是偶数”endl; default: cout”a是奇数”endl; 如果输入数为6,则输出结果为什么?运行结果:a 是偶数a是奇数 分析:本题主要是要掌握多分支语句switch语句和break语句的应用。当符合条件的分支执行完毕后,如果没有遇到break语句,则继续执行下面的分支语句,而不管条件是否符合,直到遇到break语句或switch语句结束。例题19:写出下列程序运行结果:#include using namespace std;int main() int i,j,m=0,n=0;for(i=0;i2;i+) for(j=0;j=i) m=1;n+;coutmendl; cout=i) m=1;n+;,由于内外循环变量的变化,该语句并不被二重循环所控制,它仅执行了一次,即不论循环多少次m、n的值总为1。例题20:写出下列程序运行结果:#include using namespace std;int main() int a,b; for(a=1,b=1;a=10)break; if(b%3= =1) b+=3;continue; coutaendl; coutb; 运行结果:410分析:本题是一个单循环语句,在循环体中有break和continue语句,当变量b=10时,循环结束,输出相应的变量a、b的值。例题21:写出下列程序运行结果:#include using namespace std;int main() int y, a; y=2;a=-1; while(y-!=-1) do a*=y; a+; while(y-); couta= a y= y;运行结果:a=1 y=-2分析:y-返回2,y1,whi1e条件为真,进入do-whilee循环;a*=y之后,a=1,a+之后,a=2;y-返问1,,y=0;再执行一 次do-while循环,a*=y之后,a=0,a+之后,a=1,y-返回0,y=-1,退出do-while循环;(y-!=-1)为假,且y-2,退出外层的while循环。这时a1,y-2。3 5 编写程序例题23:计算1至70中是7的倍数的数值之和。分析:采用单循环语句结构,在循环内判断数值是否能被7整除,满足条件的值累加到求和变量sum中。程序为:#include using namespace std;int main()int i, sum=0;for(i=1;i=70;i+) if (i % 7) sum += i ;coutsumendl;例题24:求下面分数序列的前13项之和。2/1,3/2,5/3,8/5,13/8,21/13,分析:采用循环结构来实现累加,循环变量表示当前的数列项数,在循环体内计算数列的第i项的值,以及前i项的累加值。数列的规律为:从第2项开始,每一项的分母是前一项的分子,分子是前一项的分子和分母之和。程序如下:(1)用for语句实现:#include using namespace std;int main()float a,b,t,sum;int i;for(i=1;i=13;i+) a=a+b; b=a-b; t=a/b; sum+=t;cout”sum=”sumendl;(2)用while语句实现:#include using namespace std;int main()float a,b,t,sum; int i;a=2;b=1;i=2;t=a/b;sum=t;while(i=13) a=a+b; b=a-b; t=a/b; sum+=t; i+;cout”sum=”sumendl;(3)用do-while语句实现:#include using namespace std;int main() float a,b,t,sum;int i=1;a=b =1;sum=0;do a=a+b; b=a-b; t=a/b; sum+=t;while(+i=13);cout”sum=”sumendl;例题25:要用0至9之间不同的三个数构成一个三位数,编写程序统计出共有多少种方法。分析:题目要求构成的是一个三位数,可用三重循环中的三个循环变量分别表示个、十、百位,在循环中利用条件语句判断满足三个数不等的条件,并用一个独立变量加以统计。程序如下:#include using namespace std;int main() int i,j,k,count=0; for(i=1;i=9;i+) for(j=0;j=9;j+) if(i= =j) continue; elsefor(k=0;k=9;k+) if(k!=i & k!=j)count+; coutcountendl;3.3 习题分析与解答(2) int k=10;while(k=0) k=k-1;则下面描述正确的是( )。Awhile循环执行10次 B循环是无限循环C循环体语句一次也不执行 D循环体语句执行一次答案:C(3)int x=0,s=0;while(!x!=0) s+=+x;couts;则( )。A运行程序段后输出0 B运行程序段后输出1C程序段中的控制表达式是非法的 D程序段执行无限次答案:B(4) int x=0,y=0;while(x15) y+,x+=+y;couty”,”x;则运行结果为( )。A20,7 B6,12 C20,8 D8,20答案:D(5) int a=1,b=2,c=2;while(abc) t=a;a=b;b=t;c-;couta”,”b”,”c;运行结果为( )。A1,2,0 B2,1,0 C1,2,1 D2,1,1答案A(6)int x=-1;do x=x*x;while(!x);下列说法正确的是( )。A是死循环 B循环执行两次C循环执行一次 D有语法错误答案:C(7)以下能正确计算1*2*3*10的程序段是( )。Ado i=1;s=1; Bdo i=1;s=0;s=s*i; i+; s=s*i;i+; while(i=10); while(i=10);C i=1;s=1; Di=1;s=0; do s=s*i; dos=s*i;i+; i+;while(i=10); while(i=10);答案:C(8)以下描述正确的是( )。A由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句Bdo-while循环由do开始,用while结束,在while(表达式)后面不能写分号C在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作Ddo-while循环中,根据情况可以省略while答案:C(9)C+语言中while和do-while循环的主要区别是( )。Ado-while的循环体至少无条件执行一次Bwhile的循环控制条件比do-while的循环控制条件严格Cdo-while允许从外部转到循环体内Ddo-while的循环体不能是复合语句答案:A(10)下面有关for循环的正确描述是( )。Afor循环只能用于循环次数已经确定的情况Bfor循环是先执行循环体语句,后判断表达式C在for循环中,不能用break语句跳出循环体Dfor循环的循环体语句中,可以包含多条语句,但必须用大括号括起来答案:D(11)对for(表达式1; ;表达式3)可理解为( )。Afor(表达式1;0;表达式3) Bfor(表达式1;1;表达式3)Cfor(表达式1;表达式1;表达式3) Dfor(表达式1;表达式3;表达式3)答案:B(13)下面程序段的运行结果为( )。for(y=1;y10;) y=(x=3*y,x+1),x-1);cout“x=”x”y=”+y;x=I+) I=x; Bfor( ; ;x+=I);Cwhile(1)x+; Dfor(I=10; ;I-) sum+=I;答案:A(15)下面程序的运行结果是( )。#includeviod main( )int i,b,k=0; for(i=1;i=0) k+; coutk”,”b; A3,-1 B8,-1 C3,0 D8,-2答案:D(16)以下正确的描述是( )。Acontinue语句的作用是结束整个循环的执行B只能在循环体内和switch语句体内使用break语句C在循坏体内使用break语句或continue语句的作用相同D从多层循环嵌套中退出,只能使用goto语句答案:B(17)下面程序段( )。for(t=1;tx; if(x0) continue; coutt;A当x=0时什么也不输出Ccout永远也不执行 D最多允许输出100个非负整数答案:D(18)下面程序段( )。x=3;do y=x-; if(!y) cout”x”; continue;cout”#”; while(1=x=2);A将输出# B将输出#*C是死循环 D含有不合法的控制表达式答案:C(19)下面程序的运行结果是( )。#include using namespace std;int main()int a,b; for(a=1,b=1;a=20) break; if(b%3= =1) b+=3;continue; b-=5;coutaendl; A7 B8 C9 D10答案:B(20)下面程序段的运行结果是( )。#include using namespace std;int main() int i,j,x=0; for(i=0;i2;i+) x+; for(j=0;j=3;j+) if(j%2) continue; x+; x+; cout“x=”xendl; Ax=4 Bx=8 Cx=6 Dx=12答案:B(21)下面程序段的运行结果是( )。#include using namespace std;int main()int i; for(i=1;i=5;i+) if(I%2) cout“*”; else continue;cout“#”; cout“$n”; A*#*#*#$ B#*#*#*$ C*#*#$ D#*#*$答案:A(22)下面程序段的运行结果是( )。#include using namespace std;int main() int i,j,a=0; for(i=0;i2;i+) for(j=0;j4;j+) if(j%2) break; a+; a+; coutaendl;A4 B5 C6 D7答案:A2填空题: (2) 1020个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?#include using namespace std;int main()int day, x1, x2; day=0;x1=1020; while( x10 ) x2=( x1/2-2 );x1=x2;day+;coutx1endl;cout“day=”dayendl; (4) 运行以下程序时,从键盘输入China#,回车后运行结果是( 5 5 )。#include using namespace std;int main() int v1=0,v2=0;char ch; while(ch=getchar()!=#) switch(ch) case a: case h: default:v1+; case o:v2+;coutv1v2=0); (7)下面程序段的运行结果为( * )。 x=2;docout“*”;x-; while(!x= =0);(8)下面程序段的运行结果是( a=-5 )。i=1;a=0;s=1; do a=a+s*i;s=-s;i+; while(I=10); cout“a=”a ; (9)下面程序段的运行结果是( )。 for(a=1,i=-1;-1=i1;i+) a+;coutxyendl; 分析:本题循环条件是假值,所以什么也不输出。 (10) 鸡、兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,x代表有多少只鸡,y代表有多少只兔子,请填空。for(x=1;x=29;x+)y=30-x; if( 2*x+4*y= =90 ) coutx y; (12)下面程序的功能是求出用数字0至9可以组成多少个没有重复的三位偶数,请填空。#include using namespace std;int main() int n=0,i,j,k; for(i=1;i=9;i+) for(k=0;k=8;( k+=2 ) i f(k!=i)for(j=0;j=9;j+) if( j!=i & j!=k ) n+;cout “n=”nendl; 3看程序,写结果(1)#include using namespace std;int main() int i=0,x=0,y=0; do +i;if(i%2!=0) x=x+i;i+;y=y+i+;while(i=7); cout“x=”x”y=”y; 运行结果:x=1 y=20(2)#include using namespace std;int main()int i,t,sum=0; for(t=i=1;i=10; ) sum+=t;+i; if(i%3= =0) t=-i; else t=i; cout“sum=”sum; 运行结果:sum=19(3) #include using namespace std;int main()int i; for(i=1;i=5;iI+) switch(i%2)case 0:i+; cout“#”;break; case 1:i+=2; cout“*”; default: cout“n”; 运行果为:*#(4) #include using namespace std;int main()int y=2,a=1; while(y-!=-1) do a*=y;a+; while(y-); coutay; 运行结果 :1 -2(5) #include void main()int i,j; for(i=4;i=1;i-) for(j=1;j=i;j+) putchar(#); for(j=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车油漆店合同(标准版)
- 公办教师合同(标准版)
- 广东竞赛试题及答案
- 编程算法竞赛试题及答案
- 2025-2030中国动漫产业园行业营销效益调研与市场深度调查剖析报告
- 大学化学竞赛试题及答案
- 2025年教师招聘之《幼儿教师招聘》题库附参考答案详解【培优b卷】
- 全球生物医药技术产业链深度解析报告
- 临床脑血管报警症状表现及早期预防
- 2024年石家庄市无极县招聘真题
- 第二单元混合运算单元测试卷(含答案) 2025-2026学年人教版三年级数学上册
- 出境人员行前安全培训课件
- 短视频个人劳务合同范本
- 纯电动汽车维护与保养 课件 模块一新能源汽车维护与保养基础认知
- 翻译后的基因表达调控
- 2025年度中国工商银行河南省分行社会招聘120人备考练习试题及答案解析
- (2025年标准)酒店政府采购协议书
- 苏教版三年级上册数学全册教学设计(配2025年秋新版教材)
- 重庆中医药学院2025年第二季度考核招聘工作人员笔试备考题库带答案详解
- 基孔肯雅热防护知识科普课件
- 中医优才考试试题及答案
评论
0/150
提交评论