C語言學生成績分等級及分組匯總_第1頁
C語言學生成績分等級及分組匯總_第2頁
C語言學生成績分等級及分組匯總_第3頁
C語言學生成績分等級及分組匯總_第4頁
C語言學生成績分等級及分組匯總_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學1C語言學生成績分等級及分組匯總任務1尋找最大值與最小值

3.1.1三種基本控制結構三種基本結構:順序結構、分支結構、循環(huán)結構

S1S2S2S1條件S1條件(a)順序結構(b)選擇結構(c)循環(huán)結構圖3.1三種基本控制結構流程圖第1頁/共50頁任務1尋找最大值與最小值

3.1.1三種基本控制結構

結構化程序設計基本思想:任何程序都可以用三種基本結構表示,結構化程序:由三種基本結構反復嵌套構成的程序。優(yōu)點:結構清晰,易讀,提高程序設計質(zhì)量和效率。第2頁/共50頁任務1尋找最大值與最小值

3.1.2if語句輸入兩個整數(shù),輸出其中的較大數(shù)voidmain(){inta,b,max;

printf(“\ninputtwonumbers:”);scanf("%d%d",&a,&b);

max=a;

if(max<b)max=b;

printf("max=%d",max);}形式1:if(表達式)語句;語句表達式=0!=0第3頁/共50頁main(){inta=2,b=3,c=4;

if(a=b)c=a; printf(“%d”,c);}3任務1尋找最大值與最小值

3.1.2if語句第4頁/共50頁形式2:if(表達式)語句1;else語句2;!=0語句2語句1表達式=0例3.2輸入兩個整數(shù),輸出其中的較大數(shù)。

main(){inta,b;

printf("inputtwonumbers:");

scanf("%d%d",&a,&b);

if(a>b)

printf("max=%d\n",a);

elseprintf("max=%d\n",b);}任務1尋找最大值與最小值

3.1.2if語句第5頁/共50頁形式3:

if(表達式1)語句1;

elseif(表達式2)語句2;

elseif(表達式3)語句3;

…………

else

語句n;表達式1語句1!=0=0表達式2表達式3語句n語句3語句2!=0!=0=0=0任務1尋找最大值與最小值

3.1.2if語句第6頁/共50頁voidmain(){charc;

printf(“inputacharacter:”);

c=getchar();

if(c<32)

printf(“Thisisacontrolcharacter\n”);

elseif(c>=‘0’&&c<=‘9’)

printf(“Thisisadigit\n”);

elseif(c>=‘A’&&c<=‘Z’)

printf(“Thisisacapitalletter\n”);

elseif(c>=‘a(chǎn)’&&c<=‘z’)

printf(“Thisisasmallletter\n”);

else

printf("Thisisanothercharacter\n");}任務1尋找最大值與最小值

3.1.2if語句第7頁/共50頁練習:輸入一個年份,判斷是否為閏年,是閏年輸出為“××isaleapyear!”,否則輸出為“××isn’taleapyear!”。。 任務1尋找最大值與最小值

3.1.2if語句第8頁/共50頁注意:①在三種形式的if語句中,在if關鍵字之后均為表達式。該表達式通常是邏輯表達式或關系表達式,但也可以是其它表達式,如賦值表達式等,甚至也可以是一個變量。main(){inta=2,b=3;if(a=b)

printf(“%d”,a);

if(3)

printf(“OK”);if(‘a(chǎn)’)

printf(“%d”,‘a(chǎn)’);3OK97任務1尋找最大值與最小值

3.1.3if語句使用注意事項第9頁/共50頁②在if語句中,條件判斷表達式必須用括號括起,在語句之后必須加分號。③在if語句的三種形式中,所有的語句應為單個語句,如果要想在滿足條件時執(zhí)行一組(多個)語句,則必須把這一組語句用{}括起來組成一個復合語句。但要注意的是在}之后不能再加分號。例如:if(a>b){a++;b++;}else{a=0;b=10;}任務1尋找最大值與最小值

3.1.3if語句使用注意事項第10頁/共50頁任務1尋找最大值與最小值

3.1.4條件運算符和條件表達式

條件運算符:?:三目運算符

條件表達式:由條件運算符組成條件表達式 表達式1?表達式2:表達式3

條件運算符不能分開單獨使用,?:配套使用

例如:if(a>b)max=a;

elsemax=b;可用條件表達式寫為

max=(a>b)?a:b;

max=a>b?a:b;

第11頁/共50頁編程:輸入一個字符,判別它是否為大寫字母,如果是,將轉換成小寫字母,如果不是,則不轉換,然后輸出得到的字符。

main(){charch,c;

scanf(“%c”,&ch);

if(ch>=’A’&&ch<=’Z’)

c=ch+32;

elsec=ch;

printf("%c”,c);

}

條件語句部分用下面的條件表達式來代替:

c=ch>=’A’&&ch<=’Z’?ch+32:ch第12頁/共50頁練習

小組成員3人參與數(shù)學期末考試,要求尋找最高分和最低分。第13頁/共50頁任務2將學生成績分等級

教師對全班同學的一次考試成績進行百分制評分,輸出對應的等級分。共分A、B、C、D、E五個等級。90分以上為A,81-89分為B,70-79分為C,60-69分為D,60分以下為E。。第14頁/共50頁3.2.1switch語句(不帶break語句)一般形式為:switch(表達式){case常量表達式1:語句1;

case常量表達式2:語句2;

…...

case常量表達式n:語句n;

[default:語句n+1;]}例3.7從鍵盤輸入一個數(shù)字,則輸出一個英文單詞。voidmain(){inta;

printf("inputintegernumber:");

scanf("%d",&a);

switch(a){case1:printf("Monday\n");

case2:printf("Tuesday\n");

case3:printf("Wednesday\n");

case4:printf("Thursday\n");

case5:printf("Friday\n");

case6:printf("Saturday\n");

case7:printf("Sunday\n");

default:printf("error\n");

}}任務2將學生成績分等級第15頁/共50頁3.2.2

switch語句(帶break語句)一般形式為:

switch(表達式){case常量表達式1:語句1;break;

case常量表達式2:語句2;break;

case常量表達式n:語句n;break;

[default:語句n+1;[break;]]

}voidmain(){inta;

printf("inputintegernumber:");

scanf("%d",&a);

switch(a){case1:printf("Monday\n");break;

case2:printf("Tuesday\n");break;

case3:printf("Wednesday\n");break;

case4:printf("Thursday\n");break;

case5:printf("Friday\n");break;

case6:printf("Saturday\n");break;

case7:printf("Sunday\n");break;

default:printf("error\n");}}任務2將學生成績分等級第16頁/共50頁練習編程:運輸公司對用戶計算運費。路程(s)越遠,每公里運費越低。標準如下:

s<=250沒有折扣

250<=s<5002%折扣

500<=s<10005%折扣

1000<=s<20008%折扣

2000<=s<300010%折扣

s>=300015%折扣設每公里每噸貨物的基本運費為p,貨物重為w,距離為s,折扣為d,則總運費的計算公式為:

f=p*w*s*(1-d)

第17頁/共50頁3.2.3switch語句使用注意事項(1)在每個case后的各常量表達式的值應互不能相同,否則會出現(xiàn)錯誤。(2)在每個case后允許有多個語句,可以不用{}括起來。(3)許多個case共用一個語句序列。(4)如果每個case中都有break語句,那么case和default出現(xiàn)的次序不會影響程序的運行結果。(5)default子句可以省略不用。(6)字符常數(shù)出現(xiàn)在case中,它們會自動轉換成整型。(7)switch可以嵌套使用,要求內(nèi)層的switch必須完全包含在外層的某個case中,內(nèi)、外層switch的case中含有相同的常數(shù),不會引起誤會。(8)switch語句只能進行相等性檢查,而if不但可進行相等性檢查,還可以計算關系或邏輯表達式。因此switch語句不能完全替代if語句。任務2將學生成績分等級第18頁/共50頁練習1、編程:用戶輸入運算數(shù)和四則運算符,輸出計算結果。2、本任務對某位同學的一次考試成績進行百分制評分,共分A、B、C、D、E五個等級,90分以上為‘A’,80~89分為‘B’,70~79分為‘C’、60~69分為‘D’,60分以下為‘E’。

第19頁/共50頁任務3統(tǒng)計一組學生的總分及平均分

數(shù)學期末考試成績出來了,一個小組有成員10人,要求計算這一組的成績總分與平均分,并按要求輸出。第20頁/共50頁3.3.1for語句的一般形式為:for(表達式1;表達式2;表達3)

語句;

表達式1:通常用來給循環(huán)變量賦初值,一般是賦值表達式,也允許在for語句外給循環(huán)變量賦初值,此時可以省略該表達式。

表達式2:通常是循環(huán)條件,一般為關系表達式或邏輯表達式。

表達式3:

通??捎脕硇薷难h(huán)變量的值,一般是賦值語句。語句:

為循環(huán)體語句。表達式1表達式3表達式2?語句YN任務3統(tǒng)計一組學生的總分及平均分第21頁/共50頁問題3.10用for語句計算s=1+2+3+……+99+100voidmain(){intn,s=0;

for(n=1;n<=100;n++)

s=s+n;

printf("s=%d\n",s);}從0開始,輸出n個連續(xù)的偶數(shù)voidmain()

{inta=0,n;

printf("\ninputn:");

scanf("%d",&n);

for(;n>0;a++,n--)

printf("%d",a*2);

}任務3統(tǒng)計一組學生的總分及平均分第22頁/共50頁練習1、編程:從0開始,輸出n個連續(xù)的偶數(shù)。

第23頁/共50頁for語句使用注意事項②在循環(huán)變量已賦初值時,可省去表達式1,如例3.11

即屬于這種情形。①for語句中的各表達式都可省略,但分號間隔符不能少。如:for(;表達式;表達式)省去了表達式1。

for(表達式;;表達式)省去了表達式2。

for(表達式;表達式;)省去了表達式3。

for(;;)省去了全部表達式。③如省去表達式2或表達式3則將造成無限循環(huán),這時應在循環(huán)體內(nèi)設法結束循環(huán)任務3統(tǒng)計一組學生的總分及平均分第24頁/共50頁④循環(huán)體可以是空語句。

#include<stdio.h>voidmain(){intn=0;

printf("inputastring:\n");

for(;getchar()!='\n';n++);

printf("%d",n);

}第25頁/共50頁3.3.2while語句的一般形式while(表達式)語句;其中:表達式是循環(huán)條件,語句為循環(huán)體。

表達式?循環(huán)體語句≠0

=0

任務3統(tǒng)計一組學生的總分及平均分第26頁/共50頁統(tǒng)計從鍵盤輸入一行字符的個數(shù)。

voidmain(){intn=0;

printf("inputastring:\n");

while(getchar()!='\n')n++;

printf("%d",n);}

3.3.2while語句表達式?循環(huán)體語句≠0

=0

while循環(huán)計算1加到100main(){intn=1,s=0;while(n<=100){s=s+n;n++;}printf(“s=%d”,s);}第27頁/共50頁練習1、編程:統(tǒng)計從鍵盤輸入一行字符的個數(shù)。第28頁/共50頁3.3.2while語句使用注意事項②循環(huán)體如包括有一個以上的語句,則必須用{}括起來,組成復合語句。

③應注意循環(huán)條件的選擇以避免死循環(huán)。④允許while語句的循環(huán)體又是while語句、for語句或do-while語句,從而形成多重循環(huán)(循環(huán)的嵌套使用參見3.5節(jié))。①while語句中的表達式一般是關系表達或邏輯表達式,只要表達式的值為真(非0)即可繼續(xù)循環(huán)。第29頁/共50頁3.3.2while語句使用注意事項while語句的應用voidmain(){inta=0,n;

printf("\ninputn:");

scanf("%d",&n);

while(n--)

printf("%d",a++*2);}

voidmain(){inta,n=0;

while(a=5)

printf("%d",n++);

}第30頁/共50頁表達式?循環(huán)體語句≠0=0圖3.6while語句流程圖3.3.3do-while語句的一般形式其中:語句是循環(huán)體,表達式是循環(huán)條件。do{語句;

}while(表達式);任務3統(tǒng)計一組學生的總分及平均分第31頁/共50頁do-while語句的應用(改寫程序)。voidmain(){inta=0,n;

printf("\ninputn:");

scanf("%d",&n);

do{printf("%d",a++*2);

}while(--n);

}Do-while循環(huán)計算1加到100

main(){intn=1,s=0;

do{s=s+n;n++;}while(n<=100);printf(“s=%d”,s);}3.3.3do-while語句第32頁/共50頁3.3.3do-while語句使用注意事項①在if語句,while語句中,表達式后面都不能加分號,而在do-while語句的表達式后面則必須加分號。②do-while語句也可以組成多重循環(huán),而且也可以和while語句相互嵌套。③在do和while之間的循環(huán)體由多個語句組成時,也必須用{}括起來組成一個復合語句。④do-while和while語句相互替換時,要注意修改循環(huán)控制條件。第33頁/共50頁練習1、編程:計算一組的成績總分與平均分,并按要求輸出各種等級的人數(shù)。可分別使用for語句、while語句、do-while語句來實現(xiàn)。第34頁/共50頁4種轉移語句:

break、continue、return和goto。break語句的一般形式為:break;功能:跳出switch語句或跳出本層循環(huán),轉去執(zhí)行后面的程序。注:只能使用在switch語句或循環(huán)體語句中。3.4.1break語句任務4任務拓展第35頁/共50頁輸入一個整數(shù),判斷該數(shù)是否為素數(shù)(質(zhì)數(shù))。

voidmain(){ inti,n; scanf("%d",&n); for(i=2;i<n;i++) if(n%i==0)break; if(i==n)printf("YES!"); elseprintf("NO!");}

練習:輸出100以內(nèi)的素數(shù)

3.4.1break語句第36頁/共50頁continue語句的一般形式為:continue;功能:結束本次循環(huán),不再執(zhí)行循體中continue語句之后的語句,轉入下一次循環(huán)條件的判斷和執(zhí)行。注:只能使用循環(huán)體中。只結束本層本次循環(huán),并不跳出循環(huán)。3.4.2continue語句第37頁/共50頁

輸出100以內(nèi)能被7整除的數(shù)。

voidmain() {intn;

for(n=7;n<=100;n++)

{

if(n%7!=0)

continue;

printf(“%d”,n);

} }3.4.2continue語句練習:打印100以內(nèi)個位數(shù)為6且能被3整除的所有數(shù)。第38頁/共50頁3.4.3goto語句一般格式如下:goto語句標號;

統(tǒng)計從鍵盤輸入一行字符的個數(shù)。

#include"stdio.h"

voidmain(){

intn=0;

printf("inputastring\n");

loop:if(getchar()!='\n')

{n++;

gotoloop;

}

printf("%d",n);

}第39頁/共50頁3.4.4if語句的嵌套if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4內(nèi)嵌if內(nèi)嵌ifif(表達式1)if(表達式1)

語句1else

語句2內(nèi)嵌ifif(表達式1)if(表達式2)

語句1else

語句3內(nèi)嵌ifif(表達式1)

語句1elseif(表達式3)

語句3else

語句4內(nèi)嵌if第40頁/共50頁if~else配對原則:缺省{}時,else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b)

{if(b==c)printf(“a==b==c”);

}elseprintf(“a!=b”);實現(xiàn)if~else正確配對方法:加{}3.4.4if語句的嵌套第41頁/共50頁for語句可以嵌套使用(循環(huán)的嵌套是指一個循環(huán)的循環(huán)體中包含了另一個循環(huán)),構成多重循環(huán)。

例3.14for的二重循環(huán)的使用:打印6以內(nèi)的乘法表。main(){inti,j;

for(i=1;i<=6;i++)

{

for(j=1;j<=i;j++)printf("%d*%d=%2d”,i,j,i*j);

printf(”\n”);

}}1*1=12*1=22*2=43*1=33*2=63*3=94*1=44*2=84*3=124*4=165*1=55*2=105*3=155*4=205*5=256*1=66*2=126*3=186*4=246*5=306*6=363.4.5for語句的嵌套第42頁/共50頁for的三重循環(huán)的使用:找出所有的三位數(shù),它和它的各位數(shù)字的立方和正好相等。例如:153=13十53十33所以,153就是滿足條件的三位數(shù)。分析:設所求的三位數(shù),其百位數(shù)字是i,十位數(shù)字是j,個位數(shù)字是k,顯然應滿足:i*i*i+j*j*j+k*k*k=100*i+10*j+k。程序如下:main(){

inti,j,k;

for(i=1;i<=9;i++)for(j=0;j<=9;j++)

for(k=0;k<=9;k十十)if(i*i*i+j*j*j+k*k*k==100*i+10*j+k)

printf(”%d%d%d”,i,j,k);}程序運行結果為

1533703714073.4.5for語句的嵌套第43頁/共50頁do-while語句也可與while、for語句相互嵌套,構成多重循環(huán)。以下結構都是合法的嵌套。(1)for(){…

while(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論