C语言while、do-while、for循环课程5
课程3中,提到C语言基本语句分为:数据定义语句,数据处理语句
数据处理语句又可分为:表达式语句,函数调用语句,空语句(;,复合语句,流程控制语句。
流程控制:指程序代码执行的顺序。流程的分类:顺序、选择、循环。
C语言的循环结构通过三种语句来实现,即while、do-while、forWhile语句的一般形式while(循环条件表达式循环体语句;
功能:当循环条件表达式为真,执行循环体语句,执行完了,再判断条件表达式是否为真,为真,则再执行,直到条件表达式为假时,退出while循环。
实例1:用while语句求1~100的累加和。
#include//C语言编译预处理命令,文件包含为stdio.h
voidmain(//至少有一个用main(命名的主函数,返回值为void无值类型{
inti=1,sum=0;/*初始化循环,定义变量i和累加器sum,定义和之前,累加器清零*/
while(i<=100
{
sum+=i;//sum+=i是一个复合赋值运算符,等价于sun=sun+i;i++;
}
printf("1+2+3+...+100=%d ",sum;//输出十进制数,1加到100累加器的和}
MicrosoftVisualC++6.0运行结果
使用while循环时,一定要对循环条件表达式中出现的变量提前赋值,并在循环体内修改有关变量的值,以使循环能趋于终止。
While循环为当型循环,do-while循环也叫直到型循环。
do-while语句的一般形式为:
do
{
循环体语句}while(
循环条件表达式
实例2:用do-while编制一个求n!的程序,n的值由键盘输入。
#include
voidmain(
{inti=1,n,p=1;
printf("请从键盘输入一个数,进行连乘积: ";
scanf("%d",&n;
do
{p=p*i;
i++;
}while(i<=n;
printf("连乘积的结果为p=n!:%d ",p;
}
分析:此程序,先定义三个变量i、n、p,p从p乘1开始执行,再i进行自增1,循环体中的语句执行完毕后,判断while的循环条件表达式,当i自增1为2时,看2是否<=输入的n值,若为真,则继续返回do循环,直到i自增的值比n大,则退出循环。
do-while主要用于人机交互,do-while循环是先执行后判断,do里面的循环体至少被执行一次。区别于while是先判断循环条件表达式,后执行。
for循环也叫步长型循环
一般格式:for(表达式1;表达式2;表达式3循环体语句;
功能:先执行表达式1,再执行表达式2,如果表达式2的值为真,就执行循环体语句,最后执行表达式3.完成一次循环后,从表达式2执行,直到表达式2为假,退出循环。
实例3:参考实例1,用while求1~100的累加和,现在用for语句求1~100的累
加和。
#include
intmain(void
{
inti;intsum=0;
/*初始化循环,定义变量i
和累加器sum,定义和之前,累加器清零*/
for(i=1;i<=100;i++
{
sum=sum+i;
}
printf("sum=%d ",sum;
return0;
}
实例4:爱因斯坦的`阶梯问题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶。编写一个C程序解决该问题。
#include
main(
{intx;
for(x=7;;x+=7
if(x%3==2&&x%5==4&&x%6==5
break;
printf("Thenumberoftheladdersis:%d ",x;
}
分析:发现x一定是7的整数倍,可以依次递增地求出7的整数倍的值(7*1、7*2、7*3……),每求出一值,就用该值与2、3、5、6进行取模运算,最先得到的满足上述5个方程式的x值即为本题的答案。
用while语句,简单快速实现爱因斯坦的阶梯问题
#include
intmain(
{
inti=1;/*i为所设的阶梯数*/
while(!((i%2==1&&(i%3==2&&(i%5==4&&(i%6==5&&(i%7==0
++i;/*满足一组同余式的判别*/
花木兰告别父母不远万里来到了边塞参加战争,由于屡建战功,不久便当上了将军。
九月二十日刚刚吃了败仗的胡人心中充满怒气,于九月二十三日集结了二十万重兵对边塞的花木兰部实施大规模的进攻,欲报上次战败之仇。这件事花木兰早已通过潜伏在敌营的我部兄弟了解得一清二楚,花木兰仔细观察过地形之后命八万人马埋伏在峡谷两侧,将士们准备好了若干巨石和千万箭支准备与胡人开战。这是一场大战!
九月二十六日,果然如木兰所料,胡人的二十万大军正快速地穿过大峡谷。待大队人马全部进入峡谷之后,先头部队未出峡谷之前,随着木兰大喝一声:“放!”,所有的巨石被推入峡谷,有的砸死了敌人,有的则堆在一起,完全封死了出路和退路,这时胡人在崖下慌了阵脚。正当胡人惊慌之际,花木兰部的士兵统统放箭,顿时八万多支羽箭遮住了太阳,密密麻麻。崖下惨叫声一片有一片,几刻钟过去了,现崖下已是血流成河,胡人的二十万人马死伤过半。
按原计划,由四万多人组成的第一冲锋队,举起长矛,舞起长剑,口中大喊:“***呀!”一起冲入峡谷与胡人残部展开激烈的厮***,我部将士个个骁勇善战,但胡人的士兵也很是勇猛。半个时辰过后,我部伤亡惨重,四万多人顿时只剩下两万有余。胡人的军队首领武艺高强,身穿铠甲,手持大钢刀,一连***死了我军上百人,更让人惊异的是:二十多人将他围住,不出三十秒竟全被他打倒在地。花木兰一看,心中气愤得很。在崖上的她一把夺过弓箭手的弓,从箭筒中拿出三只羽箭,狠狠地拉开弓弦,将三支箭射出,欲把其射***。不料,三支箭其中的两支被他挡开,但有一支射中他的.腿部,剧剧烈疼痛让他跪倒在地,下面的众将士见胡人将军中箭,十余把矛头刺向他,顿时,那个胡人将军身受矛头穿心,口吐鲜血而死。
花木兰见将军已死,于是她就想出了一个办法,他命崖上四万人马齐声大喊:“胡寇,你们的将军已死,快快缴械投降!”谁知,下面的胡人竟毫不在意,仍然在死拼。木兰见状,亲自率领其余四万人马开始第二次冲锋,木兰手持方天画戟,胯下乃汗血宝马,木兰第一个冲到崖下,挥舞着长戟,向着胡人刺去。十几个胡人都奈何不了她,真有一种佛挡***佛的气势。木兰骑着马穿梭于众军之中见一个***一个,这时大部分胡人都已被奸,只剩下几十人,他们纷纷丢下武器,抱头逃窜,木兰骑马去追他们,当他们逃到尽头,出口在已被封死,那十几人都被花木兰斩***。
经过五个时辰的激战,花木兰部终于全歼胡人二十余万人马,又一次建立奇功!
早晨,木兰却不同往常那样叫醒爹娘,而是要做一件危险的事情——代父从军,若到军营,一不谨慎,暴露他的姑娘身份,那可是要***头的啊,不过木兰不怕,一个女子怎能被死亡屈服,她穿上铠甲,骑着骏马,悄无声息地离开了自己的爹娘,这时他只是在想:爹娘再见,我走了,带战争和平,我还会回来,咱们一起团圆,爹娘您一定等我回来。木兰从白天开始赶路,到了夜晚,就住在黄河边上,这是黄河正淘淘不绝地流动着,河水的激流声响很大,木兰已经听不到爹娘的呼唤她的声音,他只能在那黄河边上思念着家人了,他在想:不知道爹娘怎么样了,他们一定还想着我,待战争平息,我就来看您。第二天清早,太阳已经从东边出现之时,木兰就整理好行装,骑上自己心爱的骏马,继续沿着道路前进奔赴,悄无声息地离开了黄河,在这通往战场的路上,木兰坚信:路过战争不平息,他就永远不会回到自己的家乡。又从白天赶至黑夜,又是一个路程,当他赶到黑山头上时,天已经黑了,今夜只能在这黑山头上宿营,这时黑山头上刮来一阵阵狂风,而仔细听,则是来自于燕山脚下胡人的战马正在嘶鸣着,木兰闻声后,心想:看来胡人都已经开始有所行动了,事不宜迟,得加快脚步了。第三天,木兰就早早驾着马像飞一样跨越山岭,跋涉万里来到战场,谨慎地同其他士兵一起与胡人战斗。
1.以下正确的说法是()。
A.用户调用标准库函数前,必须重新定义
B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C.系统不允许用户重新定义标准库函数
D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中答案:B
2.do语句能够改写为()语句。
A.复合
B.if
C.switch
D.while
答案:D
3.循环语句“for(inti=0;i<n;i++cout<<i*i<<’’;”中循环体执行的次数为()。
A.1
B.n-1
C.n
D.n+1
答案:C
4.在下面循环语句中循环体执行的次数为()。for(inti=0;i<n;i++if(i>n/2break;
A.n/2
B.n/2+1
C.n/2-1
D.n-1
答案:B
5.下列适宜采用inline定义函数情况是()。
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
答案:C
6.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。
A.int*p=newint[30];
B.int*p=newint(30;
C.int*p=new[30];
D.*p=newint[30];
答案:A
7.将两个字符串连接起来组成一个字符串时,选用()函数。
A.strlen(
B.strcap(
C.strcat(
D.strcmp(
答案:C
8.switch语句能够改写为()语句。
A.for
B.if
C.do
D.while
答案:B
9.关于void指针,下列说法正确的是()。
A.void指针就是不能指向任何数据的指针
B.void指针就是已定义而未初始化的指针
C.指向任何类型数据的指针可直接赋值给一个void指针
D.void指针值可直接赋给一个非void指针
答案:C
10.循环while(inti=0i--;执行次数是()。
A.0
B.1
C.5
D.6
答案:A
11.预处理命令在程序中都是以()符号开头的。
A.*
B.#
C.&
D.@
答案:B
12.以下能正确地定义整型变量a,b和c,并为其赋初值5的语句是()。
A.inta=b=c=5;
B.inta,b,c=5;
C.a=5,b=5,c=5;
D.a=b=c=5;
答案:A
13.若有说明语句:charc='72'则变量c()。
A.包含1个字符
B.包含2个字符
C.包含3个字符
D.说明不合法,c的值不确定
答案:A
14.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORD
B.a3_b3_123YN
C.for-abcCase
D.2aDOsizeof
答案:B
15.以下标识符中不全是保留字的是()。
A.caseforint
B.defathenwhile
C.boolclasslong
D.gotoreturnchar
答案:B
16.下列变量名中,()是合法的。
A.Forest
B.byte-size
C.double
D.A+a
答案:A
17.函数调用func((exp1,exp2,(exp3,exp4,exp5中所含实参的个数为()个。
A.1
B.2
C.4
D.5
答案:B
18.this指针存在的目的是()。
A.保证基类私有成员在子类中可以被访问
B.保证基类保护成员在子类中可以被访问
C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
D.保证基类公有成员在子类中可以被访问
答案:C
19.定义类的动态对象数组时,系统只能够自动调用该类的()对其进行初始化。
A.友员
B.析构函数
C.无参构造函数
D.类成员
答案:C
20.对两个数组a和b进行如下初始化:chara[]="ABCDEF";charb[]={‘A’,‘B’,‘C’,‘D’
A.a和b数组完全相同
B.a和b中都存放字符串
C.sizeof(a比sizeof(b大
D.sizeof(a与sizeof(b相同
答案:C
21.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A.N+1
B.N
C.(N+1/2
D.N/2
答案:B
22.二维数组在内存中的存放顺序是()。
A.按行存放
B.按列存放
C.由用户自己定义
D.由编译器决定
答案:A
23.假如指针p已经指向某个整型变量x,则(*p++相当于()。
A.x++
B.p++
C.*(p++
D.&x++
答案:A
24.如有数组intnum[5]={12,13,14,15,16};则num[0]的值为()。
A.12
B.13
C.14
D.15
答案:A
25.若p1、p2都是指向整型的指针,p1已经指向变量x,要使p2也指向x,正确的是()。
A.p2=p1;
B.p2=**p1;
C.p2=&p1;
D.p2=*p1;
答案:A
26.有语句inta[10]={10,9,8,7,6,5,4,3,2,1},*p=a;则数值为2的表达式是()。
A.a[9]
B.*p[8]
C.*(a+8)
D.p+8
答案:C
27.在C++中,访问一个指针所指向的对象的成员所用的指向运算符是()。
A.*
B.<<
C.->
D.=
答案:C
28.在面向对象的程序设计中,将一组对象的共同特性抽象出来形成()。
A.对象
B.实例
C.类
D.数组
答案:C
29.在用C++进行程序设计时,最好用()代替malloc。
A.new
B.
C.指针
D.循环
答案:A
30.不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为()。
A.继承
B.访问控制
C.派生
D.多态性
答案:D
31.若定义了函数double*function(,则函数function的返回值为()。
A.实数型
B.实数的地址
C.指向函数的指针
D.函数的地址
答案:B
32.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就
A.类
B.对象
马笼头、马鞭,忙乎了好一阵子,备齐了战装,然后辞别父母,女扮男装头也不回地走了。早晨辞别了父母,晚上花木兰宿在了黄河边,她听不到爹娘呼唤女儿的声音,听到的只是黄河流水的“哗哗”声。
第二天早上,她辞别了黄河,晚上又宿在黑山头。
经过了十几天的长途跋涉后,花木兰最终来到了燕山脚下,她听到胡人兵马的嘶鸣声。花木兰发誓:为了父母,为了国家,自己一定要全力以赴,战胜敌人!
“***啊———”战场上炮火连天,马的嘶鸣声、战士们的呼喊声、如雷鸣般的马蹄声以及刀、剑撞击的“口当口当”声响彻整个大地,黄沙满天,血流成河,战场上敌人的尸体横七竖八地摆了一地,许多战士们都受了伤。已提升为将军的花木兰率领大兵冲向前去。寒风阵阵传来刁斗声,明亮的月儿映照在铁甲衣上,许多将士身经百战,为祖国而死。经过十余载的战斗,壮士们终于凯旋而归了。
叹息声一声接着一声传出,木兰对着房门织布。听不见织布机织布的声音,只听见木兰在叹息。问木兰在想什么?问木兰在惦记什么?(木兰答道)我也没有在想什么,也没有在惦记什么。昨天晚上看见征兵文书,知道君主在大规模征兵,那么多卷征兵文册,每一卷上都有父亲的名字。父亲没有大儿子,木兰(我)没有兄长,木兰愿意为此到集市上去买马鞍和马匹,就开始替代父亲去征战。
在集市各处购买马具。第二天早晨离开父母,晚上宿营在黄河边,听不见父母呼唤女儿的声音,只能听到黄河水流水声。第二天早晨离开黄河上路,晚上到达黑山头,听不见父母呼唤女儿的声音,只能听到燕山胡兵战马的啾啾的鸣叫声。
不远万里奔赴战场,翻越重重山峰就像飞起来那样迅速。北方的寒气中传来打更声,月光映照着战士们的.铠甲。将士们身经百战,有的为国捐躯,有的转战多年胜利归来。
胜利归来朝见天子,天子坐在殿堂(论功行赏)。给木兰记很大的功勋,得到的赏赐有千百金还有余。天子问木兰有什么要求,木兰说不愿做尚书郎,希望骑上千里马,回到故乡。
父母听说女儿回来了,互相搀扶着到城外迎接她;姐姐听说妹妹回来了,对着门户梳妆打扮起来;弟弟听说姐姐回来了,忙着霍霍地磨刀***猪宰羊。每间房都打开了门进去看看,脱去打仗时穿的战袍,穿上以前女孩子的衣裳,当着窗子、对着镜子整理漂亮的头发,对着镜子在面部贴上装饰物。走出去看一起打仗的伙伴,伙伴们很吃惊,(都说我们)同行数年之久,竟然不知木兰是女孩。
(提着兔子耳朵悬在半空中时)雄兔两只前脚时时动弹、雌兔两只眼睛时常眯着,所以容易分辨。雄雌两兔一起并排跑,怎能分辨哪个是雄兔哪个是雌兔呢?
© 2022 xuexicn.net,All Rights Reserved.