C言語if語句和C語言 選擇語句_第1頁
C言語if語句和C語言 選擇語句_第2頁
C言語if語句和C語言 選擇語句_第3頁
C言語if語句和C語言 選擇語句_第4頁
C言語if語句和C語言 選擇語句_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

#include<stdio.h>#include<string.h>#defineMAXSIZE100#include<malloc.h>#include<stdlib.h>typedefstruct{charnum[8];/*學號*/charname[9];/*姓名*/chargender[3];/*性別*/intscore;/*成績*/}DataType;typedefstruct{DataTypestu[MAXSIZE];intlength;}sequenlist;intmenu_select(){ intsn; printf("\n學生信息管理系統(tǒng)\n"); printf("=========================================\n"); printf("1.學生信息順序表的建立\n"); printf("2.插入學生信息\n"); printf("3.查詢學生信息\n"); printf("4.刪除學生信息\n"); printf("5.輸出所有學生信息\n"); printf("0.退出管理系統(tǒng)\n"); printf("==========================================\n"); printf("請選擇0-5:\n"); for(;;) { scanf("%d",&sn); if(sn<0||sn>5) printf("\n\t輸入錯誤,重選0-5\n"); else break; } returnsn;}voidcreateList(sequenlist*L){ intn,i; printf("有幾位學生?請輸入:\n"); fflush(stdin); scanf("%d",&n); printf("以下請輸入這%d位學生的信息:\n",n); for(i=0;i<n;i++) { printf("第%d位學生:",i); printf("\n學號(8)姓名(8)性別成績\n"); fflush(stdin); scanf("%s%s%s%d",L->stu[i].num,L->stu[i].name,L->stu[i].gender,&L->stu[i].score); } L->length=n;}voidprintList(sequenlist*L){ inti; printf("\n學號(8)姓名(8)性別成績\n"); printf("-------------------------------------------\n"); for(i=0;i<L->length;i++) {printf("第%d位學生:",i); printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].gender,L->stu[i].score); printf("------------------------------------------------------------------\n"); }}intinsert(sequenlist*L,DataType*student,inti){ intj; if(L->length==MAXSIZE) { printf("overflow!"); return0; } elseif((i<0)||(i>L->length)) { printf("error,pleaseinputtheright'i'"); return0; } else {for(j=L->length-1;j>=i;j--){strcpy(L->stu[j+1].num,L->stu[j].num);strcpy(L->stu[j+1].name,L->stu[j].name);strcpy(L->stu[j+1].gender,L->stu[j].gender);L->stu[j+1].score=L->stu[j].score;}strcpy(L->stu[i].num,student->num); strcpy(L->stu[i].name,student->name); strcpy(L->stu[i].gender,student->gender); L->stu[i].score=student->score;L->length=L->length+1; } return1;}intfindList(sequenlist*L){ charnum[8]; charname[9]; inti=0,xz; printf("===========================\n"); printf("1、按學號查詢\n"); printf("2、按姓名查詢\n"); printf("===========================\n"); printf("請選擇:"); fflush(stdin); scanf("%d",&xz); if(xz==1) { printf("請輸入要查找學生的學號:"); scanf("%s",num); for(i=0;i<L->length;i++) { if(strcmp(L->stu[i].num,num)==0) returni; } } elseif(xz==2) { printf("請輸入要查找學生的姓名:"); scanf("%s",name); for(i=0;i<L->length;i++) { if(strcmp(L->stu[i].name,name)==0) returni; } } return-1;/*如果沒找到,返回-1。否則直接返回,不會執(zhí)行本句*/}voiddelNode(sequenlist*L){ inti,j; printf("請先查找您要刪除的學生信息:\n"); i=findList(L); if(i==-1) { printf("沒有查到要刪除的學生信息"); return; } for(j=i;j<L->length;j++) { L->stu[j].score=L->stu[j+1].score; strcpy(L->stu[j].num,L->stu[j+1].num); strcpy(L->stu[j].name,L->stu[j+1].name); strcpy(L->stu[j].gender,L->stu[j+1].gender); } L->length--; printf("該學生信息已被刪除!\n");}voidmain(){sequenlist*L;DataType*student;inti;L=(sequenlist*)malloc(sizeof(sequenlist));while(1){switch(menu_select()){case1:printf("**************************************\n");printf("學生信息順序表的建立\n");printf("***************************************\n");createList(L);break;case2:printf("**************************************\n");printf("添加學生信息\n");printf("請輸入要添加的學生信息:\n"); printf("\n學號(8)姓名(8)性別成績\n");printf("**************************************\n");student=(DataType*)malloc(sizeof(DataType));fflush(stdin);scanf("%s%s%s%d",student->num,student->name,student->gender,&student->score);printf("請輸入要插入的位置:\n");fflush(stdin);scanf("%d",&i);insert(L,student,i);break;case3:printf("**************************************\n");printf("查詢學生信息\n");printf("**************************************\n");i=findList(L);if(i!=-1){ printf("您要查的學生為:\n學號(8)姓名(8)性別成績\n"); printf("-------------------------------------------\n"); printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].gender,L->stu[i].score); printf("------------------------------------------------------------------\n");}elseprintf("沒有您要查詢的學生信息!");break;case4:printf("**************************************\n");printf("刪除學生信息\n");printf("**************************************\n");delNode(L);break;case5:printf("**************************************\n");printf("輸出所有學生信息\n");printf("**************************************\n");printList(L);break;case0: printf("再見!\n"); getchar();return;}}}一、if語句if(表達式)語句1;如果表達式的值為非0,則執(zhí)行語句1,否則跳過語句繼續(xù)執(zhí)行下面的語句。如果語句1有多于一條語句要執(zhí)行時,必須使用{}把這些語句包括在其中,此時條件語句形式為:if(表達式){語句體1,2,3;}例如:if(x>=0)y=x;if(a||b&&c){z=a+b;c+=z;}if--else語句除了可以指定在條件為真時執(zhí)行某些語句外,還可以在條件為假時執(zhí)行另外一段代碼。在C語句中利用else語句來達到這個目的。if(表達式)語句1;else語句2;同樣,當語句1或語句2是多于一個語句時,需要用{}把語句括起來。例如:if(x>=0)y=x;elsey=-x;if--elseif--else結構if(表達式1)語句1;elseif(表達式2)語句2;elseif(表達式3)語句3;.else語句n;這種結構是從上到下逐個對條件進行判斷,一旦發(fā)現條件滿點足就執(zhí)行與它有關的語句,并跳過其它剩余階梯;若沒有一個條件滿足,則執(zhí)行最后一個else語句n。最后這個else常起著缺省條件的作用。同樣,如果每一個條件中有多于一條語句要執(zhí)行時,必須使用{}把這些語句包括在其中。條件語句可以嵌套,這種情況經常碰到,但條件嵌套語句容易出錯,其原因主要是不知道哪個if對應哪個else。例如:if(x>20||x<-10)if(y<=100&&y>x)printf(Good);elseprintf(Bad);對于上述情況,TurboC規(guī)定:else語句與最近的一個if語句匹配,上例中的else與if(y<=100&&y>x)相匹配。為了使else與if(x>20||x<-10)相匹配,必須用花括號。如下所示:if(x>20||x<-10){if(y<=100&&y>x)printf(Good);}elseprintf(Bad);下面舉幾個例子:1.輸入一個數,如果大于0,輸出plus;如果是負數,輸出negative;如果正好是0,則輸出zero。main(){floatnum;scanf(%f,&f);if(num>0)printf(plus\n);elseif(num<0)printf(negative\n);elseprintf(zero\n);}先定義兩個變量,然后輸入一個數,然后判斷這個數的范圍,輸出對應的字符串。2.輸入一個數x,輸出y。其中y是x的絕對值。main(){floatx,y;scanf(%f,&x);if(x>=0)y=x;elsey=-x;printf(%f\n,y);}TruboC2.0把一些常用的功能都寫好了,我們只需要使用就可。例如求絕對值的功能在C的庫里面就有。看下面的:#includemath.hmain(){floatx,y;scanf(%f,&x);y=fabs(x);/*求x的絕對值,然后賦值給y*/printf(%f\n,y);}這個程序和上面的程序完成的功能是一模一樣的,都是求絕對值??梢钥闯觯孟旅孢@個方法比上面就要好一些。由于fabs()是一個函數,系統(tǒng)自帶的,所以在使用它的時候,我們必須把它所在的庫文件math.h包含在程序中,即程序最前面一行。類似的還有求開方sqrt(),求指數冪exp()等等,這些與數學方面有關的函數都在math.h里面。3.輸入x,輸出y,x和y滿足關系:x<-5y=x;-5<=x<1y=2*x+5;1<=x<4y=x+6;x>=4y=3*x-2;程序如下:main(){floatx,y;scanf(%f,&x);if(x<-5)y=x;elseif(-5<=x&&x<1)y=2*x+5;elseif(1<=x&&x<4)y=x+6;elsey=3*x-2;printf(%f\n,y);}這里要說明兩點:(1).-5<=x&&x<1不能寫成-5<=x<1;1<=x&&x<4也不能寫成1<=x<4;在C語言中,不能認識連續(xù)不等式。(2).y=2*x+5不能寫成y=2x+5;y=3*x-2也不能寫成y=3x-2;這與我們平時所寫的方法不一樣。4.輸入三個數x,y,z,然后按從大到小輸出。main(){floatx,y,z;scanf(%f%f%f,&x,&y,&z);if(x>=y&&x>=z){printf(%f\t,x);if(y>=z)printf(%f\t%f\n,y,z);elseprintf(%f\t%f\n,z,y);}elseif(y>=x&&y>=z){printf(%f\t,y);if(x>=z)printf(%f\t%f\n,x,z);elseprintf(%f\t%f\n,z,x);}else{printf(%f\t,z);if(x>=y)printf(%f\t%f\n,x,y);elseprintf(%f\t%f\n,y,x);}}說明:這是一個典型的if語句嵌套結構,如果不使用括號,那么if和else的對應關系就亂了。switch--case語句在編寫程序時,經常會碰到按不同情況分轉的多路問題,這時可用嵌套if-else-if語句來實現,但if-else-if語句使用不方便,并且容易出錯。對這種情況,TurboC提供了一個開關語句。開關語句格式為:switch(變量){case常量1:語句1或空;case常量2:語句2或空;.case常量n:語句n或空;default:語句n+1或空;}執(zhí)行switch開關語句時,將變量逐個與case后的常量進行比較,若與其中一個相等,則執(zhí)行該常量下的語句,若不與任何一個常量相等,則執(zhí)行default后面的語句。注意:1.switch中變量可以是數值,也可以是字符,但必須是整數。2.可以省略一些case和default。3.每個case或default后的語句可以是語句體,但不需要使用{}括起來。例如:main(){intx,y;scanf(%d,&x);witch(x){case1:y=x+1;break;/*退出開關語句,遇到break才退出*/case4:y=2*x+1;break;default:y=x--;break;printf(%d\n,y);}用開關語句編的程序一定可以用if語句做。那么在什么情況下需要用switch語句呢?一般在出現比較整的情況下或者能轉化成比較整數的情況下使用??聪旅娴睦樱豪樱阂粋€學生的成績分成五等,超過90分的為'A',80-89的為'B',70-79為'C',60-69為'D',60分以下為'E'?,F在輸入一個學生的成績,輸出他的等級。(1).用if語句main(){floatnum;chargrade;scanf(%d,&num);if(num>=90)grade='A';elseif(num>=80&&num<89)grade='B';elseif(num>=70&&num<79)grade='C';elseif(num>=60&&num<69)grade='D';elsegrade='E';printf(%c,grade);}(2).用switch語句main(){intnum;chargrade;scanf(%d,&num);num/=10;switch(num){case10:case9:grade='A';break;case8:grade='B';break;case7:grade='C';break;case6:grade='D';break;default:grade='E';break;}printf(%c,grade);}說明一點,并不是每個case里面有都語句,有時侯里面是空的,就好象這一題。switch語句執(zhí)行的順序是從第一case判斷,如果正確就往下執(zhí)行,直到break;如果不正確,就執(zhí)行下一個case。所以在這里,當成績是100分時,執(zhí)行case10:然后往下執(zhí)行,grade='A';break;退出實驗目的掌握選擇結構掌握三種if語句。掌握多分支switch語句。2.實驗內容某年如果能被4整除,但不能被100整除,或者能被400整除的年是閏年。判斷從鍵盤輸入的年份是否為閏年。程序代碼:#include<stdio.h>intmain(){ intyear; printf("請輸入年份\n"); scanf("%d",&year); if((year%4==0&&year%100!=0)||(year%400==0)) printf("%d年是閏年\n",year); else printf("%d年不是閏年\n",year); return0;}調試結果:2、某個自動加油站有‘a’,‘b’,‘c’三種汽油品種,單價分別為6.92,7.37,7.64(元/公升),也提供了“自己加”或“協(xié)助加”兩個服務等級,這樣用戶可以得到5%或10%的優(yōu)惠,請編程序針對用戶輸入加油量m,汽油品種y和服務類型z(‘f’—自動加,‘m’—自己加,‘e’—協(xié)助加),(注:‘f’—自動加無優(yōu)惠),計算應付款pay。(請用多分支選擇switch語句)。程序代碼:#include<stdio.h>intmain(){ doublen,d,p; chary,z; printf("請輸入加油量,汽油品種(a,b,c),服務類型(f-自動加,m-自己加,e-協(xié)助加)\n"); scanf("%lf,%c,%c",&n,&y,&z);switch(y) { case'a':d=6.92*n;break; case'b':d=7.37*n;break; case'c':d=7.64*n;break;default:printf("輸入錯誤\n"); }switch(z) { case'f':p=d;break; case'm':p=0.95*d;break; case'e':p=0.9*d;break;default:printf("輸入錯誤\n"); } printf("加油量:%lf汽油類型:%c服務類型:%c應付:%.2lf\n",n,y,z,p); return0;}調試結果:3、輸入三角形三邊,判斷該三角形是什么三角形(等邊,等腰,普通和直角)程序代碼:#include<stdio.h>#include<math.h>intmain(){ floata,b,c; printf("請輸三角形三邊長a,b,c\n"); scanf("%f,%f,%f",&a,&b,&c);if((a+b>c)&&(b+c>a)&&(c+a>b))if(a==b||b==c||a==c)if(a==b&&b==c) printf("三角形為等邊三角形\n"); else printf("三角形為等腰三角形\n"); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf("三角形為直角三角形\n"); else printf("三角形為普通三角形\n");elseprintf("數據錯誤");return0;}調試結果:4.編寫一個菜單程序,輸入1~3以進入相應的選擇項。(請用switch語句)1、FindNum2、Diamond3、Goodbye!Input1-3:程序代碼:#include<stdio.h>intmain(){inta;chars='y';while(s=='y'){printf("菜單如下,請選擇:\n");printf("1、FindNum\n");printf("2、Diamond\n");printf("3、Goodbye!\n");printf("請輸入1-3:\n");scanf("%d",&a);switch(a){case1:printf("FindNum\n");break;case2: printf("Diamond\n");break;case3: printf("Goodbye!\n");break;}printf("還要繼續(xù)嗎(y/n):");scanf("%c",&s);if(s=='y')continue;elsebreak;}return0;}調試結果:5.輸入4個整數,要求按由小到大的順序輸出程序代碼:#include<stdio.h>intmain(){inta,b,c,d,t;printf("請輸入四個整數\n");scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a>b){t=a;a=b,b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c,c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("排序結果如下:\n");printf("%d%d%d%d\n",a,b,c,d);return0;}調試結果:6.求一元二次方程ax2+bx+c=0的根。當b2-4ac>0為不相等的兩實根,當b2-4ac=0時為兩相等的實根,當b2-4ac<0

溫馨提示

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

評論

0/150

提交評論