




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
會(huì)計(jì)學(xué)1C語言學(xué)生成績分等級(jí)及分組匯總?cè)蝿?wù)1尋找最大值與最小值
3.1.1三種基本控制結(jié)構(gòu)三種基本結(jié)構(gòu):順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)
S1S2S2S1條件S1條件(a)順序結(jié)構(gòu)(b)選擇結(jié)構(gòu)(c)循環(huán)結(jié)構(gòu)圖3.1三種基本控制結(jié)構(gòu)流程圖第1頁/共50頁任務(wù)1尋找最大值與最小值
3.1.1三種基本控制結(jié)構(gòu)
結(jié)構(gòu)化程序設(shè)計(jì)基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復(fù)嵌套構(gòu)成的程序。優(yōu)點(diǎn):結(jié)構(gòu)清晰,易讀,提高程序設(shè)計(jì)質(zhì)量和效率。第2頁/共50頁任務(wù)1尋找最大值與最小值
3.1.2if語句輸入兩個(gè)整數(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(表達(dá)式)語句;語句表達(dá)式=0!=0第3頁/共50頁main(){inta=2,b=3,c=4;
if(a=b)c=a; printf(“%d”,c);}3任務(wù)1尋找最大值與最小值
3.1.2if語句第4頁/共50頁形式2:if(表達(dá)式)語句1;else語句2;!=0語句2語句1表達(dá)式=0例3.2輸入兩個(gè)整數(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);}任務(wù)1尋找最大值與最小值
3.1.2if語句第5頁/共50頁形式3:
if(表達(dá)式1)語句1;
elseif(表達(dá)式2)語句2;
elseif(表達(dá)式3)語句3;
…………
else
語句n;表達(dá)式1語句1!=0=0表達(dá)式2表達(dá)式3語句n語句3語句2!=0!=0=0=0任務(wù)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");}任務(wù)1尋找最大值與最小值
3.1.2if語句第7頁/共50頁練習(xí):輸入一個(gè)年份,判斷是否為閏年,是閏年輸出為“××isaleapyear!”,否則輸出為“××isn’taleapyear!”。。 任務(wù)1尋找最大值與最小值
3.1.2if語句第8頁/共50頁注意:①在三種形式的if語句中,在if關(guān)鍵字之后均為表達(dá)式。該表達(dá)式通常是邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是其它表達(dá)式,如賦值表達(dá)式等,甚至也可以是一個(gè)變量。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任務(wù)1尋找最大值與最小值
3.1.3if語句使用注意事項(xiàng)第9頁/共50頁②在if語句中,條件判斷表達(dá)式必須用括號(hào)括起,在語句之后必須加分號(hào)。③在if語句的三種形式中,所有的語句應(yīng)為單個(gè)語句,如果要想在滿足條件時(shí)執(zhí)行一組(多個(gè))語句,則必須把這一組語句用{}括起來組成一個(gè)復(fù)合語句。但要注意的是在}之后不能再加分號(hào)。例如:if(a>b){a++;b++;}else{a=0;b=10;}任務(wù)1尋找最大值與最小值
3.1.3if語句使用注意事項(xiàng)第10頁/共50頁任務(wù)1尋找最大值與最小值
3.1.4條件運(yùn)算符和條件表達(dá)式
條件運(yùn)算符:?:三目運(yùn)算符
條件表達(dá)式:由條件運(yùn)算符組成條件表達(dá)式 表達(dá)式1?表達(dá)式2:表達(dá)式3
條件運(yùn)算符不能分開單獨(dú)使用,?:配套使用
例如:if(a>b)max=a;
elsemax=b;可用條件表達(dá)式寫為
max=(a>b)?a:b;
max=a>b?a:b;
第11頁/共50頁編程:輸入一個(gè)字符,判別它是否為大寫字母,如果是,將轉(zhuǎn)換成小寫字母,如果不是,則不轉(zhuǎn)換,然后輸出得到的字符。
main(){charch,c;
scanf(“%c”,&ch);
if(ch>=’A’&&ch<=’Z’)
c=ch+32;
elsec=ch;
printf("%c”,c);
}
條件語句部分用下面的條件表達(dá)式來代替:
c=ch>=’A’&&ch<=’Z’?ch+32:ch第12頁/共50頁練習(xí)
小組成員3人參與數(shù)學(xué)期末考試,要求尋找最高分和最低分。第13頁/共50頁任務(wù)2將學(xué)生成績分等級(jí)
教師對(duì)全班同學(xué)的一次考試成績進(jìn)行百分制評(píng)分,輸出對(duì)應(yīng)的等級(jí)分。共分A、B、C、D、E五個(gè)等級(jí)。90分以上為A,81-89分為B,70-79分為C,60-69分為D,60分以下為E。。第14頁/共50頁3.2.1switch語句(不帶break語句)一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語句1;
case常量表達(dá)式2:語句2;
…...
case常量表達(dá)式n:語句n;
[default:語句n+1;]}例3.7從鍵盤輸入一個(gè)數(shù)字,則輸出一個(gè)英文單詞。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");
}}任務(wù)2將學(xué)生成績分等級(jí)第15頁/共50頁3.2.2
switch語句(帶break語句)一般形式為:
switch(表達(dá)式){case常量表達(dá)式1:語句1;break;
case常量表達(dá)式2:語句2;break;
…
case常量表達(dá)式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");}}任務(wù)2將學(xué)生成績分等級(jí)第16頁/共50頁練習(xí)編程:運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi)。路程(s)越遠(yuǎn),每公里運(yùn)費(fèi)越低。標(biāo)準(zhǔn)如下:
s<=250沒有折扣
250<=s<5002%折扣
500<=s<10005%折扣
1000<=s<20008%折扣
2000<=s<300010%折扣
s>=300015%折扣設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣為d,則總運(yùn)費(fèi)的計(jì)算公式為:
f=p*w*s*(1-d)
第17頁/共50頁3.2.3switch語句使用注意事項(xiàng)(1)在每個(gè)case后的各常量表達(dá)式的值應(yīng)互不能相同,否則會(huì)出現(xiàn)錯(cuò)誤。(2)在每個(gè)case后允許有多個(gè)語句,可以不用{}括起來。(3)許多個(gè)case共用一個(gè)語句序列。(4)如果每個(gè)case中都有break語句,那么case和default出現(xiàn)的次序不會(huì)影響程序的運(yùn)行結(jié)果。(5)default子句可以省略不用。(6)字符常數(shù)出現(xiàn)在case中,它們會(huì)自動(dòng)轉(zhuǎn)換成整型。(7)switch可以嵌套使用,要求內(nèi)層的switch必須完全包含在外層的某個(gè)case中,內(nèi)、外層switch的case中含有相同的常數(shù),不會(huì)引起誤會(huì)。(8)switch語句只能進(jìn)行相等性檢查,而if不但可進(jìn)行相等性檢查,還可以計(jì)算關(guān)系或邏輯表達(dá)式。因此switch語句不能完全替代if語句。任務(wù)2將學(xué)生成績分等級(jí)第18頁/共50頁練習(xí)1、編程:用戶輸入運(yùn)算數(shù)和四則運(yùn)算符,輸出計(jì)算結(jié)果。2、本任務(wù)對(duì)某位同學(xué)的一次考試成績進(jìn)行百分制評(píng)分,共分A、B、C、D、E五個(gè)等級(jí),90分以上為‘A’,80~89分為‘B’,70~79分為‘C’、60~69分為‘D’,60分以下為‘E’。
第19頁/共50頁任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分
數(shù)學(xué)期末考試成績出來了,一個(gè)小組有成員10人,要求計(jì)算這一組的成績總分與平均分,并按要求輸出。第20頁/共50頁3.3.1for語句的一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)3)
語句;
表達(dá)式1:通常用來給循環(huán)變量賦初值,一般是賦值表達(dá)式,也允許在for語句外給循環(huán)變量賦初值,此時(shí)可以省略該表達(dá)式。
表達(dá)式2:通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式。
表達(dá)式3:
通常可用來修改循環(huán)變量的值,一般是賦值語句。語句:
為循環(huán)體語句。表達(dá)式1表達(dá)式3表達(dá)式2?語句YN任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分第21頁/共50頁問題3.10用for語句計(jì)算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個(gè)連續(xù)的偶數(shù)voidmain()
{inta=0,n;
printf("\ninputn:");
scanf("%d",&n);
for(;n>0;a++,n--)
printf("%d",a*2);
}任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分第22頁/共50頁練習(xí)1、編程:從0開始,輸出n個(gè)連續(xù)的偶數(shù)。
第23頁/共50頁for語句使用注意事項(xiàng)②在循環(huán)變量已賦初值時(shí),可省去表達(dá)式1,如例3.11
即屬于這種情形。①for語句中的各表達(dá)式都可省略,但分號(hào)間隔符不能少。如:for(;表達(dá)式;表達(dá)式)省去了表達(dá)式1。
for(表達(dá)式;;表達(dá)式)省去了表達(dá)式2。
for(表達(dá)式;表達(dá)式;)省去了表達(dá)式3。
for(;;)省去了全部表達(dá)式。③如省去表達(dá)式2或表達(dá)式3則將造成無限循環(huán),這時(shí)應(yīng)在循環(huán)體內(nèi)設(shè)法結(jié)束循環(huán)任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分第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(表達(dá)式)語句;其中:表達(dá)式是循環(huán)條件,語句為循環(huán)體。
表達(dá)式?循環(huán)體語句≠0
=0
任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分第26頁/共50頁統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。
voidmain(){intn=0;
printf("inputastring:\n");
while(getchar()!='\n')n++;
printf("%d",n);}
3.3.2while語句表達(dá)式?循環(huán)體語句≠0
=0
while循環(huán)計(jì)算1加到100main(){intn=1,s=0;while(n<=100){s=s+n;n++;}printf(“s=%d”,s);}第27頁/共50頁練習(xí)1、編程:統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(shù)。第28頁/共50頁3.3.2while語句使用注意事項(xiàng)②循環(huán)體如包括有一個(gè)以上的語句,則必須用{}括起來,組成復(fù)合語句。
③應(yīng)注意循環(huán)條件的選擇以避免死循環(huán)。④允許while語句的循環(huán)體又是while語句、for語句或do-while語句,從而形成多重循環(huán)(循環(huán)的嵌套使用參見3.5節(jié))。①while語句中的表達(dá)式一般是關(guān)系表達(dá)或邏輯表達(dá)式,只要表達(dá)式的值為真(非0)即可繼續(xù)循環(huán)。第29頁/共50頁3.3.2while語句使用注意事項(xiàng)while語句的應(yīng)用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頁表達(dá)式?循環(huán)體語句≠0=0圖3.6while語句流程圖3.3.3do-while語句的一般形式其中:語句是循環(huán)體,表達(dá)式是循環(huán)條件。do{語句;
…
}while(表達(dá)式);任務(wù)3統(tǒng)計(jì)一組學(xué)生的總分及平均分第31頁/共50頁do-while語句的應(yīng)用(改寫程序)。voidmain(){inta=0,n;
printf("\ninputn:");
scanf("%d",&n);
do{printf("%d",a++*2);
}while(--n);
}Do-while循環(huán)計(jì)算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語句使用注意事項(xiàng)①在if語句,while語句中,表達(dá)式后面都不能加分號(hào),而在do-while語句的表達(dá)式后面則必須加分號(hào)。②do-while語句也可以組成多重循環(huán),而且也可以和while語句相互嵌套。③在do和while之間的循環(huán)體由多個(gè)語句組成時(shí),也必須用{}括起來組成一個(gè)復(fù)合語句。④do-while和while語句相互替換時(shí),要注意修改循環(huán)控制條件。第33頁/共50頁練習(xí)1、編程:計(jì)算一組的成績總分與平均分,并按要求輸出各種等級(jí)的人數(shù)。可分別使用for語句、while語句、do-while語句來實(shí)現(xiàn)。第34頁/共50頁4種轉(zhuǎn)移語句:
break、continue、return和goto。break語句的一般形式為:break;功能:跳出switch語句或跳出本層循環(huán),轉(zhuǎn)去執(zhí)行后面的程序。注:只能使用在switch語句或循環(huán)體語句中。3.4.1break語句任務(wù)4任務(wù)拓展第35頁/共50頁輸入一個(gè)整數(shù),判斷該數(shù)是否為素?cái)?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!");}
練習(xí):輸出100以內(nèi)的素?cái)?shù)
3.4.1break語句第36頁/共50頁continue語句的一般形式為:continue;功能:結(jié)束本次循環(huán),不再執(zhí)行循體中continue語句之后的語句,轉(zhuǎn)入下一次循環(huán)條件的判斷和執(zhí)行。注:只能使用循環(huán)體中。只結(jié)束本層本次循環(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語句練習(xí):打印100以內(nèi)個(gè)位數(shù)為6且能被3整除的所有數(shù)。第38頁/共50頁3.4.3goto語句一般格式如下:goto語句標(biāo)號(hào);
統(tǒng)計(jì)從鍵盤輸入一行字符的個(gè)數(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(表達(dá)式1)if(表達(dá)式2)語句1else語句2elseif(表達(dá)式3)語句3else語句4內(nèi)嵌if內(nèi)嵌ifif(表達(dá)式1)if(表達(dá)式1)
語句1else
語句2內(nèi)嵌ifif(表達(dá)式1)if(表達(dá)式2)
語句1else
語句3內(nèi)嵌ifif(表達(dá)式1)
語句1elseif(表達(dá)式3)
語句3else
語句4內(nèi)嵌if第40頁/共50頁if~else配對(duì)原則:缺省{}時(shí),else總是和它上面離它最近的未配對(duì)的if配對(duì)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”);實(shí)現(xiàn)if~else正確配對(duì)方法:加{}3.4.4if語句的嵌套第41頁/共50頁for語句可以嵌套使用(循環(huán)的嵌套是指一個(gè)循環(huán)的循環(huán)體中包含了另一個(gè)循環(huán)),構(gòu)成多重循環(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ù),其百位數(shù)字是i,十位數(shù)字是j,個(gè)位數(shù)字是k,顯然應(yīng)滿足: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);}程序運(yùn)行結(jié)果為
1533703714073.4.5for語句的嵌套第43頁/共50頁do-while語句也可與while、for語句相互嵌套,構(gòu)成多重循環(huán)。以下結(jié)構(gòu)都是合法的嵌套。(1)for(){…
while(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度子女撫養(yǎng)權(quán)爭議調(diào)解協(xié)議范本
- 二零二五年度老年父母財(cái)產(chǎn)分配及子女贍養(yǎng)協(xié)議
- 攝影行業(yè)攝影師拍攝作品版權(quán)歸屬協(xié)議
- 專業(yè)運(yùn)動(dòng)器材采購銷售協(xié)議
- 無婚后財(cái)產(chǎn)離婚協(xié)議書
- 機(jī)電產(chǎn)品買賣合同
- 2024購房合同范本
- 影視后期制作合作協(xié)議
- 商品分銷與銷售代理協(xié)議
- 有關(guān)水泥購銷合同
- 2025年雙方協(xié)商一致自愿離婚協(xié)議書范本
- 眼科與視功能檢查屈光參差課件
- GB/T 6433-2025飼料中粗脂肪的測定
- 2025年湖南司法警官職業(yè)學(xué)院單招職業(yè)傾向性測試題庫學(xué)生專用
- 2025年呼和浩特職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025山西國際能源集團(tuán)有限公司所屬企業(yè)社會(huì)招聘258人筆試參考題庫附帶答案詳解
- 醫(yī)學(xué)遺傳學(xué)教案-山東大學(xué)醫(yī)學(xué)遺傳學(xué)
- 心房顫動(dòng)診斷和治療中國指南解讀課件
- 中國心力衰竭診斷和治療指南2024解讀(完整版)
- 方太電烤箱KQD50F-01使用說明書
- 榆神礦區(qū)郭家灘煤礦(700 萬噸-年)項(xiàng)目環(huán)評(píng)
評(píng)論
0/150
提交評(píng)論