C语言习题顺序选择循环_第1页
C语言习题顺序选择循环_第2页
C语言习题顺序选择循环_第3页
C语言习题顺序选择循环_第4页
C语言习题顺序选择循环_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

次序构造程序设计重点导读( )与scanf( )语句。printf( )与scanf( )语句是最通用的输入输出函数,它们能够在程序设计者的控制下以各样格式分别实现数据的输出和输入操作。它们位于库文件中。字符数据的输入输出。最简单的字符输入输出函数是getchar( )和putchar( )。二者分别从键盘读一个字符或向显示屏写一个字符。经典例题分析1.以下程序运转后输出的结果是。#include<>voidmain( ){inta=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);}分析:printf( )是输出函数,它的括号内由两部分构成:1)控制字符串,是用双引号括起来的字符串,它包含两种信息:格式说明。由”%”和格式字符构成,如:%d、%f、%c等。它的作用是将输出的数据变换成指定的格式输出。一般字符。需要原样输出的字符。2)”输出表列”是需要输出的一些数据,能够是表达式。题目中a的值是10,b的值是20,在printf(“a+b=%d”,a+b);格式说明输出表列中,”a+b=“是一般字符,需原样输出。输出表列是一个表达式,它的结果以整型输出。答案:a+b=30。2.以下程序运转后输出的结果是

。#include<>voidmain( ){inta=732;printf(“%d\n”,a);printf(“%2d\n”,a);printf(“%10d\n”,a);printf(“%-10d\n”,a);}分析:d格式符,用来输出十进制整数。此中为指定的输出字段的宽度。假如数据的位数小于位数输出。

%d,按整型数据的实质长度输出。%md,mm,则左端补以空格,若大于m,则按实质printf(“%d\n”,a);把a的值按原样输出:732。printf(“%2d\n”,a);结果占2列,但732占3列大于2列,所以按实质位数输出:732。printf(%10d\n”,a);结果占10列,但732占3列小于10列,所以左端补7个空格。printf(“%-10d\n”,a);结果占10列,“-”表示把数值放到左端,732占3列小于10列,所以右端补7个空格。答案:732732□□□□□□□732

/*

□表示空格

*/732□□□□□□□3.已知

chara=

103’;则语句

printf(

“%3d”,a);

履行后的输出结果为(□表示空格)。A)□67

B)’c’

C)67□

D)103分析:’\103’是一个转义字符,表示一个八进制数所代表的字符,变换为十进制为67。printf(“%3d”,a);把’\103’变换为十进制数输出,结果占3列。但67占于要求的3列,所以左补空格,即□67。答案:C。

2列,小4.以下程序运转后结果是

。#include<>#defineavoidmain( ){printf(“%f\n”,a);printf(“%e\n”,a);printf(“%4.2f\n”,a);printf(“%3.1f\n”,a);printf(“%10.3f\n”,a);printf(“%n”,a);}分析:f格式符,用来输出实数,以小数形式输出,小数点后输出6位。所以printf(“%f\n”,a);输出结果为。%是指,要输出的数占m列,同时小数点保存n位(四舍五入),假如输出的数大于m,则原样输出,同时小数点保存n位(四舍五入)。假如小于m,则左补空格,同时小数点保留n位(四舍五入)。printf(“%4.2f\n”,a);输出结果为。printf(“%3.1f\n”,a);输出结果为。e格式符,以规范化指数的形式输出,所以printf(“%e\n”,a);+03。答案:+03□□/*(□表示空格)*/□□5.以下程序运转后结果是

。#include<>voidmain( ){charx=0x227f;printf(“%d\n”,x);}A)22

B)127

C)255

D)8831分析:变量x被定义成字符型,字符型占值22ff,占16位。所以227f高8位被舍去,

1个字节,而x被赋值为一个x的值为7fH。履行printf(

4位16进制的“%d\n”,x);即把x以有符号的十进制整数输出。答案:B。6.设intb=0;以下语句的输出结果是。printf(“%d,%d”,++b,b--);A)1,1B)1,0C)0,0D)0,-1分析:printf函数的履行次序是由右到左,输出次序是由左向右。答案:C。7.以下程序运转时,若从键盘输入:123<回车>45678<回车>后结果是。#include<>voidmain( ){charc1,c2,c3,c4,c5,c6;scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4);c5=getchar( );c6=getchar( );putchar(c1);putchar(c2);printf(“%c%c\n”,c5,c6);}分析:scanf(格式控制,地点表列)的功能是:从键盘读取输入的信息。此中”格式控制”的含义同printf函数;”地点表列”是由若干个地点构成的表列,能够是变量的地点,或字符串的首地点。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:依据c1,c2,c3,c4在内存的地点将c1,c2,c3,c4的值存进去。因为”%c”表示按字符形式输入数据,所以”回车符”作为一个字符,输入有效。getchar( )函数的作用从终端输入一个字符。putchar( )函数的作用是向终端输出一个字符。所以c1=1、c2=2、c3=3、c4=回车,c5=4、c6=5。答案:1245。8.设有定义

inta;floatb;

履行

scanf(“%2d%f”,&a,&b);

语句时,若从键盘输入

876<回车>,a和

b的值分别是

。分析:scanf( )能够指定输入数据所占的列数,系统自动按它截取所需数据。%2d说明了a占两列,即为87,剩下的数字应当赋给b,可是6和5之间有一个空格,为输入停止符,所以被舍弃,即b的值为6。答案:876。9.已知1,b

a,b,c为int种类,履行scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为2,c为3,则以下选项中正确的输入形式是( )。

后,若要使得

a为A)1,2,3

B)a=1,b=2,c=3

C)123

D)a=1b=2c=3分析:scanf中假如在字符控制串中除了格式说明符之外还有其余字符,则在输入数据时应输入与这些同样的字符。答案:B。10.设有

intx,y;scanf(

“%d%*d%d”,&x,&y);

从键盘输入数据

10□20□30<回车

>后,y

的值是

。分析:%*d表示跳过。所以

y的值是

30。答案:30。习题一、选择题1.设

a、b、c

为整型变量,若从键盘给

a、b、c

输入数据,则正确的输入语句是

。A)scanf(C)scanf(

“%f%f%f”,&a,&b,&c);“%d%d%d”,a,b,c);

B)scanf(D)scanf(

“%d%d%d”,&a,&b,&c);“%d%d%d”,&a;&b;&c);2.以下程序履行后输出的结果是

。#include<>voidmain( ){intx=

‘d’;printf(

“%c”,’A’+(x-

’a’+1));}A)G

B)H

C)E

D)J3.设整型变量

a,b

的值均为

8。printf(

“%d,%d”,(a++,++b),b

--);

的输出值是。A)8,8

B)8,7

C)9,9

D)8,94.如有以下程序段,履行后输出的结果是。intm=100,n=0100;printf(“%d,%o\n”,m,n);A)100,100B)100,0100C)100,4D)100,045.有以下程序,其输出结果是。#include<>voidmain( ){floatx=1;inty;x++;y=x+1;printf(“x=%d,y=%f”,x,y);}A)x=2,y=3

B)x=2,y=3.0

C)x=,y=3

D)x=0,y=6.有以下程序,其输出结果是

。#include<>voidmain( ){inta;charc=10;floatf=;doublex;a=f/=c*=(x=;printf(

“%d,%d,%3.1f,%3.1f

”,a,c,f,x);}A)1,65,1,

B)1,65,,6.5

C)1,65,,

D)2,65,,二、填空题1.以下程序输出的结果是

。#include<>voidmain( ){intx=7,y=5;printf(“

n”,x%y);}2.以下程序输出的结果是

。#include<>voidmain( ){floatd,f;longk;inti;i=f=k=d=20/3;printf(“%3d%3ld%5.2f%5.2f\n”,i,k,f,d);}3.以下程序输出的结果是:。#include<>voidmain( ){intk=11;printf(“k=%d,k8=%o,k16=%x\n”,k,k,k);}4.以下程序输出结果是:。#include<>#defineBL“main( ){printf(“%2sn”,BL);printf(“%15sn”,BL);printf(“%n”,BL);printf(“%n”,BL);}5.若想经过以下输入语句使a=,b=4,c=3,则输入数据形式应当是。intb,c;floata;scanf(“%f,%d,c=%d”,&a,&b,&c);6.当输入为56789012345a72时,履行以下程序段后,变量i、j、x、y、c的值各是什么?inti,j;floatx,y;charc;scanf(“%2d%f%f%c%d”,&i,&x,&y,&c,&j);三、编程题1.已知x=,y=7,z=2,计算y/3*x-2的值。2.输入一个华氏温度,要求输出摄氏温度(结果保存2位)。公式为c=5/9*(f-32)。从键盘输入一个小写字母,用大写形式输出该字母。把16进制数12a以10进制形式输出。输入两个整数,将其值互换。本节易错知识点本节论述了printf( )、scanf( )、putchar( )和getchar( )的详细用法。关于scanf( )的用法应注意以下几点:假如在字符控制串中除了格式说明符之外还有其余字符,则在输入数据时应输入与这些字符同样的字符。比方:scaf(“%d,%d”,&a,&b);输入时用以下形式:5,6此处5后边是逗号,它与scanf( )函数字符控制串中的逗号对应。输入时只好输入逗号,不行用”空格”代替。2)用%c格式输入字符时,空格、回车及转义字符均作为有效字符输入。比方:scanf(若要使变量a,b,c

“%c%c%c”,&a,&b,&c);的值分别为’A’、’B’、’

C’,就只好输入

ABC<回车>。当使用多个scanf( )函数连续给多个字符型变量赋值时,注意输入的方法。比方:scanf(“%c”,&c1);scanf(“%c”,&c2);假如要使得c1的值为’a’,c2的值为’b’,则正确输入方法为:ab<回车>,而不是a<回车>b<回车>。碰到满足最大字段宽度或非法输入时认为结束,如:”%2d”,只取两位数。如:scanf(“%d%c%f”,&a,&b,&c);若输入:1234a则a的值1234,b的值a,c的值56。实验指导实验名称次序构造程序设计一、实验目的掌握数据的输入输出的方法,能正确使用相关格式变换符;熟习次序构造程序中语句的履行过程;掌握次序构造程序的设计方法二、实验内容与要求1.以下程序作用是挨次输入

2个整数,计算并输出这

2个整数之差。#include<>voidmain( ){floata,b,c;printf(“inputa,b”\n”);scanf(“%d,%d”,&a,&b);c=a-b;printf(“c=%d\n”,c);}①分析程序,若运转时输入:100,60<回车>后预期结果是多少?②上机运转该程序,查察程序运转结果能否符合题目要求。假如不符合分析原由并改正程序,直至符合要求为止。按以下公式计算并输出s的值,s=3/(a+b)2。有以下程序:#include<>voidmain( ){inta,b;floats;scanf(“%d,%d”,&a,&b);s=3/(a+b)*(a+b);printf(“s=%f\n”,s);

/*

有两个错误

*/}①依据题意改正上述程序,并进行调试,直到正确为止。②在①的基础上,将scanf(“%d,%d”,&a,&b);改为scanf(“%d%d”,&a,&b);后再编译、链接、运转。分析以下程序,写出预期结果,而后输入调试,查察运转结果与预期结果能否一致并分析其原由。#include""voidmain( ){inta=-1;unsignedb=65534;printf("%d,%o,%x,%u\n",a,a,a,a);printf("b=%d",b);}编程并上机调试运转设圆半径为r=,求圆周长和面积。要求用scanf函数输入数据,输出时取小数点后两位。输入一个3位十进制整数,分别输出百位、十位以及个位上的数。3)从键盘输入一个带2位的实数,将其整数部分和小数部分分别后输出。比方:输入,输出=321+。4)用getchar函数读入两个字符,而后分别用putchar和printf函数输出这两字符。选择构造程序设计重点导读关系运算符与关系表达式关系运算是逻辑运算中比较简单的一种。它的实质是两个值之间的”比较运算”,其结果只有两种:”真”、”假”。所以关系表达式的运算结果也只有两种:”真”、”假”。C语言供给6种关系运算符:>、<、>=、==和!=。在这里>、<、>=、优先级同样,==和!=优先级同样。前4种的优先级高于后二者。逻辑运算符与逻辑表达式逻辑运算符能够将多个关系表达式或逻辑量连结起来,构成逻辑表达式。C语言里供给了3种逻辑运算符:!、&&、||。不一样逻辑运算符进行运算所得的结果以下表:ab!a!ba&&ba|b真(非0)真(非0)假(0)假(0)真(1)真(1)真(非0)假(0)假(0)真(1)假(0)真(1)假(0)真(非0)真(1)假(0)假(0)真(1)假(0)假(0)真(1)真(1)假(0)假(0)在C语言中,关系表达式与逻辑表达式的结果用数据值“1”表示真、“0”表示假。判断一个表达式时,非“0”即为真、“0”为假。语句的三种基本形式用if语句能够构成选择构造。它判断给定的条件能否满足,以决定履行某个分支程序段。C语言的if语句有三种基本的实现形式:if、if-else和if-elseif形式。语句C语言供给了另一种用于多分支选择的switch语句,其一般形式为:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1}其表达式应为整型、字符型、列举型表达式。它的语意是:计算表达式的值,并挨次与此后的常量表达式值对比较,当表达式的值与某个常量表达式的值相等时,即履行此后的语句。假如表达式与所有的case后的常量表达式均不同样时,则履行default后的语句。经典例题分析1.如有

inti;

则履行语句

i=4>3>2;

后,i

的值为

。分析:这是一个关系表达式,在这个表达式中有’>‘和’=‘,可知’>‘的优先级高于’=‘,且’>‘的联合性是→,所以,先判断4>3,明显是为真的,即表达式的值为1。再判断1能否大于2,明显不建立为假,即为0,而后把0赋给i,所以i的值为0。答案:0。2.若变量

c为

char

种类,以下选项中能正确判断出

c为数字字符的表达式是

。A)’0’<=c<=‘9’

B)c>=‘0’&&c<=‘9’

C)c>=0&&c<=9’

D)c>=‘0’&c<=‘9’分析:在C语言中要表达在’0’~’9’之间,所以应为:答案:D。

a>b>c应当这样写a>b&&b>c,因为c>=‘0’&&c<=‘9’。

c为数字字符,应3.已知

intx=1,y=2,z=3;

则逻辑表达式

x<y||++z

运算后,

z的值是

。分析:C语言在计算逻辑表达式时,假如在某一步已获得了整个表达式的结果,则后边的部分将不再计算。关于&&表达式,若已获得一个操作数为0,则后边的操作数不再计算。关于||表达式,若已获得一个操作数为1,则后边的操作数不再计算。此题中,1<2明显为真即为1,所以++z不需要再运算了,z的值没改变,还是为3。答案:3。4.以下程序运转的结果是:

。#include<>voidmain( ){charc=

‘d’;if(

‘m’<c<=‘z’)printf(

“YES”);elseprintf(

“NO”);}分析:这是if-else形式,格式为:if(表达式)语句1else语句2其语义是:假如表达式的值为真,则履行语句1,不然履行语句式’m’<c<=‘z’结果为真,所以履行printf(“YES”);

2。此题中,表达答案:YES。(表达式)语句,此中”表达式”

。A)一定是逻辑表达式

B)

一定是关系表达式C)一定是逻辑表达式和关系表达式D)能够是随意合法的表达式分析:表达式一般是关系表达式或逻辑表达式,用于描绘选择构造的条件,但也能够是其余种类的表达式,只需其合法,在其值非0时都视为真,所以其余表达式也能够做if语句的判断条件。答案:D。6.以下程序运转结果是:

。#include<>voidmain( ){inta=1;if(a)printf(elseprintf(

“YES”);“NO”);}分析:if(表达式)中的”表达式”能够是随意合法的,此题a的值为1,if(a)printf(“YES”);elseprintf(真(非0),假如为真则输出”YES”,不然输出”NO”。答案:YES。

其实质是判断表达式是真还是假。“NO”);的含义是判断a能否为语言关于嵌套的if语句规定else老是般配。A)与最外层的ifB)与以前近来的且未配对的ifC)与以前近来的不带else的ifD)与近来的{}以前的if分析:在C语言中,为了防范语句造成二义性,规定,else老是与它前面近来的未配对的if配对。答案:B。8.以下程序运转结果是:

。#include<>voidmain( ){intx=1,y=2,z=3;if(x<y)if(y<z)printf(“%d”,++z);elseprintf(“%d”,++y);printf(“%d\n”,x++);}分析:由if-else般配规则可知,不建立,履行printf(“%d”,++y);y<z很明显x<y建立,接着判断y<zprintf(“%d\n”,++z);而后履行printf(

else与if(y<z)配对,也就是说当x<y建即刻,y<z建立,则履行printf(“%d”,++z);。因为x=1,y=2,能否建立,很明显是建立的,那么直接履行“%d\n”,x++);。419.如有定义:

floatx=;inta=1,b=3,c=2;

则正确的

switch

语句是

。A)switch(x)

B)switch((int)x);{

{}

case:printf(case:printf(

“*\n“**\n}

”);”);

case1:printf(case2:printf(

“*\n“**\n

”);”);C)switch(a+b)

D)switch(a+b){

{case1:printf(case2+1:printf(

“*\n”);“**\n”);

case1:printf(casec:printf(

“*\n“**\n

”);”);}

}分析:C语言供给了另一种用于多分支选择的switch(表达式)

switch

语句,其一般形式为:{casecase

常量表达式常量表达式

1:语句2:语句

12case常量表达式default:语句

n:语句n+1

n}表达式一般应为整型、字符型、列举型表达式。A选项中整型、字符型或列举型常量表达式;B选项switch((int)x);c:printf(“**\n”);中c是一个变量,应为一个常量表达式。

case后是浮点型,应为一个中多了分号,D选项case答案:C。10.以下程序履行后结果是

。#include<>voidmain( ){inta=16,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf(

“%d”,m);}分析:switch语句的意思为:计算表达式的值,并挨次与此后的常量表达式值对比较,当表达式的值与某个常量表达式的值相等时,即履行此后的语句。假如表达式与所有的后的常量表达式均不同样时,则履行default后的语句。break语句用于跳出switch此题a%3值为1,履行case1:m++;以及后边的语句。b%2值为1,履行default:m++;后边的语句。答案:3。

case语句。以及习题一、选择题1.以下程序段运转后结果是。inta,b,c;a=1;b=2;c=3;if(a>b)c=a;b=c;printf(“a=%d,b=%d,c=%d”,a,b,c);A)a=1,b=3,c=3

B)a=1,b=3,c=2

C)a=1,b=2,c=3

D)a=2,b=1,c=12.以下程序运转后的结果是

。#include<>voidmain( ){inta=1,b=2,c=3;if(a++==1&&(++b==3&&c++==3))printf(

“%d,%d,%d\n”,a,b,c);}A)1,2,3

B)2,3,5

C)2,2,3

D)2,3,43.与

y=(x>0?1:x<0?-1:0)的功能同样的A)if(x>0)y=1;elseif(x<0)y=-1;elsey=0;C)y=-1;if(x)if(x>0)y=1;elseif(x==0)y=0;elsey=-1;

if

语句是B)if(x)if(x>0)y=1;elseif(x<0)y=-1;D)y=0;if(x>=0)if(x>0)y=-1;elsey=-1;

。4.有以下程序,履行后结果是

。#include<>voidmain( ){inta=5,b=4,c=3,d=2;if(a>b>c)printf(“%d\n”,d);elseif((c-1)>=d)==1)printf(elseprintf(“%d\n”,d+2);

“%d\n”,d+1);}A)2

B)3

C)4

D)55.如有定义:

floatw;inta,b;charc;

则合法的

switch

语句是

。A)switch(b)

B)switch(a);{

{case:printf(case:printf(

“*\n“**\n

”);”);

case1printf(case2printf(

“*\n“**\n

”);”);}}C)switch(b){{case1:printf(case1+2:printf(}}

D)switch(w)“*\n”);case1:printf(“**\n”);casec:printf(

“*\n“**\n

”);”);6.以下程序运转后的结果是

。#include<>voidmain( ){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(

“%d,%d\n”,a,b);}A)2,1

B)1,1

C)1,0

D)2,2二、填空题1.能正确表述逻辑关系20<x<30或x<-100的C语言表达式是。2.设inta=0,b=0,c=0;c=a++&&b++;则a,b,c的值分别是。3.若从键盘输入58,则以下程序输出结果是。#include<>voidmain( ){inta;scanf(“%d”,&a);if(a>50)printf(“%d”,a);if(a<=58)printf(“%d”,a);if(a>=58)printf(“%d”,a);}4.以下程序运转后的结果是

。#include<>voidmain( ){intx=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf(“%d,%d\n”,x,y);}5.当inta=1,b=3,c=5,d=4;时,履行以下一段程序后,x的值:。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;6.以下程序运转后的结果是。#include<>voidmain( ){intx=1,y=0,a=1,b=0;switch(x){case1:switch(y){case0:a++;case1:b++;break;}case2:a++;b++;break;}printf(“a=%d,b=%d\n”,a,b);}三、编程题要求输入三个数,输出此中最大值。2.由键盘输入3个数,若输入的这3个数能够构成三角形,则计算以这3个数为边长的三角形周长;假如不可以,则输出提示错误信息。从键盘上输入一个整数判断其奇偶以及正负。判断方程ax2+bx+c=0的根的个数。5.从键盘输入表示年份的整数,判断能否为闰年。判断闰年的方法是:能被400整除的年是闰年;或许凡是能被4整除但不可以被100整除的年是闰年。本节易错知识点本节论述了逻辑表达式、if、if-else、if-else和switch语句的详细用法。1.在逻辑表达式运算中应注意,假如在某一步已获得了整个表达式结果,则后边的部分将不再计算。比方:c=b&&++a;假如这里b为0,那么++a将不再履行,仍为原值。在if语句中,应当注意if语句中的表达式能够为所有的合法的表达式。比方:inta=1;if(a=0)printf(“Yes”);elseprintf(“No”);3.在if语句3种形式中,假如要想在满足条件是履行一组语句,一定使用{}括起来一个复合语句,但在{}后边不可以加分号。4.在使用switch( )语句时应注意:在case后的各个常量表达式值都不可以同样;case后同意有多个语句,能够不用{}括起来;若每个分支后,都有break语句,则各case和default子句先后次序能够改动而不影响程序结果;default子句能够省略不用。实验指导实验名称选择构造程序设计一、实验目的学会正确使用关系运算符和关系表达式;学会正确使用逻辑运算符和逻辑表达式以及关系表达式等;娴熟掌握if语句和switch语句;熟习选择构造程序中的语句履行过程,掌握选择构造程序设计的方法。二、实验内容与要求编写程序,判断从键盘上输入的一个字符,并按以下要求输出。若该字符是数字,输出字符串”0-9”;若该字符是大写或许小写字母,输出字符串”A-z”;若该字符是其余字母,输出”!,@,”。#include<>voidmain( ){charc;scanf(

“%c”,&c);if(

)printf(

“0-9\n

”);elseif(

)printf(

“A-z”);printf(

“!,@,

\n”);}完美上述源程序,对源程序进行编译、连结,运转程序,并写出结果。序输入数据预期结果运转结果号3G#编程并上机调试运转1)给出一个不多于4位的正整数,求它是几位数?2)给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。90分及以上为’A’,80~89为’B’,70~79为’C’,60~69为’D’,60以下为’E’。用switch语句来实现。3)输入4个整数,要求按从大到小次序输出。输入3个整数,将最大数与最小数互换。输入一个字符,假如是数字字符,把它变换成相对应的数字并输出;假如不是,则以带符号的十进制整数形式输出。循环构造程序设计重点导读语句while语句一般形式为:while(表达式)语句。它的履行过程为:计算表达式的值,当值为真,履行循环体语句。其特色是:先判断,后履行。2.do-while

语句do-while

语句一般形式为:

do

循环体语句

while

(表达式);它的履行过程:先履行循环体一次,再判断表达式的值,若为真则连续循环,不然停止循环。语句for语句是C语言所供给的功能更强,使用更宽泛的一种循环语句。for语句的一般形式是:for(表达式1;表达式2;表达式3)此中表达式1一般是赋值表达式,用来给循环变量赋初值。表达式2一般为关系表达式或逻辑表达式,表示循环条件,当表达式2为真时,则连续循环,不然循环结束。表达式一般是赋值语句或自增(自减)语句,用来改正循环变量的值,表示循环变量的变化方式。

34.转移语句程序中的语句平常老是按次次方向或按语句功能定义的方向履行的。的正常流向,能够使用转移语句。在C语言中供给了4种转移语句:

假如需要改变程序break,continue,return,goto5.循环嵌套一个循环语句的循环体内包含另一个完好的循环语句,称为循环的嵌套。循环的嵌套能够构成多重嵌套。经典例题分析1.以下程序段中,while循环履行的次数是。intk=0;while(k=1)--k;A)无穷次B)不可以履行C)一次也不履行D)履行1次分析:while语句一般形式为while(表达式)语句,履行过程为:计算表达式的值,当值为真(非0)时,履行循环体语句。其特色是先判断,后履行。此题k初始值为0,当进入循环的判断表达式后k的值为1,为真。因为判断表达式是一个赋值表达式,每次循环执行完以后,k的值老是被赋值为1,判断表达式向来为真,所以履行无穷次。答案:A。2.以下两个程序输入

11后结果分别是

。#include<>voidmain( )

#include<>voidmain( ){

{intsum=0,i;intsum=0,i;scanf(“%d”,&i);scanf(while(i<=10)do{{sum=sum+i;sum=sum+i;i++;i++;}}while(i<=10);printf(“sum=%d\n”,sum);

“%d”,&i);printf(

“sum=%d\n”,sum);}

}do

分析:while(表达式)语句。计算表达式的值,当值为真时,履行循环体语句。循环体语句while(表达式);先履行循环体一次,在判断表达式的值,若为真则连续循环,不然停止循环。答案:0,11。(表达式1;;表达式3)可理解为。A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)分析:for语句的一般形式是for(表达式1;表达式2;表达式3)。此中表达式2一般为关系表达式或逻辑表达式,表示循环条件,当表达式2为真时,则连续循环,不然循环结束。题目中表达式2为空,也就是说本循环没有建立条件,那么循环为无穷循环,所以表达式2向来为真(非0)。答案为B。4.以下程序的运转结果是。#include<>voidmain( ){intc=0,k;for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf(“%d\n”,c);}分析:for语句履行过程是①先求表达式1。②求解表达式2,若为真,则履行for语句的内嵌语句,而后履行第3步。若为假,则结束循环,转到第5步。③求解表达式3。④转回上边第2步。⑤循环结束。当k为1,switch( )语句履行完成后c为2;当k为2,switch( )语句履行完成后c为3,当k为3时,循环结束,履行printf(“%d\n”,c);语句。答案:3。5.履行以下程序后,输出’#’的个数是。#include<>voidmain( ){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar(‘#’);}分析:一个循环语句的循环体内包含一个完好的循环语句,称为循环嵌套。循环的嵌套能够构成多重嵌套。各样循环语句之间能够互相嵌套。此题是一个二重循环,履行过程为:把1赋给i,判断i能否小于5,假如小于,则履行第二个for语句循环,直到第二个for语句的循环结束,返回上一层履行i的自加,判断能否小于5,假如条件建立,则连续履行第二个for循环。直到第一个循环的i等于5时,整个循环结束。所以输出6个’#‘。答案:6。6.以下程序运转后的输出结果是。#include<>voidmain( ){inti=0,s=0;for(;;){if(i==3||i==5)continue;if(i==6)break;i++;s+=i;}printf(“%d\n”,s);}A)10B)13C)21D)程序进入死循环分析:break语句用在switch语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去履行后边的程序。continue语句只好用在循环体中,其作用是结束本次循环,即不再履行循环体中continue语句以后的语句,转入下一次循环。答案:D。习题一、选择题1.语句

while(!c);

中的条件!c

等价于

。A)c==0

B)c!=1

C)c!=0

D)-c2.设有以下程序,运转结果是

。#include<>voidmain( ){inty=10;for(;y>0;y--)if(y%3==0)printf(}A)852B)963

“%d”,--y);C)1063

D)7413.以下程序段的输出结果是

。intx=3;do{printf(A)10

“%3d”,x-=2);}while(!(--x));B)3-2C)1

-2

D)14.履行下边的程序后,a的值是。#include<>voidmain( ){inta,b;for(a=1,b=1;a<100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf(“%d”,a);}A)7B)8C)9D)105.以下程序段的输出结果是。inti,j,m=0;for(i=1;i<=15;i+=4)for(j=3;j<=19;j+=4)m++;printf(“%d\n”,m);A)12B)15C)20D)25二、填空题要使以下程序段输出10个整数,请填入一个整数。for(i=0;i<=;printf(“%d\n”,i+=2));2.若输入字符串:abcde<回车>,则以下while循环体将履行

次。#include<>voidmain( ){charch;while((ch=getchar( ))==

‘e’)printf(

“*”);}3.以下程序在运转时,假如从键盘输入1298,则结果是。#include<>voidmain( ){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(

“%d”,n1);}}4.以下程序运转结果是#include<>voidmain( ){

。inti,a=3,b=4,t;for(i=1;i<=5;i++)switch(i%5){case0:b=3;case1:t=a;a=b;b=t;break;default:b=5;}printf(“%d,%d\n”,a,b);}5.以下程序运转结果是。#include<>voidmain( ){inti,j,s=0;for(i=1;i<=4;i++)for(j=1;j<=5-i;j++)s=s+i*j;printf(“%d”,s);}6.以下程序运转后结果是。#include<>voidmain( ){inta=1,b;for(b=1;b<10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a-=3;}printf(“%d\n”,b);}三、编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论