信息学奥林匹克练习题(共23页)

上传人:风*** 文档编号:51177145 上传时间:2022-01-24 格式:DOC 页数:23 大小:51KB
返回 下载 相关 举报
信息学奥林匹克练习题(共23页)_第1页
第1页 / 共23页
信息学奥林匹克练习题(共23页)_第2页
第2页 / 共23页
信息学奥林匹克练习题(共23页)_第3页
第3页 / 共23页
点击查看更多>>
资源描述
精选优质文档-倾情为你奉上第4章 练习题一、选择题51、以下正确的if语句是AA、if (n0) printf(%f,n); printf(%f,-n);B、if (n0) n=n+m; printf(%f,n); else printf(%f,-n);C、if (n0) n=n+m; printf(%f,n); ; else printf(%f,-n);D、if (n0) n=n+m; printf(%f,n) ; else printf(%f,-n);52、以下程序Bmain( )printf(# # # #);A、输出:* * * *B、输出:# # # #C、存在语法错误D、无输出结果53、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与BA、缩排位置相同的if配对 B、其之前最近且不带else的if配对C、其之前最近的if配对 D、第一个if配对54、若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是Aw=1; x=2; y=3; z=4;k=(wx)?w:x;k=(ky)?k:y;k=(k0) x=1;else x=0;1 (a0) 0 (a0)C、 0 (a0) D、-1 (a0) 0 (a0)56、以下关于switch语句和break语句的描述中正确的是DA、在switch语句中必须使用break语句B、break语句只能用于switch语句体中C、break语句只能用于循环语句中D、在switch语句中使用break语句或continue语句的作用相同57、设有说明:int a=1,b=0; 则执行以下语句后的输出结果是Cswitch(a) case 1:switch(b) case 0: printf(* 0 *n); break; case 1: printf(* 1 *n);break;case 2: printf(* 2 *n); break;C、* 0 *D、switch语句中存在语法错误 * 1 * * 2 *58、设有程序段Cint x=10;while (x=0) x=x-1;A、while循环执行10次 B、循环是无限循环C、循环体语句一次也不执行 D、循环体语句只执行一次59、语句while (!y)中的表达式 !y 等价于CA、y=0 B、y!=1 C、y!=0 D、y=160、以下关于do-while循环不正确的描述是CA、d0-while的循环体至少执行一次B、do-while循环由do开始,用while结束,在while (表达式)后面不能写分号C、在do-while循环体中,一定要有能使while后面表达式的值变为零(假)的操作D、do-while的循环体可以是复合语句61、设x、y均是int类型变量,x值为100,则关于以下for循环的正确判断是Cfor (y=100; x!=y; +x,y+) printf(*n);A、循环体只执行一次 B、是无限循环C、循环体一次都不执行 D、for语句中存在语法错误62、以下程序段中的do-while循环Cm=-1;do m=m*m;while(!m);A、是死循环B、执行二次 C、执行一次D、有语法错误63、以下关于for循环的正确描述是DA、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环体语句,后判断表达for (k=2; k=0; )C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 66、以下程序段的执行结果是Aint x=-3;do printf(%dn, x+);while(!x);A、-3 D、-3B、-2 -2C、陷入死循环 -167、执行以下程序段后,y的值是E,x的值是Eint x=1, y=10;do y-=x;for (b=1,a=1; b=10) break; if (a%2=1) a+=5; continue;a-=3;x+;while(y-0);A、10 B、6 C、7 D、8 E、469、以下程序段的执行结果是Aint a, b;for (a=1; a5; a+=2) for (b=1; b5; b+) printf(%2d,a*b);if (b=5)printf(n);A、 1 2 3 4B、1 2 3 4 D、 2 3 43 6 9 12 6 9 12 15 6 9 12C、 2 3 4 6 9 12 10 15 2070、以下程序段中是死循环的是 x+;while(y-0);A、9 B、8 C、-2 D、2 E、4 F、368、执行以下程序段后a的值是,b的值是int a, b;式64、语句for (表达式1; ; 表达式3)等价于BA、for (表达式1; 0 ; 表达式3)B、for (表达式1; 1 ; 表达式3)C、for (表达式1; 表达式1; 表达式3)D、for (表达式1; 表达式3; 表达式3)65、若k为整型变量,则以下for循环的执行次数是Bfor (k=2; k=0; ) printf(%d,k-);A、无限次B、0次C、1次D、2次66、以下程序段的执行结果是Aint x=-3;do printf(%dn, x+);while(!x);A、-3 D、-3B、-2 -2C、陷入死循环 -167、执行以下程序段后,y的值是,x的值是int x=1, y=10;do y-=x; x+;while(y-0);A、9 B、8 C、-2 D、2 E、4 F、368、执行以下程序段后a的值是B,b的值是Aint a, b;for (b=1,a=1; b=10) break; if (a%2=1) a+=5; continue;a-=3;A、10 B、6 C、7 D、8 E、469、以下程序段的执行结果是Aint a, b;for (a=1; a5; a+=2) for (b=1; b5; b+) printf(%2d,a*b);if (b=5)printf(n);A、 1 2 3 4B、1 2 3 4 C、 2 3 43 6 9 12 6 9 12 15 6 9 12D、 2 3 4 6 9 12 10 15 2070、以下程序段中是死循环的是CA、int n=1;B、int n=1;while (!n) do n-;n+; while(n);C、int n=1; D、for (n=5; n1; ) ; do n+; while(n);71、下面程序的运行结果是Cmain( ) int m=0; while (m=2) m+; printf(%dn, m); A、1B、 1 2C、1 D、12 2 3 3 472、以下能正确计算12310的程序段是C A、do B、do k=1; n=1; k=1; n=0; n=n*k; n=n*k; k+; k+; while(k=10); while(k=10);C、k=1; n=1; D、k=1; n=0; do do n=n*k; n=n*k; k+; k+; while(k=10); while(k=10);73、下面程序的功能是计算1至10之间的奇数之和以及偶数之和。请选择填空。main( ) int x, y, z, k; x=z=0; for (k=0; k=10; k+=2) x+=k; D; z+=y; printf(偶数之和 = %dn, x); printf(奇数之和 =%dn, B);、A、y=k- B、y=k+1 C、y=k+ D、y=k-1、A、z-10 B、z C、z-11 D、z-y74、下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。(提示:只要算出1000!中含有因数5的个数即可。)for (m=0,n=5; n=1000; n+=5) t=n; while (C) m+; t=t/5; A、t%5 B、t=t%5=0 C、t%5=0 D、t%5!=075、若有以下程序段:for (m=1; m=100; m+) scanf(%d, &y); scanf(%d, &y); if (y0) continue; printf(%3d, m); 正确的描述是CA、当y=0时什么也不输出C、printf函数永远也不执行D、最多允许输出100个非负整数76、以下程序段等价于Cfor (k=100; k=200; k+) if (k%3=0) continue; printf(%4d, k); A、for (k=100; (k%3)&k=200; k+) printf(%4d, k);B、for (k=100; (k%3)|k=200; k+) printf(%4d, k);C、for (k=100; k=200; k+) if (k%3!=0) printf(%4d, k);D、for (k=100; k=200; k+) if (k%3) printf(%4d, k); else continue; break; 二、填空题20、以下程序的功能是:输入三个整数n1、n2、n3,按从大到小的顺序进行输出。请填空。main( ) int n1, n2, n3, temp; scanf(%d%d%d, &n1, &n2, &n3); if (n2n3) temp=n2; n2=n3; n3=temp; if (n1=a & c1=v & c1=A&ch1=a & ch10)m=m+1; if (xy)n=m+n;else if (x=y) n=5; elsen=2*m; printf(m=%d, n=%d, m, n);问题:为了使输出n=4,x的输入值应当为一个大于零的数,y的输入值应当为一个小于x的数。24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能组成则输出三角形的面积和三角形的类型。请填空。#include math.hmain( ) float a1, a2, a3; float s, area; scanf(%f%f%f, &a1, &a2, &a3); if (a1+a2a3&a2+a3a1&a3+a1a2) s=(a1+a2+a3)/2; area=sqrt(s*(s-a1)*(s-a2)*(s-a3); printf(%f, area); if (a1=a2&a2=a3&a3=a1) printf(等边三角形); else if (a1=a2|a2=a3|a3=a1) printf(等腰三角形); else if (a1*a1+a2*a2=a3*a3)| (a1*a1+a3*a3=a2*a2)| (a2*a2+a3*a3=a1*a1) printf(直角三角形); else printf(一般三角形); else printf(不能组成三角形);25、以下程序的功能是判断输入的年份是否是闰年。请填空。main( ) int year, yes; scanf(%d, &year); if (year%400=0) yes=1; else if (year%4=0) yes=1; else yes=0; if (yes) printf(%d is, year); elseprintf(%d is not, year); printf( a leap year.n);26、以下程序段根据输入的截止日期(年:yend,月:mend,日:dend)和出生日期(byear,bmonth,bday),计算出实际年龄。请填空。int yend, mend, dend, byear, bmonth, bday, age;age=yend-byear;if (mendbmonth) age-;else if (mend=bmonth &dend=A & c1=a & c1=z) ? (c1-32) : c1; printf(%c,c1);28、以下程序的功能是找出x、y、z三个数中的最小值。请填空。main( ) int x=4, y=5, z=8; int u, v; u=xy ?x:y; v=uz ? u:z; printf(%d, v);29、若运行以下程序时,输入下面指定数据,则运行结果为#include main( ) int ch; while (ch=getchar( )!=n) switch(ch-1) case 0: case 1: putchar(ch+3);case 2: putchar(ch+3); break; case 3: putchar(ch+3); default: putchar(ch+1); break; printf(n);输入数据(从第一列开始):123430、将以下嵌套的if语句改写成对应的switch语句,使其完成相同的功能。请填空。(假设mark的取值在1至100之间。)if 语句: if (mark60) k=1; else if (mark70) k=2; else if (mark80) k=3; else if (mark90) k=4; else if (mark100) m=5;if (s=90) m=4;if (s=80) m=3;if (s=70) m=2;if (s=60) m=1;if (s60) m=0;32、用switch语句实现以下数学关系,请填空。 -1 (x0)switch(x0) case 1: y=-1; break; case 0: switch(x=0) case 1: y=0; break; default y=1; 33、将以下含有switch语句的程序段改写成对应的含有嵌套if语句的程序段,请填空。含有switch语句的程序段:int s, t, m;t=(int)(s/10);switch( t ) case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default: m=0;含有嵌套if语句的程序段:int s, m;if (s60) m=0;else if (s70) m=1; else if (s80) m=2; else if (s90) m=3; else if (s100) m=4; else m=5;34、设x和y均为int类型变量,则以下for循环中的scanf语句最多可执行的次数是2for (x=0, y=0; y!=123 & x3; x+)scanf(%d, &y);35、设a、b、c均是int类型变量,则执行以下for循环后,c的值为10for (a=1, b=5; a=b; a+)c=a+b;36、以下程序的运行结果为(啥都没有)main( ) int j=5; while (j=15) if (+j % 2!=1) continue; else printf(%d , j ); printf(n);37、设ch1为char类型变量,若从键盘上由第一列输入以下数据: right?则以下三个程序段的输出结果分别是right,sjhiu,right?。、c=getchar( ); while (c!=?) putchar(c); c=getchar( ); 、while (c=getchar( )!=?) putchar(+c);、while (putchar(getchar( )!=?) ;38、下面程序段的功能是统计从键盘输入的字符中的数字字符个数,用换行符n结束循环,请填空。int n=0, c;c=getchar( ) ;while (c!=n) if (c=a&c=A&c=0&c=0);40、以下程序段的运行结果是*x=2;do printf(*); x-;while(!x=0);41、下面程序段是找出整数的所有因子,请填空。scanf(%d, &x);for ( ; ; ) if (x%i = 0) printf(%3d, i );i+;42、设鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。for (x=1; x=29; x+) y=30-x; if (x*4+y*2=90)printf(%d, %dn, x, y);43、若用以下形式表示for循环语句:for (表达式1;表达式2;表达式3)循环体语句则执行语句for (i=0; i3; i+) printf(*); 时,表达式1执行1次,表达式3执行3次。44、下面程序的功能是计算1-3+5-7+-99+101的值,请填空。main( ) int i, t=1, s=0; for (i=1; i=101; i+=2) ; s=s+t; ; printf(%dn,s);45、以下程序的功能是求出下面算式中的X、Y、Z的值,请填空。算式:XYZ+YZZ 532main( ) int x, y, z, k, result=532; for (x=1; x10; x+) for (y=1; y10; y+)for (z=1; z10; z+) k=(100*x+10*y+z)+(100*y+10*z+z); if (k=result) printf(X=%d, Y=%d, Z=%dn,x,y,z);46、下面程序的功能是求1000以内的所有完全数,请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。)main( ) int a, i, m; for (z=1; a=1000; a+) for (; i=1; i-) for (j=1; j=i; j+)printf(#);for (j=1; j4-i; j+)putchar(*); putchar(n);48、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。main( ) int i, s, k, count=0; for (i=100; i=1000; i+) s=0; k=i; while () s=s+k%10; k=; if (s!=5);count+; printf(%d, count);49、下面程序的功能是打印100以内个位数为6且能被3整除的所有数,请填空。main( ) int i, j; for (i=0; i=9; i+) j=i*10+6; if (j%3!=0) continue; printf(%d, j );专心-专注-专业
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!