




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.3顺序结构程序设计231 要点导读1.printf() 与 scanf()语句。printf()与scanf()语句是最通用的输入输出函数,它们可以在程序设计者的控制下以各种格式分别实现数据的输出和输入操作。它们位于stdio.h库文件中。2. 字符数据的输入输出。最简单的字符输入输出函数是getchar()和putchar()。两者分别从键盘读一个字符或向显示屏写一个字符。2.3.2经典例题分析1. 下列程序运行后输出的结果是#in clude <stdio.h>void mai n()int a=0,b=0;a=10;b=20;printf( “a+b=%d ,a+b);分
2、析:printf() 是输出函数,它的括号内由两部分组成:1) 控制字符串,是用双引号括起来的字符串,它包括两种信息:(1) 格式说明。由” %和格式字符组成,如:%d %f、%c等。它的作用是将输出的数据转换成指定的格式输出。(2) 普通字符。需要原样输出的字符。2) ”输出表列”是需要输出的一些数据,可以是表达式。 题目中a的值是10,b的值是20,在pnntf( a+b=%d”,a+b);格式说明输岀表列中,” a+b= “是普通字符,答案:a+b=30。需原样输出。输出表列是一个表达式, 它的结果以整型输出。2. 下列程序运行后输出的结果是#in elude <stdio.h&g
3、t;void mai n()int a=732;printf( “ dn” ,a);printf(“ 2dn” ,a);printf(“ %10dn” ,a);printf(“ %-10dn ”,a);但732占3列小于10列,所以左端补 7个空格。printf(“ %-10dn ” ,a);“-”表示把数值放到左端,732占3列小于10列,所以右端补 7个空格。答案:732732 732732/*表示空格*/分析:d格式符,用来输出十进制整数。其中 为指定的输出字段的宽度。如果数据的位数小于 位数输出。printf(“ dn” ,a);把a的值按原样输出:但732占3列大于2列,所以按实际位
4、数输出:%d按整型数据的实际长度输出。%md mm贝y左端补以空格,若大于 m则按实际732。printf(“ %2dn” ,a);结果占 2 列,732。printf(%10dn” ,a);结果占 10 列,结果占10列,3.已知 char a=103 '则语句 printf(“3d ,a);执行后的输出结果为(表示空格)B)' c'C)67DD)103'是一个转义字符,表示一个八进制数所代表的字符,3列。但A) 67转换为十进制为67。67占2列,小于要分析:'103printf( “%3d ,a);把103 '转换为十进制数输出,结果占 求
5、的3列,所以左补空格,即67。答案:Co4. 下列程序运行后结果是#in elude <stdio.h>#defi ne a 3345.67void mai n() printf(“ %fn ” ,a);printf(“ en” ,a);printf(“ %4.2fn ” ,a);printf(“ %3.1fn ” ,a);printf(“ %10.3fn ” ,a);printf(“ %-10.3fn ”,a);分析:printf(格式符,用来输出实数,以小数形式输出,小数点后输出“ fn ” ,a);输出结果为 3345.670000。%m.nf是指,要输出的数占 m列,同时小
6、数点保留 n位(四舍五入) 于m则原样输出,同时小数点保留 点保留n位(四舍五入)。printf(printf(6位。所以,如果输出的数大 n位(四舍五入)。如果小于 m则左补空格,同时小数 “4.2fn ” ,a);输出结果为 3345.67。“3.1fn ” ,a);输出结果为 3345.7。printf(“ %en” ,a);3.345670e+03 。e格式符,以规范化指数的形式输出,所以答案:3345.6700003.345670e+033345.673345.7 3345.670 /*(表示空格)*/3345.670 5.下列程序运行后结果是#in clude <stdio.
7、h> void mai n()char x=0x227f; printf(A) 22分析:变量“ dn”,x);B)127C) 255x被定义成字符型,字符型占值22ff,占16位。所以227f高8位被舍去, 把x以有符号的十进制整数输出。答案:BoD)88311个字节,而x被赋值为一个4位16进制的x 的值为 7fH。执行 printf(“ dn” ,x);即6.设 int b=0;下列语句的输出结果是printf( A) 1,1 分析: 答案:“d,%d ,+b,b-);B) 1,0C) 0,0D) 0,-1函数的执行顺序是由右到左,输出顺序是由左向右。printfCo7.下列程序运
8、行时,若从键盘输入:123回车45678回车 后结果是#in clude stdio.hvoid mai n()char c1,c2,c3,c4,c5,c6;scanf(“ %c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();pu tchar(c1);pu tchar(c2);printf( “ c%cn ,c5,c6);分析:scanf(格式控制,地址表列)的功能是:从键盘读取输入的信息。其中”格式控 制”的含义同printf函数;”地址表列”是由若干个地址组成的表列,可以是变量的地址, 或字符串的首地址。
9、其scanf( “%c%c%c%q&c1,&c2,&c3,&c4) 的作用是:按照c1,c2,c3,c4 在内存的地址将c1,c2,c3,c4 的值存进去。由于”c表示按字符形式输入数据,所以”回车符”作为一个字符,输入有效。getchar()函数的作用从终端输入一个字符。函数的作用是向终端输出一个字符。所以c1=1、c2=2、c3=3、c4=回车,c5=4、答案:1245 opu tehar()e6=5 O8.设有定义int a;float b;执行scanf( “ 2d%” ,&a,&b);语句时,若从键盘输入 回车,a和b的值分别是分析:s
10、eanf()可以指定输入数据所占的列数,系统自动按它截取所需数据。876 543.0<%2d说明了 a占两列,即为87,剩下的数字应该赋给 b,但是6和5之间有一个空格,为输入终止符, 所以543.0被舍弃,即b的值为6o答案:87 6 o 9.已知 a,b,c 为 int 类型,执行 scanf( “a=%d,b=%d,c=%(”,&a,&b,&c);后,若要使得 a 为1, b为2, c为3,则以下选项中正确的输入形式是()。A) 1,2,3B) a=1,b=2,c=3C) 1 2 3D) a=1 b=2 c=3分析:scanf中如果在字符控制串中除了格式说明
11、符以外还有其他字符,则在输入数据 时应输入与这些相同的字符。10.设有 int x,y;scanf( 值是答案:Bo“d%*d%”,&x,&y);从键盘输入数据 10口 20口 30回车 后,y的分析:%*d表示跳过。所以y的值是30o答案:30 o2.3.3习题、选择题1.设 a、b、c为整型变量,若从键盘给a、b、c输入数据,则正确的输入语句是A)sca nf(C) scanf(“f%f%f',&a,&b,&c);“ %d%d%d ,a,b,c);B) scanf(D) scanf(“d%d%d, &a, &b,&c)
12、;“d%d%d, &a; &b;&c);2. 下列程序执行后输出的结果是#in clude<stdio.h> void mai n() int x= printf(A) G'd'“ c , ' A' +(x- ' a' +1);B) HC) ED) J3.设整型变量a,b的值均为8 o printf(“d,%cr ,(a+,+b),b-);的输出值是A)8,8B)8,7C)9,9D)8,94.若有以下程序段,执行后输出的结果是int m=100, n=0100; printf(“ %d,%on” ,m,n);A
13、) 100,100B) 100,0100C) 100,4D) 100,045. 有以下程序,其输出结果是#in clude <stdio.h>void mai n()float x=1; int y;x+;y=x+1;printf(“ x=%d,y=%f” ,x,y);A) x=2,y=3B) x=2,y=3.0C) x=2.0,y=3D) x=0,y=0.0000006. 有以下程序,其输出结果是#in elude <stdio.h>void mai n()int a;char e=10;float f=100.0;double x;a=f/=e*=(x=6.5);p
14、rintf( “ d,%d,%3.1f,%3.1f ” ,a,e,f,x);B) 1,65,1.5,6.5 C) 1,65,1.0,6.5 D) 2,65,1.5,6.5A) 1,65,1,6.5二、填空题1. 下列程序输出的结果是#in elude <stdio.h>void mai n()int x=7,y=5;printf(“ y=%dn” , x%y);2. 下列程序输出的结果是#in elude <stdio.h>void mai n()float d,f;long k;int i;i=f=k=d=20/3;printf( “ 3d%3ld%5.2f%5.2f
15、n ” ,i,k,f,d);3. 下列程序输出的结果是:#in elude <stdio.h>void main() int k=11;printf(“ k=%d,k8=%o,k16=%xn”,k,k,k);4. 下列程序输出结果是:#in clude <stdio.h>“ah pu .edu.c n! ”#defi ne BL void mai n()“2sn”,BL); “15sn” ,BL); “15.4sn ” ,BL); “-15.4sn ” ,BL);printf(printf(printf(printf(5.若想通过以下输入语句使a=5.0,b=4,c=3
16、,则输入数据形式应该是int b,c;float a;scanf( “ f,%d,c=%d” ,&a,&b,&c);6.当输入为56789 012345a72时,执行下列程序段后,变量i、j、x、y、c的值各是什么?int i,j;float x,y;char c;scanf( “ %2d%f%f%c%d,&i,&x,&y,&c,&j);三、编程题1.已知 x=3.2 , y=7, z=2,计算 y/3*x-2 的值。2.输入一个华氏温度,要求输出摄氏温度(结果保留2位)。公式为c=5/9*(f-32)。3. 从键盘输入一个小写字
17、母,用大写形式输出该字母。4.把16进制数12a以10进制形式输出。5. 输入两个整数,将其值交换。2.3.4本节易错知识点本节阐述了 printf() 、scanf() 、putchar() 和 getchar() 的具体用法。 对于 scanf() 的用法应注意以下几点:1) 如果在字符控制串中除了格式说明符以外还有其它字符,贝在输入数据时应输入与 这些字符相同的字符。例如: scaf( “%d,%df ,&a,&b); 输入时用如下形式:5,6此处 5 后面是逗号,它与 scanf() 函数字符控制串中的逗号对应。输入时只能输入逗号,不可用”空格”替代。2) 用。格式输入
18、字符时,空格、回车及转义字符均作为有效字符输入。例如:scanf(“%c%c%fc ,&a,&b,&c);scanf( scanf(若要使变量a,b,c的值分别为A'、B'、C',就只能输入ABC车 。当使用多个scanf() 函数连续给多个字符型变量赋值时,注意输入的方法。例如:%cf ,&c1);%cf ,&c2);如果要使得c1的值为a', c2的值为b',则正确输入方法为:ab回车 ,而不是a回车b 回车。遇到满足最大字段宽度或非法输入时认为结束,如:” 2d,只取两位数。如:“d%c%f,&a,&
19、amp;b,&c);若输入:1234a56p.78 贝U a 的值 1234, b 的值 a, c 的值 56。3)scanf(2.3.5实验指导实验名称 顺序结构程序设计、实验目的1. 掌握数据的输入输出的方法,能正确使用有关格式转换符;2. 熟悉顺序结构程序中语句的执行过程;3. 掌握顺序结构程序的设计方法二、实验内容与要求1. 下列程序作用是依次输入 2 个整数,计算并输出这 2 个整数之差。#include <stdio.h>改程序,void main()float a,b,e;printf(seanf(e=a-b;printf( 分析程序,“input a,b ”
20、n ”);%d,%d”,&a,&b);c=%dn”,c);若运行时输入: 100,60 < 回车>后预期结果是多少?上机运行该程序,查看程序运行结果是否符合题目要求。如果不符合分析原因并修 直至符合要求为止。2. 按下列公式计算并输出 s 的值, s=3/(a+b)2 。有下列程序:#inelude <stdio.h>void main()int a,b; float s;seanf(“ %d,%d”,&a,&b);s=3 /(a+b)*(a+b);/* 有两个错误 */printf( “ s=%fn ” ,s);根据题意修改上述程序,并
21、进行调试,直到正确为止。在的基础上,将 seanf( “ d,%d,&a,&b);改为 seanf( “d%d,&a,&b);后再编 译、链接、运行。3. 分析下列程序, 写出预期结果, 然后输入调试, 查看运行结果与预期结果是否一致并分析 其原因。#inelude "stdio.h"void main()int a=-1;unsigned b=65534;printf("%d,%o,%x,%un",a,a,a,a); printf("b=%d",b) ;4. 编程并上机调试运行设圆半径为 r=1.5
22、,求圆周长和面积。要求用 seanf 函数输入数据,输出时取小数 点后两位。2)3)输入一个 3 位十进制整数,分别输出百位、十位以及个位上的数。 从键盘输入一个带 2 位的实数,将其整数部分和小数部分分离后输出。例如:输入 321.54 ,输出 321.54=321+0.54 。4) 用 getchar 函数读入两个字符,然后分别用 putchar 和 printf 函数输出这两字符。2.4 选择结构程序设计2.4.1 要点导读比较运算” ,其结 ”真”、”假”。=、优先级相同, =和 !=1. 关系运算符与关系表达式关系运算是逻辑运算中比较简单的一种。它的实质是两个值之间的”果只有两种:
23、”真”、”假”。因此关系表达式的运算结果也只有两种:C 语言提供 6 种关系运算符: 、=、=和 != 。在这里 、优先级相同。前 4 种的优先级高于后两者。2. 逻辑运算符与逻辑表达式逻辑运算符可以将多个关系表达式或逻辑量连接起来,构成逻辑表达式。 了 3 种逻辑运算符 :! 、C语言里提供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”
24、表示真、“0”表示假。判&&、 | 。不同逻辑运算符进行运算所得的结果如下表:在断一个表达式时,非“ 0”即为真、 “ 0”为假。3.if 语句的三种基本形式用 if 语句可以构成选择结构。它判断给定的条件是否满足,段。C语言的if语句有三种基本的实现形式:if 、 if-else以决定执行某个分支程序 和 if-else if 形式。4.switch 语句C语言提供了另一种用于多分支选择的switch (表达式 ) case常量表达式case 常量表达式switch 语句,其一般形式为:1:语句2:语句n:语句语句 n+1 其表达式应为整型、字符型、枚举型表达式。它的语意是:
25、计算表达式的值,并依次与 其后的常量表达式值相比较, 当表达式的值与某个常量表达式的值相等时, 即执行其后的语 句。如果表达式与所有的 case 后的常量表达式均不相同时,则执行 default 后的语句。case 常量表达式 default:分析:这是一个关系表达式, =,且 > '的结合性是7,所以, 断1是否大于2,显然不成立为假,答案:0 o2.若变量c为char类型,下列选项中能正确判断出A ) ' 0' <=c<= 9'B)'9'分析:在C语言中要表达' 9 '之间,所以应为:c>=答案:Doc
26、为数字字符的表达式是c>= 0' &&c<= 9'C) c>=0&&c<=9' D) c>= 0' &c<=a>b>c应该这样写a>b&&b>G因为c为数字字符,应在0''0' &&c<= 9'。242经典例题分析1.若有int i;则执行语句i=4>3>2;后,i的值为在这个表达式中有> 和=,可知 > '的优先级高于先判断4>3,显然是为真的,即表达式的
27、值为1。再判0赋给i,所以i的值为0。即为0,然后把3.已知int x=1,y=2,z=3;则逻辑表达式x<y|+z运算后,z的值是分析:C语言在计算逻辑表达式时,如果在某一步已得到了整个表达式的结果,则后面的部分将不再计算。对于 &&表达式,若已得到一个操作数为0,则后面的操作数不再计算。对于II表达式,若已得到一个操作数为1,则后面的操作数不再计算。本题中,1<2显然为真即为1,所以+z不需要再运算了,z的值没改变,还是为 3o答案:3。4. 下列程序运行的结果是:#in clude <stdio.h> void mai n() char c=if(
28、 ' m else prints 分析:这是'd'<c<= z' ) printf(“YES'“ NO ););if-else 形式,格式为:if( else 其语义是:如果表达式的值为真,则执行语句表达式)语句1语句21,否则执行语句2。本题中,表达式m <c<=必须是关系表达式可以是任意合法的表达式用于描述选择结构的条件,但也可以是if语Z'结果为真,所以执行printf( “ YES );答案:YES5.if (表达式)语句,其中"表达式" A)必须是逻辑表达式B)C)必须是逻辑表达式和关系表达式
29、D)分析:表达式一般是关系表达式或逻辑表达式,其它类型的表达式,只要其合法,在其值非0时都视为真,所以其它表达式也可以做句的判断条件。答案:D。#in clude <stdio.h> void mai n() int a=1;if(a) printf(else pnntf(分析:if(表达式)中的” 本题a的值为1, if(a) printf( 真(非0),如果为真则输出”答案:YES“ YES'); “NO );表达式”可以是任意合法的,其实质是判断表达式是真还是假。“ YES ); else printf( “ NO );的含义是判断a是否为YES',否则输出”
30、 NOo7.C语言对于嵌套的if语句规定else总是匹配A)与最外层的ifB)C)与之前最近的不带 else的if 分析:在C语言中, 对的if配对。答案:Bo与之前最近的且未配对的ifD)与最近的 之前的if为了避免语句造成二义性,规定, else总是与它前面最近的未配8.下列程序运行结果是:#in clude <stdio.h>void mai n()int x=1,y=2,z=3;if(x<y)if(y<z)elseprintf(分析:由printf( printf(“ dn”if-else“ d',+z); “ %d,+y);,x+);匹配规则可知,el
31、se与if(y<z)配对,也就是说当 "%d,+y);y<z 成立,则执行 printf( “ %d,+z);不成立,执行printf(很显然x<y成立,接着判断y<z是否成立,很显然是成立的, printf( “ dn” ,+z);然后执行 printf(答案:41。x<y成立时,y<zO 因为 x=1, y=2 ,那么直接执行9.若有定义:float x=1.5;int a=1,b=3,c=2;A) switch(x)case 1.0:pnntf(case 2.0:pnntf( C) switch(a+b)“ dn”,x+);。B) switc
32、h(i nt)x);“*n ”);“*n ”);D) switch(a+b)则正确的switch语句是case 1:pnntf(case 2:pnntf(“*n ”);“*n ”);a J.1?*n);*n);case 1:pnntf(case 2+1: pnntf( 分析:C语言提供了另一种用于多分支选择的switch (ease 1:pnntf(ease c:pnntf(switch语句,其一般形式为:“*n ”); “*n ”);表达式)case常量表达式1:语句case常量表达式2:语句case常量表达式n:语句default:语句 1n+112n表达式一般应为整型、字符型、枚举型表达
33、式。整型、字符型或枚举型常量表达式;B选项switch(int)x);c:printf( “ *n ”);中c是一个变量,应为一个常量表达式。答案:C。A选项中case后是浮点型,应为一个中多了分号,D选项case10.下列程序执行后结果是#in elude <stdio.h>void mai n()int a=16,b=21,m=0;switch(a%3)case 0: m+; break; case 1: m+;switch(b%2)default: m+;case 0: m+;break; printf( 分析:switch“d ,m);语句的意思为:计算表达式的值,并依次与
34、其后的常量表达式值相比较, 当表达式的值与某个常量表达式的值相等时,即执行其后的语句。后的常量表达式均不相同时,则执行default后的语句。break本题a%3值为1,执行case 1:m+;以及后面的语句。b%2值为 后面的语句。答案:3。如果表达式与所有的 语句用于跳出switch 1,执行 default: m+;case语句。以及2.4.3习题、选择题1.下列程序段运行后结果是Oint a,b,c;a=1;b=2;c=3;if(a>b) c=a;b=c;printf("a=%d,b=%d,c=%(” ,a,b,c);A) a=1,b=3,c=3 B) a=1,b=3,
35、c=2 C) a=1,b=2,c=3 D) a=2,b=1,c=12. 下列程序运行后的结果是#in clude <stdio.h>void mai n()int a=1,b=2,c=3;if(a+=1 &&(+b=3&&c+=3) printf( A) 1,2,3“d,%d,%dn”,a,b,c);B) 2,3,5C) 2,2,3D) 2,3,43.与y=(x>0?1:x<0?-1:0)的功能相同的if语句是A) if(x>0) y=1;else if(x<0) y=-1;else y=0;C) y=-1;if(x)if(x
36、>0) y=1;else if(x=0) y=0;else y=-1;B) if(x)if(x>0) y=1; else if(x<0) y=-1;D) y=0;if(x>=0) if(x>0) y=-1; else y=-1;4. 有以下程序,执行后结果是#in clude <stdio.h>void mai n()int a=5,b=4,c=3,d=2;if(a>b>c) printf(“%dn” ,d);else if(c-1)>=d)=1) printf(else printf(“ %dn” ,d+2);A) 2“ dn” ,
37、d+1);B) 3C) 4D) 5则合法的switch 语句是5.若有定义:float w; int a,b;char c;A) switch(b)B) switch(a);case 1.0:pnntf( case 2.0:pnntf( C) switch(b)“ *n ”“ *n);”);case 1 printscase 2 pnntf(D) switch(w)“*n ”); “*n ”);"*n ”); ease 1:pnntf(“ *n ” ); ease c:printf(“ *n ”); “*n ”);ease 1:pnntf( ease 1+2: pnntf( 6. 下
38、列程序运行后的结果是#in elude <stdio.h>void mai n()int x=1,a=0,b=0; switeh(x)ease 0:b+;ease 1:a+;ease 2:a+;b+; printf(A) 2,1B) 1,1,a,b);C) 1,0D) 2,2二、填空题1.能正确表述逻辑关系20<x<30或x<-100的C语言表达式是2.设 int a=O,b=O,c=O;c=a+&&b+;贝U a,b,e 的值分别是3. 若从键盘输入58,则以下程序输出结果是#in elude <stdio.h>void mai n(
39、)int a;“d ,a);“%d ,a);“%d ,a);scanf( “ %d ,&a); if(a>50) printf( if(a<=58) printf( if(a>=58) printf(4. 下列程序运行后的结果是#in elude<stdio.h>void mai n()int x=10,y=20,t=0;if(x=y) t=x;x=y;y=t; printf(“ d,%dn” ,x,y);5.当int a=1,b=3,c=5,d=4;时,执行下列一段程序后,x的值:if(a<b)if(c<d) x=1; else if(a&l
40、t;c) if(b<d) x=2; else x=3;else x=6;else x=7;6.下列程序运行后的结果是#in elude <stdio.h>void main()int x=1,y=0,a=1,b=0; switch(x)case 1:switch(y) case 0:a+;case 1:b+;break;case 2:a+;b+;break; printf("a=%d,b=%dn”,a,b);三、编程题1.要求输入三个数,输出其中最大值。2.由键盘输入3个数,若输入的这3个数可以构成三角形, 则计算以这3个数为边长的三角 形周长;如果不能,则输出提示
41、错误信息。3.从键盘上输入一个整数判断其奇偶以及正负。4.判断方程ax2+bx+c=0的根的个数。5.从键盘输入表示年份的整数,判断是否为闰年。判断闰年的方法是:能被400整除的年是 闰年;或者凡是能被 4整除但不能被100整除的年是闰年。2.4.4本节易错知识点if、 if-else 、if-else本节阐述了逻辑表达式、if、if-else 、if-else 和switch语句的具体用法。1. 在逻辑表达式运算中应注意,如果在某一步已得到了整个表达式结果,则后面的部分将不再计算。例如:c=b&&+a;如果这里b为0,那么+a将不再执行,仍为原值。2. 在if语句中,应该注意
42、if语句中的表达式可以为所有的合法的表达式。例如:int a=1;if(a=0) printf(Yes );else printf(“ No");括起来3. 在if语句3种形式中,如果要想在满足条件是执行一组语句,必须使用 个复合语句,但在后面不能加分号。4. 在使用switch。语句时应注意:在 case后的各个常量表达式值都不能相同;case后允许有多个语句,可以不用 括起来;若每个分支后,都有 break语句,则各case和 default子句先后顺序可以变动而不影响程序结果;default子句可以省略不用。245实验指导实验名称选择结构程序设计一、实验目的1. 学会正确使用关
43、系运算符和关系表达式;2. 学会正确使用逻辑运算符和逻辑表达式以及关系表达式等;3.熟练掌握if语句和switch语句;4.熟悉选择结构程序中的语句执行过程,掌握选择结构程序设计的方法。二、实验内容与要求1. 编写程序,判断从键盘上输入的一个字符,并按下列要求输出。1)若该字符是数字,输出字符串”0-9 ”2)若该字符是大写或者小写字母,输出字符串”A-Z ”3)若该字符是其他字母,输出”!,”。#in clude <stdio.h> void mai n() char c;scanf(“ c,&c);if( 丄“ 0-9n ”);)“ A-Z ”);printf( els
44、e if(printf(printf(n ”);完善上述源程序,对源程序进行编译、连接,运行程序,并写出结果。序号输入数据*预期结果运行结果132G3#2. 编程并上机调试运行1)给出一个不多于 4 位的正整数,求它是几位数?5)2)给出一个百分制成绩,要求输出成绩等级A、B'、 C、 D、 E' 90分及以上为'A', 8089 为'B', 7079 为'C , 6069 为'D', 60 以下为'E'。用 switch 语句来实现。3)输入 4 个整数,要求按从大到小顺序输出。4)输入 3 个整数,将最
45、大数与最小数交换。输入一个字符,如果是数字字符,把它转换成相对应的数字并输出;如果不是,则 以带符号的十进制整数形式输出。2.5循环结构程序设计2.5.1要点导读l.while 语句while语句一般形式为:while(表达式)语句。它的执行过程为:计算表达式的值,当 值为真,执行循环体语句。其特点是:先判断,后执行。2. do-while 语句do-while 语句一般形式为:do循环体语句 while (表达式);它的执行过程:先执行 循环体一次,再判断表达式的值,若为真则继续循环,否则终止循环。3.for语句for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。for语句的一般形
46、式是:for(表达式1;表达式2;表达式3)其中表达式1 一般是赋值表达式,用来给循环变量赋初值。表达式2 一般为关系表达式 或逻辑表达式,表示循环条件,当表达式2为真时,则继续循环,否则循环结束。表达式 3一般是赋值语句或自增(自减)语句,用来修改循环变量的值,表示循环变量的变化方式。4. 转移语句如果需要改变程序程序中的语句通常总是按顺序方向或按语句功能定义的方向执行的。 的正常流向,可以使用转移语句。在C语言中提供了 4种转移语句:break, continue , return , goto5. 循环嵌套称为循环的嵌套。循环的嵌套可一个循环语句的循环体内包含另一个完整的循环语句, 以组
47、成多重嵌套。2.5.2经典例题分析1.下列程序段中,while循环执行的次数是int k=0;while(k=1) -k;A)无限次B)不能执行C) 一次也不执行D)执行1次分析:while语句一般形式为 while(表达式)语句,执行过程为:计算表达式的值,当值为真(非0)时,执行循环体语句。其特点是先判断,后执行。本题 k初始值为0,当进入循环的判断表达式后 k的值为1,为真。因为判断表达式是一个赋值表达式,每次循环执 行完之后,k的值总是被赋值为1,判断表达式一直为真,所以执行无限次。答案:A。2. 下列两个程序输入 11后结果分别是#in clude <stdio.h> v
48、oid mai n() int sum=0,i;scanf( while(i<=10) sum=sum+i; i+;printf(#in clude <stdio.h> void mai n()“d,&i);int sum=0,i;scanf(“d,&i);do sum=sum+i;i+; while(i<=10);"sum=%dn',sum);pnntf("sum=%dn' ,sum); 分析:while(表达式)语句。计算表达式的值,当值为真时,执行循环体语句。 do循环体语句 否则终止循环。答案:0,while(
49、表达式);先执行循环体一次,在判断表达式的值,若为真则继续循环,11。3.for(表达式A) for(C) for(1;表达式3)可理解为表达式1;0;表达式3)B) for( 表达式1;1;表达式3)表达式1;表达式1;表达式3)D) for(表达式1;表达式3;表达式3)分析:for语句的一般形式是for(表达式1;表达式2;表达式3)。其中表达式2 一般为 关系表达式或逻辑表达式,表示循环条件,当表达式2为真时,则继续循环,否则循环结束。题目中表达式2为空,也就是说本循环没有设立条件,那么循环为无限循环,所以表达式2一直为真(非0 )。答案为B。4.下列程序的运行结果是#in clude
50、 <stdio.h>void mai n()int c=0,k;for(k=1;k<3;k+)switch(k)default: c+=k;case 2: c+;break;case 4:c+=2;break;printf(“ %dn” ,c);2,若为真,则执行for 5步。求解表达式 3oc为 2;当 k为 2,switch( “ dn” ,c);语句。分析:for语句执行过程是先求表达式1。求解表达式句的内嵌语句,然后执行第3步。若为假,则结束循环,转到第转回上面第2步。循环结束。当k为1,switch()语句执行完毕后 语句执行完毕后c为3,当k为3时,循环结束,执行
51、printf(答案:3 O5. 执行以下程序后,输出#'的个数是#in clude <stdio.h>void mai n()int i,j;for(i=1;i<5;i+)for(j=2;j<=i;j+) pu tchar(分析:一个循环语句的循环体内包含一个完整的循环语句,称为循环嵌套。循环的嵌套可以组成多重嵌套。各种循环语句之间可以相互嵌套。本题是一个二重循环,执行过程为: 把1赋给i,判断i是否小于5,如果小于,则执行第二个 for语句循环,直到第二个 for 语句的循环结束,返回上一层执行i的自加,判断是否小于 5,如果条件成立,则继续执行第二个for循
52、环。直到第一个循环的 i等于5时,整个循环结束。所以输出6个#仁答案:6 o6. 以下程序运行后的输出结果是#in clude <stdio.h>void mai n()int i=0,s=0;for(;) if(i=3|i=5) continue; if(i=6) i+; s+=i; printf( A) 10 分析:breakbreak;“ dn”,s);B) 13语句用在层循环,转去执行后面的程序。即不再执行循环体中contin ue答案:DoC) 21D)程序进入死循环switch语句或循环语句中,其作用是跳出 switch语句或跳出本 contin ue语句只能用在循环体中,其作用是结束本次循环, 语句之后的语句,转入下一次循环。2.5.3习题、选择题1.语句 while(!c); 中的条件!c等价于A)c=0B) c!=1C) c!=0D) -c2.设有如下程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜仁职业技术学院《设计软件应用》2023-2024学年第二学期期末试卷
- 浙江省温州市苍南县2024-2025学年数学三下期末教学质量检测试题含解析
- 四川省成都市达标名校2025年高三下学期第二次调研测试英语试题含解析
- 江西师范大学《医学微生物学C》2023-2024学年第二学期期末试卷
- 齐鲁师范学院《广告市场调查》2023-2024学年第二学期期末试卷
- 割胶打胶施工方案
- 工程项目文件及信息管理要点
- 山东省威海市2024-2025学年高二上学期期末考试英语试题【含答案】
- 隔断吊顶施工方案模板
- 广西南宁市2024-2025学年高一上学期期末教学质量调研数学试卷
- 高数常微分方程-高阶微分方程
- 项目总工岗位职责
- 竹里馆ppt课件
- 【最新】中考历史专题复习 中外科技发展课件 新人教-新人教初中九年级全册历史课件
- 最新-路面标线技术交底
- 医院卒中质量控制考核方案
- 立风井瓦斯管路安装施工组织设计
- 附件 流动人员人事档案转递通知单存根
- 计算机信息检索第三章
- ISO22716:2007标准(中英文对照SN T2359-2009)47
- 融媒体档案信息化管理探究
评论
0/150
提交评论