C語言習題順序選擇循環(huán)_第1頁
C語言習題順序選擇循環(huán)_第2頁
C語言習題順序選擇循環(huán)_第3頁
C語言習題順序選擇循環(huán)_第4頁
C語言習題順序選擇循環(huán)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

次序構(gòu)造程序設(shè)計重點導讀( )與scanf( )語句。printf( )與scanf( )語句是最通用的輸入輸出函數(shù),它們能夠在程序設(shè)計者的控制下以各樣格式分別實現(xiàn)數(shù)據(jù)的輸出和輸入操作。它們位于庫文件中。字符數(shù)據(jù)的輸入輸出。最簡單的字符輸入輸出函數(shù)是getchar( )和putchar( )。二者分別從鍵盤讀一個字符或向顯示屏寫一個字符。經(jīng)典例題分析1.以下程序運轉(zhuǎn)后輸出的結(jié)果是。#include<>voidmain( ){inta=0,b=0;a=10;b=20;printf(“a+b=%d”,a+b);}分析:printf( )是輸出函數(shù),它的括號內(nèi)由兩部分構(gòu)成:1)控制字符串,是用雙引號括起來的字符串,它包含兩種信息:格式說明。由”%”和格式字符構(gòu)成,如:%d、%f、%c等。它的作用是將輸出的數(shù)據(jù)變換成指定的格式輸出。一般字符。需要原樣輸出的字符。2)”輸出表列”是需要輸出的一些數(shù)據(jù),能夠是表達式。題目中a的值是10,b的值是20,在printf(“a+b=%d”,a+b);格式說明輸出表列中,”a+b=“是一般字符,需原樣輸出。輸出表列是一個表達式,它的結(jié)果以整型輸出。答案:a+b=30。2.以下程序運轉(zhuǎn)后輸出的結(jié)果是

。#include<>voidmain( ){inta=732;printf(“%d\n”,a);printf(“%2d\n”,a);printf(“%10d\n”,a);printf(“%-10d\n”,a);}分析:d格式符,用來輸出十進制整數(shù)。此中為指定的輸出字段的寬度。假如數(shù)據(jù)的位數(shù)小于位數(shù)輸出。

%d,按整型數(shù)據(jù)的實質(zhì)長度輸出。%md,mm,則左端補以空格,若大于m,則按實質(zhì)printf(“%d\n”,a);把a的值按原樣輸出:732。printf(“%2d\n”,a);結(jié)果占2列,但732占3列大于2列,所以按實質(zhì)位數(shù)輸出:732。printf(%10d\n”,a);結(jié)果占10列,但732占3列小于10列,所以左端補7個空格。printf(“%-10d\n”,a);結(jié)果占10列,“-”表示把數(shù)值放到左端,732占3列小于10列,所以右端補7個空格。答案:732732□□□□□□□732

/*

□表示空格

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

chara=

103’;則語句

printf(

“%3d”,a);

履行后的輸出結(jié)果為(□表示空格)。A)□67

B)’c’

C)67□

D)103分析:’\103’是一個轉(zhuǎn)義字符,表示一個八進制數(shù)所代表的字符,變換為十進制為67。printf(“%3d”,a);把’\103’變換為十進制數(shù)輸出,結(jié)果占3列。但67占于要求的3列,所以左補空格,即□67。答案:C。

2列,小4.以下程序運轉(zhuǎn)后結(jié)果是

。#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格式符,用來輸出實數(shù),以小數(shù)形式輸出,小數(shù)點后輸出6位。所以printf(“%f\n”,a);輸出結(jié)果為。%是指,要輸出的數(shù)占m列,同時小數(shù)點保存n位(四舍五入),假如輸出的數(shù)大于m,則原樣輸出,同時小數(shù)點保存n位(四舍五入)。假如小于m,則左補空格,同時小數(shù)點保留n位(四舍五入)。printf(“%4.2f\n”,a);輸出結(jié)果為。printf(“%3.1f\n”,a);輸出結(jié)果為。e格式符,以規(guī)范化指數(shù)的形式輸出,所以printf(“%e\n”,a);+03。答案:+03□□/*(□表示空格)*/□□5.以下程序運轉(zhuǎn)后結(jié)果是

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

B)127

C)255

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

1個字節(jié),而x被賦值為一個x的值為7fH。履行printf(

4位16進制的“%d\n”,x);即把x以有符號的十進制整數(shù)輸出。答案:B。6.設(shè)intb=0;以下語句的輸出結(jié)果是。printf(“%d,%d”,++b,b--);A)1,1B)1,0C)0,0D)0,-1分析:printf函數(shù)的履行次序是由右到左,輸出次序是由左向右。答案:C。7.以下程序運轉(zhuǎn)時,若從鍵盤輸入:123<回車>45678<回車>后結(jié)果是。#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函數(shù);”地點表列”是由若干個地點構(gòu)成的表列,能夠是變量的地點,或字符串的首地點。其scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)的作用是:依據(jù)c1,c2,c3,c4在內(nèi)存的地點將c1,c2,c3,c4的值存進去。因為”%c”表示按字符形式輸入數(shù)據(jù),所以”回車符”作為一個字符,輸入有效。getchar( )函數(shù)的作用從終端輸入一個字符。putchar( )函數(shù)的作用是向終端輸出一個字符。所以c1=1、c2=2、c3=3、c4=回車,c5=4、c6=5。答案:1245。8.設(shè)有定義

inta;floatb;

履行

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

語句時,若從鍵盤輸入

876<回車>,a和

b的值分別是

。分析:scanf( )能夠指定輸入數(shù)據(jù)所占的列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。%2d說明了a占兩列,即為87,剩下的數(shù)字應當賦給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中假如在字符控制串中除了格式說明符之外還有其余字符,則在輸入數(shù)據(jù)時應輸入與這些同樣的字符。答案:B。10.設(shè)有

intx,y;scanf(

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

從鍵盤輸入數(shù)據(jù)

10□20□30<回車

>后,y

的值是

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

y的值是

30。答案:30。習題一、選擇題1.設(shè)

a、b、c

為整型變量,若從鍵盤給

a、b、c

輸入數(shù)據(jù),則正確的輸入語句是

。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.以下程序履行后輸出的結(jié)果是

。#include<>voidmain( ){intx=

‘d’;printf(

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

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

B)H

C)E

D)J3.設(shè)整型變量

a,b

的值均為

8。printf(

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

--);

的輸出值是。A)8,8

B)8,7

C)9,9

D)8,94.如有以下程序段,履行后輸出的結(jié)果是。intm=100,n=0100;printf(“%d,%o\n”,m,n);A)100,100B)100,0100C)100,4D)100,045.有以下程序,其輸出結(jié)果是。#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.有以下程序,其輸出結(jié)果是

。#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.以下程序輸出的結(jié)果是

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

n”,x%y);}2.以下程序輸出的結(jié)果是

。#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.以下程序輸出的結(jié)果是:。#include<>voidmain( ){intk=11;printf(“k=%d,k8=%o,k16=%x\n”,k,k,k);}4.以下程序輸出結(jié)果是:。#include<>#defineBL“main( ){printf(“%2sn”,BL);printf(“%15sn”,BL);printf(“%n”,BL);printf(“%n”,BL);}5.若想經(jīng)過以下輸入語句使a=,b=4,c=3,則輸入數(shù)據(jù)形式應當是。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.輸入一個華氏溫度,要求輸出攝氏溫度(結(jié)果保存2位)。公式為c=5/9*(f-32)。從鍵盤輸入一個小寫字母,用大寫形式輸出該字母。把16進制數(shù)12a以10進制形式輸出。輸入兩個整數(shù),將其值互換。本節(jié)易錯知識點本節(jié)論述了printf( )、scanf( )、putchar( )和getchar( )的詳細用法。關(guān)于scanf( )的用法應注意以下幾點:假如在字符控制串中除了格式說明符之外還有其余字符,則在輸入數(shù)據(jù)時應輸入與這些字符同樣的字符。比方:scaf(“%d,%d”,&a,&b);輸入時用以下形式:5,6此處5后邊是逗號,它與scanf( )函數(shù)字符控制串中的逗號對應。輸入時只好輸入逗號,不行用”空格”代替。2)用%c格式輸入字符時,空格、回車及轉(zhuǎn)義字符均作為有效字符輸入。比方:scanf(若要使變量a,b,c

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

C’,就只好輸入

ABC<回車>。當使用多個scanf( )函數(shù)連續(xù)給多個字符型變量賦值時,注意輸入的方法。比方:scanf(“%c”,&c1);scanf(“%c”,&c2);假如要使得c1的值為’a’,c2的值為’b’,則正確輸入方法為:ab<回車>,而不是a<回車>b<回車>。碰到滿足最大字段寬度或非法輸入時認為結(jié)束,如:”%2d”,只取兩位數(shù)。如:scanf(“%d%c%f”,&a,&b,&c);若輸入:1234a則a的值1234,b的值a,c的值56。實驗指導實驗名稱次序構(gòu)造程序設(shè)計一、實驗目的掌握數(shù)據(jù)的輸入輸出的方法,能正確使用相關(guān)格式變換符;熟習次序構(gòu)造程序中語句的履行過程;掌握次序構(gòu)造程序的設(shè)計方法二、實驗內(nèi)容與要求1.以下程序作用是挨次輸入

2個整數(shù),計算并輸出這

2個整數(shù)之差。#include<>voidmain( ){floata,b,c;printf(“inputa,b”\n”);scanf(“%d,%d”,&a,&b);c=a-b;printf(“c=%d\n”,c);}①分析程序,若運轉(zhuǎn)時輸入:100,60<回車>后預期結(jié)果是多少?②上機運轉(zhuǎn)該程序,查察程序運轉(zhuǎn)結(jié)果能否符合題目要求。假如不符合分析原由并改正程序,直至符合要求為止。按以下公式計算并輸出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);

/*

有兩個錯誤

*/}①依據(jù)題意改正上述程序,并進行調(diào)試,直到正確為止。②在①的基礎(chǔ)上,將scanf(“%d,%d”,&a,&b);改為scanf(“%d%d”,&a,&b);后再編譯、鏈接、運轉(zhuǎn)。分析以下程序,寫出預期結(jié)果,而后輸入調(diào)試,查察運轉(zhuǎn)結(jié)果與預期結(jié)果能否一致并分析其原由。#include""voidmain( ){inta=-1;unsignedb=65534;printf("%d,%o,%x,%u\n",a,a,a,a);printf("b=%d",b);}編程并上機調(diào)試運轉(zhuǎn)設(shè)圓半徑為r=,求圓周長和面積。要求用scanf函數(shù)輸入數(shù)據(jù),輸出時取小數(shù)點后兩位。輸入一個3位十進制整數(shù),分別輸出百位、十位以及個位上的數(shù)。3)從鍵盤輸入一個帶2位的實數(shù),將其整數(shù)部分和小數(shù)部分分別后輸出。比方:輸入,輸出=321+。4)用getchar函數(shù)讀入兩個字符,而后分別用putchar和printf函數(shù)輸出這兩字符。選擇構(gòu)造程序設(shè)計重點導讀關(guān)系運算符與關(guān)系表達式關(guān)系運算是邏輯運算中比較簡單的一種。它的實質(zhì)是兩個值之間的”比較運算”,其結(jié)果只有兩種:”真”、”假”。所以關(guān)系表達式的運算結(jié)果也只有兩種:”真”、”假”。C語言供給6種關(guān)系運算符:>、<、>=、==和!=。在這里>、<、>=、優(yōu)先級同樣,==和!=優(yōu)先級同樣。前4種的優(yōu)先級高于后二者。邏輯運算符與邏輯表達式邏輯運算符能夠?qū)⒍鄠€關(guān)系表達式或邏輯量連結(jié)起來,構(gòu)成邏輯表達式。C語言里供給了3種邏輯運算符:!、&&、||。不一樣邏輯運算符進行運算所得的結(jié)果以下表: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語言中,關(guān)系表達式與邏輯表達式的結(jié)果用數(shù)據(jù)值“1”表示真、“0”表示假。判斷一個表達式時,非“0”即為真、“0”為假。語句的三種基本形式用if語句能夠構(gòu)成選擇構(gòu)造。它判斷給定的條件能否滿足,以決定履行某個分支程序段。C語言的if語句有三種基本的實現(xiàn)形式:if、if-else和if-elseif形式。語句C語言供給了另一種用于多分支選擇的switch語句,其一般形式為:switch(表達式){case常量表達式1:語句1case常量表達式2:語句2case常量表達式n:語句ndefault:語句n+1}其表達式應為整型、字符型、列舉型表達式。它的語意是:計算表達式的值,并挨次與此后的常量表達式值對比較,當表達式的值與某個常量表達式的值相等時,即履行此后的語句。假如表達式與所有的case后的常量表達式均不同樣時,則履行default后的語句。經(jīng)典例題分析1.如有

inti;

則履行語句

i=4>3>2;

后,i

的值為

。分析:這是一個關(guān)系表達式,在這個表達式中有’>‘和’=‘,可知’>‘的優(yōu)先級高于’=‘,且’>‘的聯(lián)合性是→,所以,先判斷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語言中要表達在’0’~’9’之間,所以應為:答案:D。

a>b>c應當這樣寫a>b&&b>c,因為c>=‘0’&&c<=‘9’。

c為數(shù)字字符,應3.已知

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

則邏輯表達式

x<y||++z

運算后,

z的值是

。分析:C語言在計算邏輯表達式時,假如在某一步已獲得了整個表達式的結(jié)果,則后邊的部分將不再計算。關(guān)于&&表達式,若已獲得一個操作數(shù)為0,則后邊的操作數(shù)不再計算。關(guān)于||表達式,若已獲得一個操作數(shù)為1,則后邊的操作數(shù)不再計算。此題中,1<2明顯為真即為1,所以++z不需要再運算了,z的值沒改變,還是為3。答案:3。4.以下程序運轉(zhuǎn)的結(jié)果是:

。#include<>voidmain( ){charc=

‘d’;if(

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

“YES”);elseprintf(

“NO”);}分析:這是if-else形式,格式為:if(表達式)語句1else語句2其語義是:假如表達式的值為真,則履行語句1,不然履行語句式’m’<c<=‘z’結(jié)果為真,所以履行printf(“YES”);

2。此題中,表達答案:YES。(表達式)語句,此中”表達式”

。A)一定是邏輯表達式

B)

一定是關(guān)系表達式C)一定是邏輯表達式和關(guān)系表達式D)能夠是隨意合法的表達式分析:表達式一般是關(guān)系表達式或邏輯表達式,用于描繪選擇構(gòu)造的條件,但也能夠是其余種類的表達式,只需其合法,在其值非0時都視為真,所以其余表達式也能夠做if語句的判斷條件。答案:D。6.以下程序運轉(zhuǎn)結(jié)果是:

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

“YES”);“NO”);}分析:if(表達式)中的”表達式”能夠是隨意合法的,此題a的值為1,if(a)printf(“YES”);elseprintf(真(非0),假如為真則輸出”YES”,不然輸出”NO”。答案:YES。

其實質(zhì)是判斷表達式是真還是假?!癗O”);的含義是判斷a能否為語言關(guān)于嵌套的if語句規(guī)定else老是般配。A)與最外層的ifB)與以前近來的且未配對的ifC)與以前近來的不帶else的ifD)與近來的{}以前的if分析:在C語言中,為了防范語句造成二義性,規(guī)定,else老是與它前面近來的未配對的if配對。答案:B。8.以下程序運轉(zhuǎn)結(jié)果是:

。#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般配規(guī)則可知,不建立,履行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.以下程序履行后結(jié)果是

。#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.以下程序段運轉(zhuǎn)后結(jié)果是。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.以下程序運轉(zhuǎn)后的結(jié)果是

。#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.有以下程序,履行后結(jié)果是

。#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.以下程序運轉(zhuǎn)后的結(jié)果是

。#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.能正確表述邏輯關(guān)系20<x<30或x<-100的C語言表達式是。2.設(shè)inta=0,b=0,c=0;c=a++&&b++;則a,b,c的值分別是。3.若從鍵盤輸入58,則以下程序輸出結(jié)果是。#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.以下程序運轉(zhuǎn)后的結(jié)果是

。#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.以下程序運轉(zhuǎn)后的結(jié)果是。#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);}三、編程題要求輸入三個數(shù),輸出此中最大值。2.由鍵盤輸入3個數(shù),若輸入的這3個數(shù)能夠構(gòu)成三角形,則計算以這3個數(shù)為邊長的三角形周長;假如不可以,則輸出提示錯誤信息。從鍵盤上輸入一個整數(shù)判斷其奇偶以及正負。判斷方程ax2+bx+c=0的根的個數(shù)。5.從鍵盤輸入表示年份的整數(shù),判斷能否為閏年。判斷閏年的方法是:能被400整除的年是閏年;或許凡是能被4整除但不可以被100整除的年是閏年。本節(jié)易錯知識點本節(jié)論述了邏輯表達式、if、if-else、if-else和switch語句的詳細用法。1.在邏輯表達式運算中應注意,假如在某一步已獲得了整個表達式結(jié)果,則后邊的部分將不再計算。比方: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子句先后次序能夠改動而不影響程序結(jié)果;default子句能夠省略不用。實驗指導實驗名稱選擇構(gòu)造程序設(shè)計一、實驗目的學會正確使用關(guān)系運算符和關(guān)系表達式;學會正確使用邏輯運算符和邏輯表達式以及關(guān)系表達式等;嫻熟掌握if語句和switch語句;熟習選擇構(gòu)造程序中的語句履行過程,掌握選擇構(gòu)造程序設(shè)計的方法。二、實驗內(nèi)容與要求編寫程序,判斷從鍵盤上輸入的一個字符,并按以下要求輸出。若該字符是數(shù)字,輸出字符串”0-9”;若該字符是大寫或許小寫字母,輸出字符串”A-z”;若該字符是其余字母,輸出”!,@,”。#include<>voidmain( ){charc;scanf(

“%c”,&c);if(

)printf(

“0-9\n

”);elseif(

)printf(

“A-z”);printf(

“!,@,

\n”);}完美上述源程序,對源程序進行編譯、連結(jié),運轉(zhuǎn)程序,并寫出結(jié)果。序輸入數(shù)據(jù)預期結(jié)果運轉(zhuǎn)結(jié)果號3G#編程并上機調(diào)試運轉(zhuǎn)1)給出一個不多于4位的正整數(shù),求它是幾位數(shù)?2)給出一個百分制成績,要求輸出成績等級’A’、’B’、’C’、’D’、’E’。90分及以上為’A’,80~89為’B’,70~79為’C’,60~69為’D’,60以下為’E’。用switch語句來實現(xiàn)。3)輸入4個整數(shù),要求按從大到小次序輸出。輸入3個整數(shù),將最大數(shù)與最小數(shù)互換。輸入一個字符,假如是數(shù)字字符,把它變換成相對應的數(shù)字并輸出;假如不是,則以帶符號的十進制整數(shù)形式輸出。循環(huán)構(gòu)造程序設(shè)計重點導讀語句while語句一般形式為:while(表達式)語句。它的履行過程為:計算表達式的值,當值為真,履行循環(huán)體語句。其特色是:先判斷,后履行。2.do-while

語句do-while

語句一般形式為:

do

循環(huán)體語句

while

(表達式);它的履行過程:先履行循環(huán)體一次,再判斷表達式的值,若為真則連續(xù)循環(huán),不然停止循環(huán)。語句for語句是C語言所供給的功能更強,使用更寬泛的一種循環(huán)語句。for語句的一般形式是:for(表達式1;表達式2;表達式3)此中表達式1一般是賦值表達式,用來給循環(huán)變量賦初值。表達式2一般為關(guān)系表達式或邏輯表達式,表示循環(huán)條件,當表達式2為真時,則連續(xù)循環(huán),不然循環(huán)結(jié)束。表達式一般是賦值語句或自增(自減)語句,用來改正循環(huán)變量的值,表示循環(huán)變量的變化方式。

34.轉(zhuǎn)移語句程序中的語句平常老是按次次方向或按語句功能定義的方向履行的。的正常流向,能夠使用轉(zhuǎn)移語句。在C語言中供給了4種轉(zhuǎn)移語句:

假如需要改變程序break,continue,return,goto5.循環(huán)嵌套一個循環(huán)語句的循環(huán)體內(nèi)包含另一個完好的循環(huán)語句,稱為循環(huán)的嵌套。循環(huán)的嵌套能夠構(gòu)成多重嵌套。經(jīng)典例題分析1.以下程序段中,while循環(huán)履行的次數(shù)是。intk=0;while(k=1)--k;A)無窮次B)不可以履行C)一次也不履行D)履行1次分析:while語句一般形式為while(表達式)語句,履行過程為:計算表達式的值,當值為真(非0)時,履行循環(huán)體語句。其特色是先判斷,后履行。此題k初始值為0,當進入循環(huán)的判斷表達式后k的值為1,為真。因為判斷表達式是一個賦值表達式,每次循環(huán)執(zhí)行完以后,k的值老是被賦值為1,判斷表達式向來為真,所以履行無窮次。答案:A。2.以下兩個程序輸入

11后結(jié)果分別是

。#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(表達式)語句。計算表達式的值,當值為真時,履行循環(huán)體語句。循環(huán)體語句while(表達式);先履行循環(huán)體一次,在判斷表達式的值,若為真則連續(xù)循環(huán),不然停止循環(huán)。答案: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一般為關(guān)系表達式或邏輯表達式,表示循環(huán)條件,當表達式2為真時,則連續(xù)循環(huán),不然循環(huán)結(jié)束。題目中表達式2為空,也就是說本循環(huán)沒有建立條件,那么循環(huán)為無窮循環(huán),所以表達式2向來為真(非0)。答案為B。4.以下程序的運轉(zhuǎn)結(jié)果是。#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語句的內(nèi)嵌語句,而后履行第3步。若為假,則結(jié)束循環(huán),轉(zhuǎn)到第5步。③求解表達式3。④轉(zhuǎn)回上邊第2步。⑤循環(huán)結(jié)束。當k為1,switch( )語句履行完成后c為2;當k為2,switch( )語句履行完成后c為3,當k為3時,循環(huán)結(jié)束,履行printf(“%d\n”,c);語句。答案:3。5.履行以下程序后,輸出’#’的個數(shù)是。#include<>voidmain( ){inti,j;for(i=1;i<5;i++)for(j=2;j<=i;j++)putchar(‘#’);}分析:一個循環(huán)語句的循環(huán)體內(nèi)包含一個完好的循環(huán)語句,稱為循環(huán)嵌套。循環(huán)的嵌套能夠構(gòu)成多重嵌套。各樣循環(huán)語句之間能夠互相嵌套。此題是一個二重循環(huán),履行過程為:把1賦給i,判斷i能否小于5,假如小于,則履行第二個for語句循環(huán),直到第二個for語句的循環(huán)結(jié)束,返回上一層履行i的自加,判斷能否小于5,假如條件建立,則連續(xù)履行第二個for循環(huán)。直到第一個循環(huán)的i等于5時,整個循環(huán)結(jié)束。所以輸出6個’#‘。答案:6。6.以下程序運轉(zhuǎn)后的輸出結(jié)果是。#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)程序進入死循環(huán)分析:break語句用在switch語句或循環(huán)語句中,其作用是跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去履行后邊的程序。continue語句只好用在循環(huán)體中,其作用是結(jié)束本次循環(huán),即不再履行循環(huán)體中continue語句以后的語句,轉(zhuǎn)入下一次循環(huán)。答案:D。習題一、選擇題1.語句

while(!c);

中的條件!c

等價于

。A)c==0

B)c!=1

C)c!=0

D)-c2.設(shè)有以下程序,運轉(zhuǎn)結(jié)果是

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

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

D)7413.以下程序段的輸出結(jié)果是

。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.以下程序段的輸出結(jié)果是。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個整數(shù),請?zhí)钊胍粋€整數(shù)。for(i=0;i<=;printf(“%d\n”,i+=2));2.若輸入字符串:abcde<回車>,則以下while循環(huán)體將履行

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

‘e’)printf(

“*”);}3.以下程序在運轉(zhuǎn)時,假如從鍵盤輸入1298,則結(jié)果是。#include<>voidmain( ){intn1,n2;scanf(“%d”,&n2);while(n2!=0){n1=n2%10;n2=n2/10;printf(

“%d”,n1);}}4.以下程序運轉(zhuǎn)結(jié)果是#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.以下程序運轉(zhuǎn)結(jié)果是。#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.以下程序運轉(zhuǎn)后結(jié)果是。#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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論