




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、傳播優(yōu)秀word版文檔 ,希望對您有幫助,可雙擊去除!2.3順序結構程序設計2.3.1 要點導讀1.printf() 與scanf()語句。printf() 與scanf()語句是最通用的輸入輸出函數(shù),它們可以在程序設計者的控制下以各種格式分別實現(xiàn)數(shù)據的輸出和輸入操作。它們位于stdio.h庫文件中。2.字符數(shù)據的輸入輸出。最簡單的字符輸入輸出函數(shù)是getchar()和putchar()。兩者分別從鍵盤讀一個字符或向顯示屏寫一個字符。2.3.2 經典例題分析1.下列程序運行后輸出的結果是 。#include <stdio.h> void main() int a=0,b=0;a=1
2、0;b=20;printf(“a+b=%d”,a+b);分析:printf( )是輸出函數(shù),它的括號內由兩部分組成:1)控制字符串,是用雙引號括起來的字符串,它包括兩種信息:(1) 格式說明。由”%”和格式字符組成,如:%d、%f、%c等。它的作用是將輸出的數(shù)據轉換成指定的格式輸出。(2) 普通字符。需要原樣輸出的字符。2)”輸出表列”是需要輸出的一些數(shù)據,可以是表達式。題目中a的值是10,b的值是20,在中,”a+b= “是普通字符,需原樣輸出。輸出表列是一個表達式,它的結果以整型輸出。答案:a+b=30。2.下列程序運行后輸出的結果是 。#include <stdio.h>vo
3、id main() int a=732;printf(“%dn”,a);printf(“%2dn”,a);printf(“%10dn”,a);printf(“%-10dn”,a);分析:d格式符,用來輸出十進制整數(shù)。其中%d,按整型數(shù)據的實際長度輸出。%md,m為指定的輸出字段的寬度。如果數(shù)據的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出。printf(“%dn”,a);把a的值按原樣輸出:732。printf(“%2dn”,a);結果占2列,但732占3列大于2列,所以按實際位數(shù)輸出:732。printf(%10dn”,a);結果占10列,但732占3列小于10列,所以左端補7個空
4、格。printf(“%-10dn”,a); 結果占10列,“-”表示把數(shù)值放到左端,732占3列小于10列,所以右端補7個空格。答案: 732732 732 /*表示空格*/ 7323.已知char a=103;則語句printf(“%3d”,a);執(zhí)行后的輸出結果為(表示空格)。a)67b)cc)67d)103分析:103是一個轉義字符,表示一個八進制數(shù)所代表的字符,轉換為十進制為67。printf(“%3d”,a);把103轉換為十進制數(shù)輸出,結果占3列。但67占2列,小于要求的3列,所以左補空格,即67。答案:c。4.下列程序運行后結果是 。#include <stdio.h>
5、;#define a 3345.67void main() printf(“%fn”,a);printf(“%en”,a);printf(“%4.2fn”,a);printf(“%3.1fn”,a);printf(“%10.3fn”,a);printf(“%-10.3fn”,a);分析:f格式符,用來輸出實數(shù),以小數(shù)形式輸出,小數(shù)點后輸出6位。所以printf(“%fn”,a);輸出結果為3345.670000。%m.nf是指,要輸出的數(shù)占m列,同時小數(shù)點保留n位(四舍五入),如果輸出的數(shù)大于m,則原樣輸出,同時小數(shù)點保留n位(四舍五入)。如果小于m,則左補空格,同時小數(shù)點保留n位(四舍五入)
6、。printf(“%4.2fn”,a);輸出結果為3345.67。printf(“%3.1fn”,a);輸出結果為3345.7。e格式符,以規(guī)范化指數(shù)的形式輸出,所以printf(“%en”,a);3.345670e+03。答案:3345.670000 3.345670e+03 3345.67 3345.73345.670 /*(表示空格)*/3345.6705.下列程序運行后結果是 。#include <stdio.h>void main() char x=0x227f; printf(“%dn”,x);a) 22b) 127c) 255 d)8831分析:變量x被定義成字符型,
7、字符型占1個字節(jié),而x被賦值為一個4位16進制的值22ff,占16位。所以227f高8位被舍去,x的值為7fh。執(zhí)行printf(“%dn”,x);即把x以有符號的十進制整數(shù)輸出。答案:b。6.設int b=0;下列語句的輸出結果是 。printf(“%d,%d”,+b,b-);a) 1,1b) 1,0c) 0,0d) 0,-1 分析:printf函數(shù)的執(zhí)行順序是由右到左,輸出順序是由左向右。答案:c。 7.下列程序運行時,若從鍵盤輸入:123<回車>45678<回車>后結果是 。#include <stdio.h> void main() char c1,
8、c2,c3,c4,c5,c6; scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4); c5=getchar( );c6=getchar( );putchar(c1);putchar(c2);printf(“%c%cn”,c5,c6);分析:scanf(格式控制,地址表列)的功能是:從鍵盤讀取輸入的信息。其中”格式控制”的含義同printf函數(shù);”地址表列”是由若干個地址組成的表列,可以是變量的地址,或字符串的首地址。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:按照c1,c2,c3,
9、c4在內存的地址將c1,c2,c3,c4的值存進去。由于”%c”表示按字符形式輸入數(shù)據,所以”回車符”作為一個字符,輸入有效。getchar( )函數(shù)的作用從終端輸入一個字符。putchar( )函數(shù)的作用是向終端輸出一個字符。所以c1=1、c2=2、c3=3、c4=回車,c5=4、c6=5。答案:1245。8.設有定義int a;float b;執(zhí)行scanf(“%2d%f”,&a,&b);語句時,若從鍵盤輸入876 543.0<回車>,a和b的值分別是 。分析:scanf()可以指定輸入數(shù)據所占的列數(shù),系統(tǒng)自動按它截取所需數(shù)據。%2d說明了a占兩列,即為87,剩
10、下的數(shù)字應該賦給b,但是6和5之間有一個空格,為輸入終止符,所以543.0被舍棄,即b的值為6。答案:87 6。9.已知a,b,c為int類型,執(zhí)行scanf(“a=%d,b=%d,c=%d”,&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中如果在字符控制串中除了格式說明符以外還有其他字符,則在輸入數(shù)據時應輸入與這些相同的字符。答案:b。10.設有int x,y;scanf(“%d%*d%d”,&x,&y)
11、;從鍵盤輸入數(shù)據102030<回車>后,y的值是 。分析:%*d表示跳過。所以y的值是30。答案:30。2.3.3 習題一、選擇題1.設a、b、c為整型變量,若從鍵盤給a、b、c輸入數(shù)據,則正確的輸入語句是。a)scanf(“%f%f%f”,&a,&b,&c) ; b) scanf(“%d%d%d”,&a,&b,&c);c) scanf(“%d%d%d”,a,b,c); d) scanf(“%d%d%d”,&a;&b;&c);2.下列程序執(zhí)行后輸出的結果是。#include<stdio.h>void
12、 main()int x=d;printf(“%c”,a+(x-a+1); a) gb) hc) ed) j3.設整型變量a,b的值均為8。printf(“%d,%d”,(a+,+b),b-);的輸出值是。a)8,8b)8,7c)9,9d)8,94.若有以下程序段,執(zhí)行后輸出的結果是。int m=100,n=0100;printf(“%d,%on”,m,n);a) 100,100b) 100,0100c) 100,4d) 100,045.有以下程序,其輸出結果是。#include <stdio.h>void main() float x=1; int y;x+;y=x+1;prin
13、tf(“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.有以下程序,其輸出結果是。 #include <stdio.h> void main() int a; char c=10; float f=100.0;double x;a=f/=c*=(x=6.5);printf(“%d,%d,%3.1f,%3.1f”,a,c,f,x);a) 1,65,1,6.5b) 1,65,1.5,6.5c) 1,65,1.0,6.5d) 2,65,1.5,6.5二、填空題1.下列程序輸出的結果是 。#inclu
14、de <stdio.h> void main() int x=7,y=5; printf(“y=%dn”, x%y); 2.下列程序輸出的結果是 。#include <stdio.h>void main() float d,f; long k; int i; i=f=k=d=20/3; printf(“%3d%3ld%5.2f%5.2fn”,i,k,f,d);3.下列程序輸出的結果是: 。#include <stdio.h> void main() int k=11;printf(“k=%d,k8=%o,k16=%xn”,k,k,k);4.下列程序輸出結果是
15、:。#include <stdio.h>#define bl “!”void main() printf(“%2sn”,bl); printf(“%15sn”,bl);printf(“%15.4sn”,bl);printf(“%-15.4sn”,bl);5.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數(shù)據形式應該是。int b,c;float a;scanf(“%f,%d,c=%d”,&a,&b,&c);6.當輸入為56789 012345a72時,執(zhí)行下列程序段后,變量i、j、x、y、c的值各是什么?int i,j;float x,y;char
16、 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.從鍵盤輸入一個小寫字母,用大寫形式輸出該字母。4.把16進制數(shù)12a以10進制形式輸出。5.輸入兩個整數(shù),將其值交換。2.3.4 本節(jié)易錯知識點本節(jié)闡述了printf()、scanf()、putchar()和getchar()的具體用法。對于scanf()的用法應注意以下幾點:1) 如果在字符控制串中除了格式說明符以外
17、還有其它字符,則在輸入數(shù)據時應輸入與這些字符相同的字符。例如:scaf(“%d,%d”,&a,&b);輸入時用如下形式:5,6 此處5后面是逗號,它與scanf()函數(shù)字符控制串中的逗號對應。輸入時只能輸入逗號,不可用”空格”替代。2)用%c格式輸入字符時,空格、回車及轉義字符均作為有效字符輸入。例如: scanf(“%c%c%c”,&a,&b,&c);若要使變量a,b,c的值分別為a、b、c,就只能輸入abc<回車>。當使用多個scanf()函數(shù)連續(xù)給多個字符型變量賦值時,注意輸入的方法。例如: scanf(“%c”,&c1); s
18、canf(“%c”,&c2);如果要使得c1的值為a,c2的值為b,則正確輸入方法為:ab<回車>,而不是a<回車>b<回車>。3) 遇到滿足最大字段寬度或非法輸入時認為結束,如:”%2d”,只取兩位數(shù)。如:scanf(“%d%c%f”,&a,&b,&c);若輸入:1234a56p.78則a的值1234,b的值a,c的值56。2.3.5 實驗指導實驗名稱 順序結構程序設計一、實驗目的1.掌握數(shù)據的輸入輸出的方法,能正確使用有關格式轉換符;2.熟悉順序結構程序中語句的執(zhí)行過程;3.掌握順序結構程序的設計方法二、實驗內容與要求1.
19、下列程序作用是依次輸入2個整數(shù),計算并輸出這2個整數(shù)之差。 #include <stdio.h> void main() float a,b,c; printf(“input a,b”n”); scanf(“%d,%d”,&a,&b); c=a-b; printf(“c=%dn”,c); 分析程序,若運行時輸入: 100,60 <回車>后預期結果是多少? 上機運行該程序,查看程序運行結果是否符合題目要求。如果不符合分析原因并修改程序,直至符合要求為止。2.按下列公式計算并輸出s的值,s=3/(a+b)2。有下列程序:#include <stdio.
20、h> void main() int a,b; float s; scanf(“%d,%d”,&a,&b); s=3 /(a+b)*(a+b); /*有兩個錯誤*/printf(“s=%fn”,s); 根據題意修改上述程序,并進行調試,直到正確為止。 在的基礎上,將scanf(“%d,%d”,&a,&b);改為scanf(“%d%d”,&a,&b);后再編譯、鏈接、運行。3.分析下列程序,寫出預期結果,然后輸入調試,查看運行結果與預期結果是否一致并分析其原因。#include "stdio.h"void main() i
21、nt a=-1;unsigned b=65534; printf("%d,%o,%x,%un",a,a,a,a); printf("b=%d",b) ;4.編程并上機調試運行1) 設圓半徑為r=1.5,求圓周長和面積。要求用scanf函數(shù)輸入數(shù)據,輸出時取小數(shù)點后兩位。2) 輸入一個3位十進制整數(shù),分別輸出百位、十位以及個位上的數(shù)。3) 從鍵盤輸入一個帶2位的實數(shù),將其整數(shù)部分和小數(shù)部分分離后輸出。例如:輸入321.54,輸出321.54=321+0.54。4) 用getchar函數(shù)讀入兩個字符,然后分別用putchar和printf函數(shù)輸出這兩字符。2
22、.4 選擇結構程序設計2.4.1 要點導讀1.關系運算符與關系表達式 關系運算是邏輯運算中比較簡單的一種。它的實質是兩個值之間的”比較運算”,其結果只有兩種:”真”、”假”。因此關系表達式的運算結果也只有兩種:”真”、”假”。c語言提供6種關系運算符:>、<、>=、=和!=。在這里>、<、>=、優(yōu)先級相同,=和!=優(yōu)先級相同。前4種的優(yōu)先級高于后兩者。2.邏輯運算符與邏輯表達式邏輯運算符可以將多個關系表達式或邏輯量連接起來,構成邏輯表達式。c語言里提供了3種邏輯運算符:!、&&、|。不同邏輯運算符進行運算所得的結果如下表:ab!a!ba&am
23、p;&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語言中,關系表達式與邏輯表達式的結果用數(shù)據值“1”表示真、“0”表示假。判斷一個表達式時,非“0”即為真、“0”為假。3.if語句的三種基本形式用if語句可以構成選擇結構。它判斷給定的條件是否滿足,以決定執(zhí)行某個分支程序段。c語言的if語句有三種基本的實現(xiàn)形式:if、if-else和if-else if形式。4.switch語句c語言提供了另一種用于多分支選擇的switc
24、h語句,其一般形式為: switch (表達式) case 常量表達式1:語句1 case常量表達式2:語句2case常量表達式n:語句ndefault: 語句n+1 其表達式應為整型、字符型、枚舉型表達式。它的語意是:計算表達式的值,并依次與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句。如果表達式與所有的case后的常量表達式均不相同時,則執(zhí)行default后的語句。2.4.2 經典例題分析1.若有int i;則執(zhí)行語句i=4>3>2;后,i的值為。分析:這是一個關系表達式,在這個表達式中有>和=,可知>的優(yōu)先級高于=,且>
25、的結合性是,所以,先判斷4>3,顯然是為真的,即表達式的值為1。再判斷1是否大于2,顯然不成立為假,即為0,然后把0賦給i,所以i的值為0。答案:0。2.若變量c為char類型,下列選項中能正確判斷出c為數(shù)字字符的表達式是。a )0<=c<=9 b) c>=0&&c<=9 c) c>=0&&c<=9 d) c>=0&c<=9分析:在c語言中要表達a>b>c應該這樣寫a>b&&b>c,因為c為數(shù)字字符,應在09之間,所以應為:c>=0&&c&
26、lt;=9。答案:d。3.已知int x=1,y=2,z=3;則邏輯表達式x<y|+z運算后,z的值是。分析:c語言在計算邏輯表達式時,如果在某一步已得到了整個表達式的結果,則后面的部分將不再計算。對于&&表達式,若已得到一個操作數(shù)為0,則后面的操作數(shù)不再計算。對于|表達式,若已得到一個操作數(shù)為1,則后面的操作數(shù)不再計算。本題中,1<2顯然為真即為1,所以+z不需要再運算了,z的值沒改變,還是為3。答案:3。4.下列程序運行的結果是:。#include <stdio.h> void main()char c=d; if(m<c<=z) pri
27、ntf(“yes”); else printf(“no”);分析:這是if-else形式,格式為:if(表達式) 語句1 else 語句2其語義是:如果表達式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2。本題中,表達式m<c<=z 結果為真,所以執(zhí)行printf(“yes”);答案:yes。5.if(表達式)語句,其中”表達式”。a) 必須是邏輯表達式 b) 必須是關系表達式c) 必須是邏輯表達式和關系表達式 d) 可以是任意合法的表達式分析:表達式一般是關系表達式或邏輯表達式,用于描述選擇結構的條件,但也可以是其它類型的表達式,只要其合法,在其值非0時都視為真,所以其它表達式也可以做i
28、f語句的判斷條件。答案:d。6.下列程序運行結果是:。#include <stdio.h> void main()int a=1; if(a) printf(“yes”); else printf(“no”);分析:if(表達式)中的”表達式”可以是任意合法的,其實質是判斷表達式是真還是假。本題a的值為1,if(a) printf(“yes”); else printf(“no”);的含義是判斷a是否為真(非0),如果為真則輸出”yes”,否則輸出”no”。答案:yes。7.c語言對于嵌套的if語句規(guī)定else 總是匹配。a)與最外層的if b)與之前最近的且未配對的ifc)與之前
29、最近的不帶else的if d)與最近的 之前的if分析:在c語言中,為了避免語句造成二義性,規(guī)定,else總是與它前面最近的未配對的if配對。答案:b。8.下列程序運行結果是:。#include <stdio.h> void main() int x=1,y=2,z=3; if(x<y) if(y<z) printf(“%d”,+z); else printf(“%d”,+y); printf(“%dn”,x+);分析:由if-else匹配規(guī)則可知,else與if(y<z)配對,也就是說當x<y成立時,y<z不成立,執(zhí)行printf(“%d”,+y);
30、y<z成立,則執(zhí)行printf(“%d”,+z);。因為x=1,y=2,很顯然x<y成立,接著判斷y<z是否成立,很顯然是成立的,那么直接執(zhí)行printf(“%dn”,+z);然后執(zhí)行printf(“%dn”,x+);。答案:41。9.若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是。a) switch(x) b) switch(int)x); case 1.0:printf(“*n”); case 1:printf(“*n”);case 2.0:printf(“*n”); case 2:printf(“*n”); c) switc
31、h(a+b) d) switch(a+b) case 1:printf(“*n”); case 1:printf(“*n”); case 2+1:printf(“*n”); case c:printf(“*n”); 分析:c語言提供了另一種用于多分支選擇的switch語句,其一般形式為: switch (表達式) case常量表達式1:語句1 case常量表達式2:語句2case常量表達式n:語句ndefault: 語句n+1表達式一般應為整型、字符型、枚舉型表達式。a選項中case后是浮點型,應為一個整型、字符型或枚舉型常量表達式;b選項switch(int)x);中多了分號,d選項case
32、 c:printf(“*n”);中c是一個變量,應為一個常量表達式。答案:c。10.下列程序執(zhí)行后結果是。#include <stdio.h> void main() 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(“%d”,m);分析:switch語句的意思為:計算表達式的值,并依次與其后的常量表達式值相比較,當表達式的值與某個常量表達式的值相等時,即執(zhí)行其后的語句。如果表達式與所有的case后的常量表達式均
33、不相同時,則執(zhí)行default后的語句。break語句用于跳出switch語句。本題a%3值為1,執(zhí)行case 1:m+;以及后面的語句。b%2值為1,執(zhí)行default: m+;以及后面的語句。答案:3。2.4.3 習題一、選擇題1.下列程序段運行后結果是。 int a,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=3b) a=1,b=3,c=2c) a=1,b=2,c=3d) a=2,b=1,c=12.下列程序運行后的結果是。#include <stdio.h>
34、void main() int a=1,b=2,c=3; if(a+=1&&(+b=3&&c+=3) printf(“%d,%d,%dn”,a,b,c);a) 1,2,3b) 2,3,5c) 2,2,3d) 2,3,43.與y=(x>0?1:x<0?-1:0)的功能相同的if語句是。a) if(x>0) y=1; b) if(x) else if(x<0) y=-1; if(x>0) y=1; else y=0; else if(x<0) y=-1;c) y=-1; d) y=0; if(x) if(x>=0) if(x
35、>0) y=1; if(x>0) y=-1;else if(x=0) y=0; else y=-1;else y=-1;4.有以下程序,執(zhí)行后結果是。#include <stdio.h>void main() int a=5,b=4,c=3,d=2; if(a>b>c) printf(“%dn”,d); else if(c-1)>=d)=1) printf(“%dn”,d+1); else printf(“%dn”,d+2);a) 2 b) 3 c) 4 d) 55.若有定義:float w; int a,b;char c;則合法的switch語句是。
36、 a) switch(b)b) switch(a); case 1.0:printf(“*n”); case 1 printf(“*n”);case 2.0:printf(“*n”); case 2 printf(“*n”); c) switch(b)d) switch(w) case 1:printf(“*n”); case 1:printf(“*n”); case 1+2:printf(“*n”); case c:printf(“*n”); 6.下列程序運行后的結果是。#include <stdio.h>void main() int x=1,a=0,b=0; switch(x
37、) case 0:b+;case 1:a+;case 2:a+;b+;printf(“%d,%dn”,a,b);a) 2,1b) 1,1 c) 1,0 d) 2,2二、填空題1.能正確表述邏輯關系20<x<30或x<-100的c語言表達式是。2.設int a=0,b=0,c=0;c=a+&&b+;則a,b,c的值分別是。3.若從鍵盤輸入58,則以下程序輸出結果是。#include <stdio.h>void main() int a;scanf(“%d”,&a);if(a>50) printf(“%d”,a);if(a<=58)
38、 printf(“%d”,a);if(a>=58) printf(“%d”,a);4.下列程序運行后的結果是 。#include<stdio.h>void main() 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;時,執(zhí)行下列一段程序后,x的值:。 if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7; 6.下列程序運行后的結果是 。#
39、include <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.要求輸入三個數(shù),輸出其中最大值。2.由鍵盤輸入3個數(shù),若輸入的這3個數(shù)可以構成三角形,則計算以這3個數(shù)為邊長的三角形周長;如果不能,則輸出提示錯誤信息。3.從鍵盤上輸入一個整數(shù)判斷其奇偶以及正負。4.判斷方程ax2+bx+c=0的根的個數(shù)。5.從鍵盤輸入表示年份的整數(shù),判
40、斷是否為閏年。判斷閏年的方法是:能被400整除的年是閏年;或者凡是能被4整除但不能被100整除的年是閏年。2.4.4 本節(jié)易錯知識點本節(jié)闡述了邏輯表達式、if、if-else、if-else和switch語句的具體用法。1.在邏輯表達式運算中應注意,如果在某一步已得到了整個表達式結果,則后面的部分將不再計算。例如:c=b&&+a;如果這里b為0,那么+a將不再執(zhí)行,仍為原值。2.在if語句中,應該注意if語句中的表達式可以為所有的合法的表達式。例如:int a=1;if(a=0) printf(“yes”); else printf(“no”); 3.在if語句3種形式中,如果
41、要想在滿足條件是執(zhí)行一組語句,必須使用括起來一個復合語句,但在后面不能加分號。4.在使用switch()語句時應注意:在case后的各個常量表達式值都不能相同;case后允許有多個語句,可以不用 括起來;若每個分支后,都有break語句,則各case和default子句先后順序可以變動而不影響程序結果;default子句可以省略不用。2.4.5 實驗指導實驗名稱 選擇結構程序設計一、實驗目的1.學會正確使用關系運算符和關系表達式;2.學會正確使用邏輯運算符和邏輯表達式以及關系表達式等;3.熟練掌握if語句和switch語句;4.熟悉選擇結構程序中的語句執(zhí)行過程,掌握選擇結構程序設計的方法。二、
42、實驗內容與要求1.編寫程序,判斷從鍵盤上輸入的一個字符,并按下列要求輸出。1) 若該字符是數(shù)字,輸出字符串”0-9”;2) 若該字符是大寫或者小寫字母,輸出字符串”a-z”;3) 若該字符是其他字母,輸出”!,”。#include <stdio.h> void main() char c; scanf(“%c”,&c); if( ) printf(“0-9n”); else if( ) printf(“a-z”); printf(“!,n”);完善上述源程序,對源程序進行編譯、連接,運行程序,并寫出結果。序號輸入數(shù)據預期結果運行結果132g3#2. 編程并上機調試運行1)給
43、出一個不多于4位的正整數(shù),求它是幾位數(shù)?2)給出一個百分制成績,要求輸出成績等級a、b、c、d、e。90分及以上為a, 8089為b,7079為c,6069為d,60以下為e。用switch語句來實現(xiàn)。3)輸入4個整數(shù),要求按從大到小順序輸出。4) 輸入3個整數(shù),將最大數(shù)與最小數(shù)交換。5) 輸入一個字符,如果是數(shù)字字符,把它轉換成相對應的數(shù)字并輸出;如果不是,則以帶符號的十進制整數(shù)形式輸出。2.5 循環(huán)結構程序設計2.5.1 要點導讀1.while語句while語句一般形式為:while(表達式) 語句。它的執(zhí)行過程為:計算表達式的值,當值為真,執(zhí)行循環(huán)體語句。其特點是:先判斷,后執(zhí)行。2.
44、do-while語句do-while語句一般形式為:do 循環(huán)體語句 while(表達式);它的執(zhí)行過程:先執(zhí)行循環(huán)體一次,再判斷表達式的值,若為真則繼續(xù)循環(huán),否則終止循環(huán)。3.for語句for語句是c語言所提供的功能更強,使用更廣泛的一種循環(huán)語句。for語句的一般形式是:for(表達式1;表達式2;表達式3) 其中表達式1一般是賦值表達式,用來給循環(huán)變量賦初值。表達式2一般為關系表達式或邏輯表達式,表示循環(huán)條件,當表達式2為真時,則繼續(xù)循環(huán),否則循環(huán)結束。表達式3一般是賦值語句或自增(自減)語句,用來修改循環(huán)變量的值,表示循環(huán)變量的變化方式。4.轉移語句程序中的語句通??偸前错樞蚍较蚧虬凑Z句
45、功能定義的方向執(zhí)行的。如果需要改變程序的正常流向,可以使用轉移語句。在c語言中提供了4種轉移語句:break,continue,return,goto5.循環(huán)嵌套一個循環(huán)語句的循環(huán)體內包含另一個完整的循環(huán)語句,稱為循環(huán)的嵌套。循環(huán)的嵌套可以組成多重嵌套。2.5.2 經典例題分析1.下列程序段中,while循環(huán)執(zhí)行的次數(shù)是。int k=0;while(k=1) -k;a)無限次b)不能執(zhí)行c)一次也不執(zhí)行d)執(zhí)行1次分析:while語句一般形式為while(表達式) 語句,執(zhí)行過程為:計算表達式的值,當值為真(非0)時,執(zhí)行循環(huán)體語句。其特點是先判斷,后執(zhí)行。本題k初始值為0,當進入循環(huán)的判斷表
46、達式后k的值為1,為真。因為判斷表達式是一個賦值表達式,每次循環(huán)執(zhí)行完之后,k的值總是被賦值為1,判斷表達式一直為真,所以執(zhí)行無限次。答案:a。2.下列兩個程序輸入11后結果分別是。#include <stdio.h> #include <stdio.h> void main() void main() int sum=0,i; int sum=0,i; scanf(“%d”,&i); scanf(“%d”,&i); while(i<=10) do sum=sum+i; sum=sum+i; i+; i+; while(i<=10); pri
47、ntf(“sum=%dn”,sum); printf(“sum=%dn”,sum); 分析:while(表達式) 語句。計算表達式的值,當值為真時,執(zhí)行循環(huán)體語句。do 循環(huán)體語句 while(表達式);先執(zhí)行循環(huán)體一次,在判斷表達式的值,若為真則繼續(xù)循環(huán),否則終止循環(huán)。答案:0,11。3.for(表達式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一般為關系表達式或邏輯表達
48、式,表示循環(huán)條件,當表達式2為真時,則繼續(xù)循環(huán),否則循環(huán)結束。題目中表達式2為空,也就是說本循環(huán)沒有設立條件,那么循環(huán)為無限循環(huán),所以表達式2一直為真(非0)。答案為b。4.下列程序的運行結果是。#include <stdio.h>void main( ) 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); 分析:for語句執(zhí)行過程是 先求表達式1。求解表達式2,若為真,則執(zhí)行for語句的內嵌語句,然后執(zhí)行第3步。若為假
49、,則結束循環(huán),轉到第5步。求解表達式3。轉回上面第2步。循環(huán)結束。當k為1,switch( )語句執(zhí)行完畢后c為2;當k為2,switch( )語句執(zhí)行完畢后c為3,當k為3時,循環(huán)結束,執(zhí)行printf(“%dn”,c);語句。答案:3。5.執(zhí)行以下程序后,輸出#的個數(shù)是。#include <stdio.h> void main() int i,j;for(i=1;i<5;i+)for(j=2;j<=i;j+) putchar(#); 分析:一個循環(huán)語句的循環(huán)體內包含一個完整的循環(huán)語句,稱為循環(huán)嵌套。循環(huán)的嵌套可以組成多重嵌套。各種循環(huán)語句之間可以相互嵌套。本題是一個二重循環(huán),執(zhí)行過程為:把1賦給i,判斷i是否小于5,如果小于,則執(zhí)行第二個for語
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濟南2025年山東濟南市歷下區(qū)所屬事業(yè)單位招聘初級綜合類崗位36人筆試歷年參考題庫附帶答案詳解-1
- 黑龍江旅游職業(yè)技術學院《機車車輛運用與維修》2023-2024學年第二學期期末試卷
- 天津石油職業(yè)技術學院《信號與系統(tǒng)實驗》2023-2024學年第二學期期末試卷
- 陜西電子信息職業(yè)技術學院《生物化學雙語》2023-2024學年第二學期期末試卷
- 漳州理工職業(yè)學院《應用開發(fā)》2023-2024學年第二學期期末試卷
- 瓊臺師范學院《普通化學(Ⅰ)(上)》2023-2024學年第二學期期末試卷
- 西南民族大學《公差與測量技術》2023-2024學年第二學期期末試卷
- 湛江幼兒師范??茖W?!抖嗝襟w課件設計》2023-2024學年第二學期期末試卷
- 明達職業(yè)技術學院《學術文化與科研能力》2023-2024學年第二學期期末試卷
- 長江藝術工程職業(yè)學院《中學思想政治教育教學研究方法》2023-2024學年第二學期期末試卷
- 新能源汽車電氣技術 課件 項目一 新能源汽車電氣維修基礎認知
- 人教版初中九年級下學期體育教案全集(附教學計劃)
- 2024年湘潭醫(yī)衛(wèi)職業(yè)技術學院單招職業(yè)技能測試題庫及答案解析
- 2024年黑龍江職業(yè)學院單招職業(yè)技能測試題庫及答案解析
- 礦山井架設計規(guī)范
- 空天地一體化公路智能巡查技術應用與實踐
- CJJ129-2009 城市快速路設計規(guī)程
- punctuation-英語標點的使用
- 股權糾紛案例分析申訴報告
- 2022云南省中考道法真題試卷和答案
- 如何在質保到期后提供售后服務
評論
0/150
提交評論