A. 15 B. 10.6.8 C. 3....

当前位置:
>>>已知:a,b,c是△ABC的三边,且a:b:c=4:5:6,则它们的对应高ha:hb..
已知:a,b,c是△ABC的三边,且a:b:c=4:5:6,则它们的对应高ha:hb:hc的比是(  )
A.4:5:6&
B.6:5:4&
C.15:12:10&
D.10:12:15
题型:单选题难度:中档来源:不详
马上分享给同学
据魔方格专家权威分析,试题“已知:a,b,c是△ABC的三边,且a:b:c=4:5:6,则它们的对应高ha:hb..”主要考查你对&&三角形的周长和面积&&等考点的理解。关于这些考点的“档案”如下:
现在没空?点击收藏,以后再看。
因为篇幅有限,只列出部分考点,详细请访问。
三角形的周长和面积
三角形的概念:由不在同意直线上的三条线段首尾顺次相接所组成的图形叫做三角形。构成三角形的元素:边:组成三角形的线段叫做三角形的边;顶点:相邻两边的公共端点叫做三角形的顶点;内角:相邻两边所组成的角叫做三角形的内角,简称三角形的角。三角形有下面三个特性:(1)三角形有三条线段;(2)三条线段不在同一直线上;(3)首尾顺次相接。三角形的表示:用符号“△,顶点是A、B、C的三角形记作“△ABC”,读作ABC”。三角形的分类:(1)三角形按边的关系分类如下:;(2)三角形按角的关系分类如下:把边和角联系在一起,我们又有一种特殊的三角形:等腰直角三角形。它是两条直角边相等的直角三角形。三角形的周长和面积:三角形的周长等于三角形三边之和。三角形面积=(底×高)÷2。
发现相似题
与“已知:a,b,c是△ABC的三边,且a:b:c=4:5:6,则它们的对应高ha:hb..”考查相似的试题有:
181597391783512656350337310543894703计算(2×10-6)2÷(10-2)3o(10-1)3的结果是(  )
A.2×10-9
B.4×10-9
C.4×2×10-15
D.2×10-1
(2×10-6)2÷(10-2)3o(10-1)3=4×10-12÷10-6×10-3=4×10-9.故选B.
计算(2×10-6)2÷(10-2)3·(10-1)3的结果是
A.2×10-9B.4×10-9C.4×2×10-15D.2×10-1
计算(-10)2+(-10)0+10-2×(-102)的结果是(
计算:-6+4的结果是(  )
高考全年学习规划
该知识易错题
该知识点相似题
高考英语全年学习规划讲师:李辉
更多高考学习规划:
客服电话:400-676-2300
京ICP证050421号&京ICP备号 &京公安备110-1081940& 网络视听许可证0110531号
旗下成员公司下面的四个数中能组成比例的是(  )
A.6、10、9和15
B.20、14、4和5
2_百度知道
下面的四个数中能组成比例的是(  )
A.6、10、9和15
B.20、14、4和5
下面的四个数中能组成比例的是(  )
A.6、10、9和15
B.20、14、4和5
、0.6和0.3
提问者采纳
A、因为八×15=10×9,所以能组成比例;B、因为人0×4≠14×5,所以不能组成比例;C、因为3×
,所以不能组成比例;t、因为
×0.3,所以不能组成比例.故选:A.
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁提问回答都赚钱
> 问题详情
试用与非门设计实现函数F(A,B,C,D)=∑m(2,6,10,13,14,15)的组合逻辑电路。
悬赏:0&&答案豆&&&&提问人:匿名网友&&&&提问收益:0.00答案豆&&&&&&
试用与非门设计实现函数F(A,B,C,D)=∑m(2,6,10,13,14,15)的组合逻辑电路。
发布时间:&&截止时间:
网友回答&(共0条)
回答悬赏问题预计能赚取&10.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&5.00元收益
回答悬赏问题预计能赚取&2.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&8.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&3.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&1.00元收益
回答悬赏问题预计能赚取&8.00元收益
你可能喜欢的
[] [] [] [] [] [] [] [] [] [] [] []
请先输入下方的验证码查看最佳答案本文所属图书&>&
本书根据计算机专业C语言程序设计课程的教学大纲编写,全书共分9章,分别介绍了C语言概述、数据类型及其运算、选择语句和循环语句、数组、指针、函数、结构体和共用体、预处理和位段、文件。每章由基本知识点和例...&&
1. 单项选择题
【例3-2-1】对for(表达式1; ;表达式3)可理解为&&&&& 。
A. for(表达式1;0;表达式3)& &&&&&&&&&&&&&&&&&&&& B. for(表达式1;表达式3;表达式3)
C. for(表达式1;1;表达式3)& &&&&&&&&&&&&&&&&&&&& D. for(表达式1;表达式1;表达式3)
&解:&表达式2&缺省,表示不进行条件判断,等价于&表达式2&总为真。本题答案为C。
【例3-2-2】以下叙述正确的是&&&&& 。
A. 不能使用do-while语句构成的循环
B. do-while语句构成的循环必须用break语句才能退出
C. do-while语句构成的循环,当while语句中的表达式值为非零时结束循环
D. do-while语句构成的循环,当while语句中的表达式值为零时结束循环
&解:do-while循环中,&条件&为假(0)时退出循环。本题答案为D。
【例3-2-3】以下描述中正确的是&&&&& 。
A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C. 在do-while 循环体中,一定要有能使while后面表达式的值变为零(假)的操作
D. do-while循环中,根据情况可以省略while
&解:do-while循环中不能省略while,循环体可以使用复合语句,while(表达式)后面一定要写分号。本题答案为C。
【例3-2-4】下面有关 for 循环的正确描述是&&&&& 。
A. for循环只能用于循环次数已经确定的情况
B. for循环是先执行循环体语句,后判断表达式
C. 在for循环中,不能用break语句跳出循环体
D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
&解:在for循环中可以用break语句跳出循环体,所以for循环不只能用于循环次数已经确定的情况,另外,在执行循环循环体语句之前要判断表达式。本题答案为D。
【例3-2-5】有以下程序段:
int n=0,p;
scanf(&%d&,&p);n++;
} while(p!=12345 && n&3);
此处do-while循环的结束条件是&&&&& 。
A. p的值不等于12345并且n的值小于3
B. p的值等于12345并且n的值大于等于3
C. p的值不等于12345或者n的值小于3
D. p的值等于12345或者n的值大于等于3
&解:do-while循环的结束条件为! (p!=12345 && n&3),即p==12345 || n&=3。本题答案为D。
【例3-2-6】以下程序的运行结果为&&&&& 。
#include &stdio.h&
void main()
{&& int k,j,s;
&&& for(k=2;k&6;k++,k++)
&&& {&& s=1;
&&&&&&& for(j=k;j&6;j++) s+=j;
&&& printf(&%d\n&,s);
A. 9&&&&&&&&& &&&&&&&&&&&&&&&&&&&& B. 1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C. 11&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 10
&解:外循环中&表达式3&为k++,k++,也就是说,每次循环后k增大2,外循环执行2次,后一次执行求出的s覆盖前一次执行的结果。当k=4时,执行内循环s=1+4+5=10。本题答案为D。
【例3-2-7】下面程序的运行结果是&&&&& 。
#include &stdio.h&
void main()
{&& int a=1,b=2,c=2,t;
&&& while(a&b&c)
&&& {&& t=a;a=b;b=t;&&& /*a、b交换*/
&&&&&&& c--;
&&& printf(&%d,%d,%d&,a,b,c);
A. 1,2,0&&&&&&&&&&&&&&&&&&&&&&&&& B. 2,1,0&&&&&&&&&&&&&&&&&&&&&& C. 1,2,1&&&&&&&&&&&&&&&&&&&&&& D. 2,1,1
&解:第1次循环a=1,b=2,c=2,a&b返回1(真),a&b&c即为1&c为真,交换a、b的值,c变为1;第2次循环a=2,b=1,c=1,a&b返回0(假),a&b&c即为0&c为真,交换a、b的值,c变为0;此时,a=1,b=2,c=0,a&b返回1(真),a&b&c即为1&c为假,不再执行循环体。本题答案为A。
【例3-2-8】以下能正确计算1&2&3&4&5&6&7&8&9&10的程序段是& &&&&。
A. do { i=1;s=1;&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&& B. do { i=1;s=0;
&& s=s*i;&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&s=s*i;
&& i++;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&i++;
} while (i&=10) ;&&&&&&&&&&&&&&&&&&&&&&&& &&} while (i&=10) ;
C. i=1;s=1;&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&& D. i=1;s=0;
do { s=s*i;&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&do { s=s*i;
&& i++;&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&i++;
} while (i&=10) ;&&&&&&&&&&&&&& &&&&&&&&&&&&} while (i&=10) ;
&解:i=1和s=1的置初值语句应放在do-while循环语句之前。本题答案为C。
【例3-2-9】设有以下程序段:
int x=0,s=0;
while(!x!=0) s+=++x;
printf(&%d&,s);
则&&&&& 。
A. 运行程序段后输出0 &&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& B. 运行程序段后输出1
C. 程序段中的控制表达式是非法的&&&&&&&&&&&&&&&&&& D. 程序段执行无限次
&解:x=0,!x=1,!x!=0为真,执行s+=++x,++x返回1,x=1,s=s+1=1;x=1,!x=0,!x!=0为假,不再执行循环语句。本题答案为B。
【例3-2-10】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int a=0,i;
&&& for(i=1;i&5;i++)
&&& {&& switch(i)
&&&&&&& case 0:
&&&&&&& case 3:a+=2;
&&&&&&& case 1:
&&&&&&& case 2:a+=3;
&&&&&&& default:a+=5;
&&& printf(&%d\n&,a);
A. 31&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B. 13&&&&& &&&&&&&&&&&&&&&&&&&& C. 10&&&&&&&&&&&&&&&&&&&&&&&&&& D. 20
&解:i=1,执行a+=3和a+=5语句,a=8;i=2,执行a+=3和a+=5语句,a=16;i=3,执行a+=2、a+=3和a+=5语句,a=26;i=4,执行a+=5语句,a=31。本题答案为A。
【例3-2-11】以下程序的运行结果为&&&&& 。
#include &stdio.h&
void main()
{&& int i,j,m=0;
&&& for(i=1;i&=15;i+=4)
&&&&&&& for(j=3;j&=19;j+=4)&
&&&&&&&&&&& m++;
&&& printf(&%d\n&,m);
A. 12&&&&&&&&&&&&&&&&&&&&&& B. 15&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C. 20&&&&& &&&&&&&&&&&&& &&&&&& D. 25
&解:i=1:j=3,m++&m=1,j=7,m++&m=2,j=11,m++&m=3,j=15,m++&m=4,j=19,m++&m=5,即m增大5;对于i=5,i=9,i=13三次外循环,m每次增大5,所以m=20。本题答案为C。
【例3-2-12】以下程序的运行结果为&&&&& 。
#include &stdio.h&
void main()
&&& for(i=1;i&=5;i++)
&&& {&& if(i%2) printf(&*&);
&&&&&&& printf(&#&);
&&& printf(&$\n&);
A. *#*#*#$&&&&&&&&&&&&&&&&&&&& B. #*#*#*$&&&&&&&&&&&&&&&&& C. *#*#$&&&&&&&&&&&&&&&&&&&& D. #*#*$
&解:i=1:i%2=1,输出一个&*&和一个&#&。i=2:i%2=0,执行continue,不会输出一个&#&。i=3:i%2=1,输出一个&*&和一个&#&。i=4:i%2=0,执行continue,不会输出一个&#&。i=5:i%2=1,输出一个&*&和一个&#&,最后输出一个&$&。本题答案为A。
【例3-2-13】有如下程序:
#include &stdio.h&
void main()
{&& int x=23;
&&& {&& printf(&%d&,x--);
&&& } while(!x);
该程序的执行结果是&&&&& 。
A. 321&&&&&&&&&&&&& &&&&&&&&&&&&& B. 23&&&&&&&&&&&&&&&&&&& C. 不输出任何内容&&&&& D. 陷入死循环
&解:先执行printf语句,输出23,x=22,!x为假,退出循环语句。本题答案为B。
【例3-2-14】下面程序的运行结果是&&&&& 。
#include &stdio.h&
void main()
{&& int y=10;
&&& do {y--;} while(--y);
&&& printf(&%d\n&,y--);
A. -1&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B. 1&&&&&& &&&&&&&&&&&&&&&&&&&& C. 8&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 0
&解:do-while循环一直执行到y=0为止。本题答案为D。
【例3-2-15】有如下程序:
#include &stdio.h&
void main()
{&& int n=9;
&&& while(n&6)
&&& {&& n--;
&&&&&&& printf(&%d&,n);
该程序的输出结果是&&&&& 。
A. 987&&&&&& &&&&&&&&&&&&&&&&&&&& B. 876&&& &&&&&&&&&&&&& C. 8765&&&&&&&&&&&&&&&&&&&&&& D. 9876
&解:根据n的初值和循环执行过程可知while语句执行3次。本题答案为B。
【例3-2-16】有以下程序:
#include &stdio.h&
void main()
{&& int i=0,s=0;
&&& {&& if(i%2)
&&&&&&&&&&& i++;
&&&&&&& i++;
&&&&&&& s+=i;
&&& } while(i&7);
&&& printf(&%d\n&,s);
执行后输出结果是&&&&& 。
A. 16&&&&&&&&&&&&&&&&&&&&&& B. 12&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C. 28&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 21
&解:i=0,i%2为假,执行i++和s+=i&i=1,s=1;i&7成立,i%2为真,执行i++&i=2,执行continue开始下一轮循环;
i=2,i%2为假,执行i++和s+=i&i=3,s=4;i&7成立,i%2为真,执行i++&i=4,执行continue开始下一轮循环;
i=4,i%2为假,执行i++和s+=i&i=5,s=9;i&7成立,i%2为真,执行i++&i=6,执行continue开始下一轮循环;
i=6,i%2为假,执行i++和s+=i&i=7,s=16;i&7不成立,循环终止。
本题答案为A。
【例3-2-17】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int i=0,a=0;
&&& while(i&20)
&&& {&& for(;;)
&&&&&&& {&& if(i%10==0)
&&&&&&&&&&& else i--;
&&&&&&& i+=11;
&&&&&&& a+=i;
&&& printf(&%d\n&,a);
A. 21& &&&&&&&&&&&&&&&&&&&&&&&&&&& B. 32&&&&& &&&&&&&&&&&&&&&&&&&& C. 33&&&&&&&&&&&&&&&&&&&&&&&&&& D. 11
&解:i=0,执行for循环,i%10==0成立,退出for循环,执行i+=11和a+=i&i=11,a=11;
i=11,执行for循环,i%10==0不成立,执行i--&i=10,i%10==0成立,退出for循环,执行i+=11和a+=i&i=21,a=21;while循环i&20条件不成立,退出while循环。
本题答案为B。
【例3-2-18】有以下程序段:
while(k=1) k++;
while循环执行的次数是&&&&& 。
A. 无限次&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& B. 有语法错,不能执行
C. 一次也不执行&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 执行1次
&解:while循环语句的条件k=1总是为真。本题答案为A。
为了防止本例错误的出现,一种好的风格是,在条件表达式中将常量放在比较运算符的左侧,如while (1==k)。
【例3-2-19】以下程序中,while循环的循环次数是&&&&& 。
#include &stdio.h&
void main()
{&& int i=0;
&&& while(i&10)
&&& {&& if(i&1)
&&&&&&& if(i==5)
&&&&&&& i++;
A. 1&&&&&&&&&&&&&&&& &&&&&& B. 10&&&&&&&&&&&&&&&&&&&&&&&&&& C. 6&&&&&&&&&&&&&&&&&&&& D. 死循环,不能确定次数
&解:i=0,执行while语句,遇到第一个if语句时跳到while语句的开头,i&10又成立,遇到第一个if语句时跳到while语句的开头,&&。i始终不变,陷入死循环。本题答案为D。
【例3-2-20】以下程序执行后sum的值是&&&&& 。
#include &stdio.h&
void main()
{&& int i,
&&& for(i=1;i&6;i++)
&&&&&&& sum+=i;
&&& printf(&%d\n&,sum);
A. 15&&&&&&&& &&&&&&&&&&&&&&&&&&&& B. 14&&&&&&&&&&&&&&&&&&&&&&&&&& C. 不确定&&&&&&&&&&&&&&&&&&& &&&&&& D. 0
&解:sum没有赋初值,所以其值不确定。本题答案为C。
【例3-2-21】有以下程序:
#include &stdio.h&
void main()
{&& int x=3;
&&& {&& printf(&%d &,x-=2);
&&& } while (!(--x));
其输出结果是&&&&& 。
A. 1&&&&&&&&&&&&&&&&&&&&&&& B. 3& 0&&&&&&&&&&&&&&&&&&&&&& C. 1 -2&&&&&&&&&&&&&&&&&&&&&& D. 死循环
&解:x=3,执行printf语句,x=1,输出1,--x返回0(x=0),!(--x)返回真;x=0,执行printf语句,x=-2,输出-2,--x返回-3(x=-3),!(--x)返回假,循环终止。
本题答案为C。
【例3-2-22】有以下程序:
#include &stdio.h&
void main()
{&& int i,s=0;
&&& for(i=1;i&10;i+=2) s+=i+1;
&&& printf(&%d\n&,s);
程序执行后的输出结果是&&&&& 。
A. 自然数1~9的累加和&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&& B. 自然数1~10的累加和
C. 自然数1~9中的奇数之和&&&&&&&&&&&&& &&&&&&&&&&&&& &&&&&& D. 自然数1~10中的偶数之和
&解:for循环的&表达式3&为i+=2,即每次递增2,也就是说for执行的i值为1、3、5、7、9,而循环体为s+=i+1,即s=2+4+6+8+10=30。本题答案为D。
【例3-2-23】下面程序的功能是输出图3.8所示的图案,在下划线处应填入的是&& &&&。
图3.8& 金字塔图案
#include &stdio.h&
void main()
{&& int i,j;
&&& for(i=1;i&=4;i++)
&&& {&& for(j=1;j&=4-i;j++)
&&&&&&&&&&& printf(& &);
&&&&&&& for(j=1;j&=_____;j++)
&&&&&&&&&&& printf(&*&);
&&&&&&& printf(&\n&);
A. i&&& &&&&&&&&&&&&&&&&&&&& B. 2*i-1&&&&&&&&&&&&&&&&&&&&& C. 2*i+1 &&&&&&&&&&&&&&&&&& D. i+2
&解:第i行(i从1开始)有2*i-1个&*&号。本题答案为B。
【例3-2-24】以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:
#include &stdio.h&
void main()
{&& int n,k;
&&& float score,sum,
&&& sum=0.0;
&&& for(n=1;n&=10;n++)
&&& {&& for(k=1;k&=4;k++)
&&&&&&& {&& scanf(&%f&,&score);
&&&&&&&&&&& sum+=
&&&&&&& ave=sum/4.0;
&&&&&&& printf(&NO%d:%f\n&,n,ave);
上述程序运行后结果错误,调试中发现有一条语句出现在程序中的位置错误。这条语句是&&&&& 。
A. sum=0.0;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&& B. sum+=
C. ave=sum/4.0;&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&& &&&&&& &&&&&& D. printf(&NO%d:%f\n&,n,ave);
&解:因为要计算每个学生的平均分,所以对每个学生成绩求和,因此,对每个学生要执行sum=0.0。本题答案为A。
【例3-2-25】有如下程序,运行时输入&china?&,其执行结果是&&&&& 。
#include &stdio.h&
void main()
&&& c=getchar();
&&& while (c!='?')
&&& {&& putchar(c);
&&&&&&& &c=getchar();
A. china&&&&&&&&&&&&&&&&&& B. china?&&&&&&&&&&&&&&&&&&&&&&&&&&& C. China&&&&&&&&&&&&&&&&&&&&& D. China?
&解:最后输入的&?&不会输出。本题答案为A。
【例3-2-26】如下程序的执行结果是&&&&& 。
#include &stdio.h&
void main()
{& &int x,y;
&&& for (x=1,y=1;x&=100;x++)
&&& {&& if (y&=20)
&&&&&&& if (y%3==1)
&&&&&&& {&& y+=3;
&&&&&&&&&&&
&&&&&&& y-=5;
&&& printf(&%d\n&,x);
A. 9&&&&&&&&&&&&&&&&&&&&&&& &&&&&& B. 8&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& C. 7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& D. 6
&解:当y&=20时通过break语句终止for循环。本题答案为B。
【例3-2-27】如下程序的执行结果是&&&&& 。
#include &stdio.h&
void main()
{&& int m=9;
&&& {&& printf(&%3d&,m-=2);
&&& } while (--m);
A. 7 4 1&&&&&&&&&&&&&&&&&&&&&&& B. 9 3&&&&&&&&&&&&&&&&&&&&&&&& C. 1 0&&&&&&&&&&&&&&&&&&&&&&&& D. 3 1
&解:每次循环m减小3。本题答案为A。
【例3-2-28】C语言中,break语句只能用于&&&&& 和&&&&& 语句中。
&解:本题答案为switch,循环。
【例3-2-29】下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环,请填空。
c=getchar();
while( &&①& &)
{&& if( &②& &)& n++;
&&& c=getchar();
&解:本题答案为①c!='\n' ②c&='0' && c&='9'。
【例3-2-30】若for循环用以下形式表示:
for(表达式1;表达式2;表达式3) 循环体语句;
则执行语句for(i=0;i&3;i++) printf(&*&);时,表达式1执行& ① &次,表达式3执行& ②& 次。
&解:本题答案为①1,②3。
【例3-2-31】以下函数求x的y次方。
double fun(double x,int y)
{&&double z =1.0;
&&& for (i=1;i& ①& ;i++)
&&& &&&&z =&& ②&& ;
&&& return(z);
&解:本题答案为①&=y,②z*x。
【例3-2-32】下列程序计算2到100的偶数的累加和,请填空。
#include &stdio.h&
void main()
{&& int i,sum=0;
&&& for(_____) sum+=i;
&&& printf(&sum=%d\n&,sum);
&解:注意循环变量i每次递增2。本题答案为i=2;i&=100;i+=2。
【例3-2-33】以下程序的输出结果是& &&&&。
#include &stdio.h&
void main()
{&& int s,i;
&&& for(s=0,i=1;i&3;i++,s+=i);
&&& printf(&%d\n&,s);
&解:s=2+3=5。本题答案为5。
【例3-2-34】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int x=15;
&&& while(x&10 && x&50)
&&& {&& x++;
&&&&&&& &if(x/3){ &x++;& }
&&& printf(&%d\n&,x);
&解:x=15,执行x++&x=16,x/3=5返回1,执行x++&x=17,再执行break语句退出while循环。本题答案为17。
【例3-2-35】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int i=1,j=1;
&&& for (;j&10;j++)
&&& {&& if (j&5)
&&&&&&& if (j%2!=0)
&&&&&&& {&& j+=3;
&&&&&&&&&&&
&&&&&&& j-=1;
&&& printf(&%d,%d\n&,i,j);
&解:i=1,j=1,j%2!=0为真,执行j+=3&j=4,遇到continue重新执行循环体(需执行for循环的&表达式3&即j++&j=5);j=5,j%2!=0为真,执行j+=3&j=8,遇到continue重新执行循环体(需执行for循环的&表达式3&即j++&j=9);j=9,j&5,退出for循环。本题答案为:1,9。
在for循环语句遇到continue语句时还需执行for循环的&表达式3&。
【例3-2-36】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int a,b;
&&&&&&& for (a=1,b=1;a&100;a++)
&&&&&&& {&& if (b&=20)
&&&&&&&&&&& if (b%3==1)
&&&&&&&&&&& {&& b+=3;
&&&&&&&&&&&&&&&
&&&&&&& b-=5;
&&& printf(&b=%d\n&,b);
&解:a=1,b=1,b%3==1为真,执行b+=3&b=4,遇到continue重新执行循环体(需执行for循环的&表达式3&即a++&a=2);a=2,b=4。b%3==1为真,执行b+=3&b=7,遇到continue重新执行循环体(需执行for循环的&表达式3&即a++&a=2);如此循环直到a=8,b=22时遇到break语句退出for循环。本题答案为b=22。
【例3-2-37】以下程序的输出结果是&&&&& 。
#include &stdio.h&
void main()
{&& int i,x;
&&& for (i=1;i&100;i++)&&&
&&& {&& x=i;
&&&&&&& if (++x%2==0)
&&&&&&&&&&& if (++x%3==0)
&&&&&&&&&&&&&&& if (++x%7==0)
&&&&&&&&&&&&&&&&&&& printf(&%d &,x);
&&& printf(&\n&);
&解:在1~99中找这样的i,同时满足(i-2)%2=0、(i-1)%3=0和i%7=0,即i=7a(i只能取7、14、21、28、35、42、49、56、63、70、77、84、91、98中的数),i=2b+2(i为大于2的偶数,i只能取14、28、42、56、70、84、98中的数),i=3c+1(i减1能被3整除,i只能取28、70),其中a、b、c为正整数。本题答案为28 70。
【例3-2-38】以下程序的输出结果是&&&&& 。
图3.9& 程序输出图案
#include &stdio.h&
void main()
{& &int i,j,k,col=10;
&&& for (i=1;i&=11;i++)
&&& {&& for (j=1;j&=j++)
&&&&&&&&&&& printf(& &);
&&&&&&& for (k=1;k&=i;k++)
&&&&&&&&&&& printf(&*&);
&&&&&&& printf(&\n&);
&&&&&&& col--;
&解:注意两种循环的使用。本题输出结果如图3.9所示。
【例3-2-39】以下程序的输出结果是& &&&&。
#include &stdio.h&
void main()
{&& unsigned num=14682;
&&& unsigned k=1;
&&& {&& k*=num%10;
&&&&&&& num/=10;
&&& } while(num);
&&& printf(&%d\n&,k);
&解:求参数num的各个数字的乘积。本题答案为384。
【例3-2-40】下面程序的功能是计算1到10之间奇数之和及偶数之和,请填空。
#include &stdio.h&
void main()
{& &int a,b,c,i;
&&& a=c=0;
&&& for (i=0;i&10;i+=2)
&&& {&& a+=i;
&&&&& &&____;
&&&&&&& c+=b;
&&& printf(&偶数之和=%d\n&,a);
&&& printf(&奇数之和=%d\n&,c-11);
&解:for循环中i扫描所有偶数,b扫描所有奇数。本题答案为b=i+1。
【例3-2-41】下面程序的功能是输出100以内能被3整除且个位数为6的所有整数,请填空。
#include &stdio.h&
void main()
{&& int& i,j;
&&& for(i=0;& ①& ; i++)
&&& {&& j=i*10+6;
&&&&&&& if(& ②& )
&&&&&&& printf(&%d&,j);
&解:用j表示这样的数,i表示其十位上的数字,显然i从0到9,能被3整除的条件为j%3==0。注意这里使用continue语句,即不满足该条件时继续找。本题答案为①i&10& ②j %3 !=0。
【例3-2-42】以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。
#include &stdio.h&
void main()
{& &float x,amax,
&&& scanf(&%f&,&x);
&&& amax=x;amin=x;
&&& while(& ①& )
&&& {&& if(x&amax) amax=x;
&&&&&&& if(&& ②& ) amin=x;
&&&&&&& scanf(&%f&,&x);
&&& printf(&\namax=%f\namin=%f\n&,amax,amin);
&解:while循环条件为非负数,x扫描输入的所有数。本题答案为①x&=0 ②x&amin。
【例3-2-43】判断以下叙述的正确性。
(1)while语句中的循环体至少执行一次。
(2)由i=-1;while (i&10) i+=2;i++;可知此while循环的循环体执行次数为6次。
(3)若有说明则while(c=getchar());是正确的C语句。
(4)以下程序的输出结果为s=15。
#include &stdio.h&
void main()
{& &int i=0,s=0;
&&& while (i&5)
&&& {&& i++;
&&&&&&& if (i==2)
&&&&&&& s+=i;
&&& printf(&s=%d\n&,s);
&解:(1)错误。
(2)正确。注意最后的i++语句不包含在循环体中。
(3)正确。但除非强制中断,否则不会退出while循环。
(4)错误。i循环从0~4,s累加1~5的值,但当i=2时跳过s+=i语句(从while语句条件判断开始执行),所以s=1+3+4+5=13。
【例3-2-44】判断以下叙述的正确性。
(1)do-while循环由do开始,while结束,循环体可能一次也不做。
(2)在do-while循环中,任何情况下都不能省略while。
(3)C语言中,do-while语句构成的循环只能用break语句退出。
(4)以下程序的输出结果为s=13。
#include &stdio.h&
void main()
{& &int i=1,s=0;
&&& {&& if (i==2)
&&&&&&& i++;
&&&&&&& s+=i;
&&& } while (i&5);
&&& printf(&s=%d\n&,s);
解:(1)错误。do-while循环语句中的循环体至少做一次
(2)正确。
(3)错误。当while条件不成立时也会退出循环。
(4)错误。当i=2时跳过i++;s+=i语句,从while语句条件判断开始执行,但i值没有改变仍为2,这样陷入死循环。
【例3-2-45】判断以下叙述的正确性。
(1)对于for(表达式1;表达式2;表达式3) 循环体;语句来说,循环体中的continue语句意味着转去执行表达式2。
(2)for循环的三个表达式都可以省略。
(3)循环for(;;)的循环条件始终为真。
(4)for语句的循环体至少执行一次。
(5)两层循环for (i=0;i&5;i+=2) for (j=0;j&5;j++)的循环体的执行次数为15。
&解:(1)错误。continue语句意味着转去执行表达式3。
(2)正确。
(3)正确。
(4)错误。当表达式2开始就不满足时,其循环体一次都不会执行。
(5)正确。这两层循环的循环变量没有关系,外循环执行3次(i=0、2、4),内循环执行5次(j=0、1、2、3、4),共计执行3&5=15次。
【例3-2-46】判断以下叙述的正确性。
(1)C语言的三种循环不可以互相嵌套。
(2)continue语句对于while和do-while循环来说,意味着转去计算while表达式。
(3)在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。
(4)do-while语句的循环体至少执行1次,while和for循环的循环体可能一次也执行不到。
(5)执行break语句时退出到包含该break语句的所有循环外。
(6)for循环、while循环和do-while循环结构之间可以相互转化。
(7)for、while和do-while循环结构的循环体均为紧接其后的第一个语句(含复合语句)。
(8)while和do-while循环不论什么条件下它们的结果都是相同的。
&解:(1)错误。C语言的三种循环是可以互相嵌套的。
(2)正确。
(3)错误。在循环内的语句受循环的控制。
(4)正确。
(5)错误。当有多层循环时,执行break语句时退出到包含该break语句的那一层循环外。
(6)正确。
(7)正确。
(8)错误。
【例3-2-47】分析以下程序的执行结果。
#include &stdio.h&
void main()
{& &int i=0,s=0;
&&& for (;;)
&&& {&& i+=2;
&&&&&&& if (i&6)
&&&&&&& {&& printf(&s=%d\n&,s);
&&&&&&&&&&&
&&&&&&& if (i==6)
&&&&&&& s+=i;
&解:执行条件for循环,每次i增大2,执行第3次for循环时,i=6,执行continue语句,再次执行for循环,i=8,退出循环语句,s=2+4=6。程序输出为s=6。
【例3-2-48】分析以下程序的执行结果。
#include &stdio.h&
void main()
{&& int i=20,n=0;
&&& {&& n++;
&&&&&&& switch(i%4)
&&&&&&& case 0:i=i-7;
&&&&&&&&&&&&&&&
&&&&&&& case 1:
&&&&&&& case 2:
&&&&&&& case 3:i++;
&&&&&&&&&&&&&&&
&&& &&&&&}
&&& } while (i&=0);
&&& printf(&n=%d\n&,n);
&解:i的初值为20,进入do-while循环体后,i值逐渐减小,但由于switch语句的作用,是以一种进进退退的方式减小的。程序输出为n=17。
【例3-2-49】分析以下程序的运行结果。
#include &stdio.h&
void main()
&&& for (x=1;x&100;x++)
&&&&&&& if (++x%2==0)&&&&&&&&&&&&&&& /*if语句1*/
&&&&&&&&&&& if (++x%3==0)&&&&&&&&&&& /*if语句2*/
&&&&&&&&&&&&&&& if (++x%5==0)&&&&&&& /*if语句3*/
&&&&&&&&&&&&&&&&&&& printf(&%d &,x);
&解:执行for循环。第1次循环x=1:if语句1(x=2)为真,if 语句2(x=3)为真,if 语句2(x=4)为假。第2次循环x=5:if 语句1(x=6)为真,if语句2(x=7)为假。第3次循环x=8:if语句1(x=9)为假。之后每次循环,x为偶数,if语句1的条件均为假。所以整个程序段中不可能执行printf语句。程序无任何数据输出。
【例3-2-50】以下程序:
#include &stdio.h&
void main()
{& &int i,a,b,c;
&&& printf(&a b c:&);
&&& scanf(&%d%d%d&,&a,&b,&c);
&&& for (i=0;i&a;i++)
&&&&&&& switch(b)
&&&&&&& case 1:if (c+i&5)
&&&&&&&&&&&&&&&&&&& printf(&%c&,'y');
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&& printf(&%c&,'x');
&&&&&&&&&&&&&&&
&&&&&&& case 2:if (c+i&5)
&&&&&&&&&&&&&&&&&&& printf(&%c&,'y');
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&&&&&& printf(&%c&,'x');
&&&&&&&&&&&&&&&
&&&&&&& default:printf(&%c&,'x');
试回答以下问题:
(1)上述程序若要输出yyx,则a、b、c的初值应为多少?
(2)上述程序若要输出xy,则a、b、c的初值应为多少?
&解:程序中a值为循环次数,输出几个字母,a值就取几。
(1)为了输出yyx,应有a=3,从switch中看到,i值是渐增的,先要输出y,后输出x,所以只能执行case 2子句,故b=2;另外,为了输出yyx,应使c+i(0)&5、c+i(1)&5、c+i(2)&=5正好满足,这样c=3。
(2)为了输出xy,应有a=2,x在前y在后,b=1;为了输出xy,故应使c+i(0)&=5、c+i(1)&5正好满足,这样c=5。
【例3-2-51】说明以下两个程序段的不同点。
int i,n=0;
for (i=0;i&10;i++)
&&& if (i&5)
printf(&i=%d,n=%d\n&,i,n);
int i=0,n=0;
while (i&10)
&&& if (i&5)
printf(&i=%d,n=%d\n&,i,n);
&解:表面上看这两个程序段的功能是相同的,只是将程序段1中的for语句用相应的while语句替换。的确,如果其中没有continue语句或将continue改为break语句,这两段程序的功能是相同的。但continue语句的功能是退出本次执行的循环体,重新开始下一次,对于for循环,&表达式3&不包含在循环体中,所以在下次循环之前执行&表达式3&,而while循环不包含&表达式3&。
对于程序段1,执行for语句,当i=6时,满足if条件,执行continue语句,执行i++,i值为7,执行下一次循环,如此直到&表达式2&即i&10不再满足,此时i=10,n=10。
对于程序段2,执行while语句,当i=6时,满足if条件,执行continue语句,i值仍为6,执行下一次循环,满足if条件,执行continue语句,i值仍为6,执行下一次循环,&,如此形成了死循环。
为了使程序段2与程序段1功能等价,只需将与for语句&表达式3&对应的语句放在continue语句之前执行即可。即改为:
while (i&10)
&&& if (i&5)
printf(&i=%d,n=%d\n&,i,n);
【例3-2-52】有如下程序段:
scanf(&%d%d&,&x,&y);
{&& x*=1.8;
} while (y-x&=10);
将上述do-while结构的程序段改写为:
(1)while结构;
(2)for结构。
&解:(1)对应的while结构如下:
scanf(&%d%d&,&x,&y);
while (y-x&=10)
{&& x*=1.8;
(2)对应的for结构如下:
scanf(&%d%d&,&x,&y);
for (x*=1.8,y/=3;y-x&=10;x*=1.8,y/=3);
从解题结果看到,for循环结构代码最紧缩,即最节省代码。
5. 程序设计题
【例3-2-53】编写一个程序将十进制整数n转换成二进制数,要求从低位到高位输出二进制数的各位。
&解:采用除2留余法进行数制转换。对应的程序如下:
#include &stdio.h&
void main()
{& &int n,i=0;
&&& printf(&n=&);
&&& scanf(&%d&,&n);
&&& printf(&对应的二进制数:&);/*从低位到高位输出二进制数的各位*/
&&& while (n!=0)
&&& {&& printf(&%d &,n%2);
&&&&&&& i++;
&&&&&&& n=n/2;
&&& printf(&\n&);
本程序的一次执行结果如下:
对应的二进制数:0 0 1 1
【例3-2-54】编写一个程序,输入若干个整数,以-1标记输入结束,输出其中的最大数和最小数。
&解:采用一个while循环接收用户输入,用break退出循环。第一次输入时,将该数赋给max和min,对以后输入的数进行比较,将较大的赋给max,较小的赋给min。这样只需对数组扫描一趟即可求出其中的最大数和最小数。对应的程序如下:
#include &stdio.h&
void main()
{&& int n,min,max,first=1;
&&& printf(&输入数序:&);
&&& while (1)
&&& {&& scanf(&%d&,&n);
&&&&&&& if (n==-1)&&& /*输入-1表示结束*/
&&&&&&& if (first)&&&&&&&&&&& /*输入第一个有效数*/
&&&&&&& {&& first=0;
&&&&&&&&&&& min=max=n;
&&&&&&& else&&&&&&&&&&&&&&& &&& /*输入其他有效数*/
&&&&&&& {&& if (max&n) max=n;
&&&&&&&&&&& else if (n&min) min=n;
&&& if (!first) printf(&Max=%d,Min=%d\n&,max,min);
&&& else printf(&没有输入任何有效数\n&);
【例3-2-55】编写一个程序,输出菱形图案,第一行为一个字母A,第二行为三个字母B,依此类推,第n行为2n-1个相应的字母,以后每行递减。n由键盘输入。
&解:使用for循环实现本题功能,外层for循环每输出一行执行一次。对于每输出的一行,先用for输出相应的空格,即进行输出定位,然后,用for循环输出相应个数的字母。其中用c标记每行要输出的字母,初值为'A',每输出一行,c增1,从而改变输出的字母,以便依次取'A'、'B'、'C'等。对应的程序如下:
#include &stdio.h&
void main()
&&& int i,j,k,n;
&&& printf(&输入n:&);
&&& scanf(&%d&,&n);
&&& printf(&对应的菱形图\n&);
&&& c='A';
&&& for (k=1-n;k&=n-1;k++)
&&& {&& i=n-abs(k);&&&&&&&&&&&&&&& /*调用内部函数abs(k)求k的绝对值*/
&&&&&&& for (j=1;j&=n-i+1;j++)& & /*输出行定位*/
&&&&&&&&&&& printf(& &);
&&&&&&& for (j=1;j&=2*i-1;j++)& & /*输出字母*/
&&&&&&&&&&& printf(&%c&,c);
&&&&&&& printf(&\n&);
&&&&&&& c++;&&&&&&&&&&&&&&&&&&& &&&& /*取下一个字母*/
当用户输入n为5时,其输出结果如图3.10
【例3-2-56】编写一个程序,对输入的正整数n,输出{0,1,&,n-1}的所有子集。例如,输入3时,输出如下:
{},{0},{1},{0,1},{2},{0,2},{1,2},{0,1,2}
&解:当n=3时子集与序号之间的关系如表3.1所示,对于序号i,将其转换成二进制数abc,若c为1对应子集元素为0,若b为1对应子集元素为1,若a为1对应子集元素为2。对应的程序如下:
表3.1 &子集与序号之间的关系
对应的二进制数
#include &stdio.h&
void main()
{ &&int n,m,i,j,k;
&&& printf(&n:&);
&&& scanf(&%d&,&n);
&&& for (i=1;i&=n;i++)&&& &&& /*计算m,使m=2n*/
&&&&&&& m=m*2;&&&&&&&&&&&
&&& m--;&&&&&&&& &&&&&&&&&&&&& /*m=2n-1*/
&&& for (i=0;i&=m;i++) &&&&& /*求每个集合的元素*/
&&& {&& printf(&{ &);
&&&&&&& j=i;
&&&&&&& k=0;&&&&&&&&&&& &&&&&& /*k为对应的数字,从0开始,至多为n-1*/
&&&&&&& while (j!=0)&&& &&&&& /*将i采用辗转相除法从低位到高位转换成二进制数*/
&&&&&&&&&&& if (j%2==) printf(&%d &,k); & /*求出位的数字j,若为1输出对应的k*/
&&&&&&&&&&& k++;
&&&&&&&&&&& j/=2;
&&&&&&& printf(&} &);
&&&&&&& if ((i+1)%5==0) printf(&\n&); &&& /*每行输出5个集合*/
&&& printf(&\n&);
【例3-2-57】编写一个程序,利用公式e=1++++&+求出e的近似值,其中n由用户输入。
&解:采用for循环求各项的值,并进行累加。在求n!时,由于前一项已求出temp=(n-1)!,没有必要从1到n相乘来求n!,只需将temp乘以n即可求出n!。对应的程序如下:
#include &stdio.h&
void main()
{& &int i,j,n;
&&& double e=1,temp=1;
&&& printf(&n:&);
&&& scanf(&%d&,&n);
&&& for (i=1;i&=n;i++)
&&& {&& temp*=i;&&&&&&&&&&& /*temp=i!*/
&&&&&&& e+=1/(double)
&&& printf(&e=%f\n&,e);
【例3-2-58】编写一个程序,求分数序列、、、、、、&的前50项之和。
&解:用s累加各项之和,当前项为,对于第一项,x=1,y=2;对于第二项,x=原来的y,y=原来的x+原来的y;如此推移下去。对应的程序如下:
#include &stdio.h&
void main()
{&& int x,y,n,i,
&&& double s=0;
&&& printf(&n:&);
&&& scanf(&%d&,&n);
&&& for (i=1;i&=n;i++)
&&& {&& s+=(double)y/x;
&&&&&& &temp=x;
&&&&&& &x=y;
&&&&&&& y=temp+y;
&&& printf(&s=%f\n&,s);
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。

我要回帖

更多关于 10.6.8 的文章

 

随机推荐