C語言如何實現(xiàn)成績等級判別
如何實現(xiàn)成績等級判別
看實例
C語言實現(xiàn)按照考試成績的等級輸出百分制分數(shù)段,A等為85-100分,B等為70-84分,C等為60-69分,D等為60分以下。
解題思路:這是一個多分支選擇問題,根據(jù)百分制分數(shù)將學(xué)生成績分為4個等級,如果用if語句來處理至少需要3層嵌套的if,進行3次檢查判斷。用switch語句,進行一次檢查即可得到結(jié)果。
源代碼演示
#include<stdio.h>//頭文件 int main()//主函數(shù) { char grade; //定義成績級別字符變量 printf("輸入成績級別:");//提示語句 scanf("%c",&grade); //鍵盤輸入 printf("成績段:");//提示語句 switch(grade) //switch多分支 { case'A':printf("85-100\n");break;//輸出A的成績分布 case'B':printf("70-84\n");break;//輸出B的成績分布 case'C':printf("60-69\n");break;//輸出C的成績分布 case'D':printf("不及格小于60\n");break;//輸出D的成績分布 default:printf("輸入成績等級有誤\n");//輸出成績級別有誤 } return 0;//函數(shù)返回值為0 }
編譯結(jié)果:
輸入成績級別:D
成績段:不及格小于60--------------------------------
Process exited after 1.931 seconds with return value 0
請按任意鍵繼續(xù). . .
讀者需要注意的一點是:switch后面括號內(nèi)的“表達式”,其值的類型應(yīng)為整數(shù)類型(包括字符型),switch語句的作用是根據(jù)表達式的值,使流程跳轉(zhuǎn)到不同的語句。
用C語言解決成績評定問題
題目:給出一百分制成績,要求輸出成績等級‘A’、‘B’、‘C’、‘D’、‘E’。 90分以及90分以上為A,80-89分為B,70-79分為C,60-69分為D,60分以下為E。
簡單分析后得知,此問題有至少兩種解法。一種是笨方法:用if語句來完成;一種是用switch語句來完成。
首先先看“笨方法”
#include<stdio.h>//笨方法? ? int main (void) ? { ?? ?int a; ?? ? ?? ?scanf("%d",&a); ?? ? ?? ?if(a>=90) ?? ? ?putchar('A'); ?? ? ? ?? ?if(a>=80 && a<90) ?? ? ?putchar('B'); ?? ? ? ?? ?if(a>=70 && a<80) ?? ? ?putchar('C'); ?? ? ? ?? ?if(a>=60 && a<70) ?? ? ?putchar('D'); ?? ? ? ?? ?if(a<60) ?? ? ?putchar('E'); ?? ? ? ?? ?putchar('\n'); }
此方法多次使用if語句,所以過于繁瑣。
下面是較為簡單的switch語句
#include<stdio.h> ? int main() { ? ? int a; ? ? scanf("%d",&a);? ? ? switch(a/10) ?? ?{ ? ? ? ? case 10: ? ? ? ? case 9: ? ? ? ? ? ? putchar('A'); ? ? ? ? ? ? break; ? ? ? ? case 8: ? ? ? ? ? ? putchar('B'); ? ? ? ? ? ? break; ? ? ? ? case 7: ? ? ? ? ? ? putchar('C'); ? ? ? ? ? ? break; ? ? ? ? case 6: ? ? ? ? ? ? putchar('D'); ? ? ? ? ? ? break; ? ? ? ? default: ? ? ? ? ? ? putchar('E'); ? ? ? ? ? } }
今天的分享就到這里了。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言strlen函數(shù)實現(xiàn)讀取字符串長度詳解
這篇文章主要介紹了用C語言的strlen函數(shù)來實現(xiàn)讀取字符串長度的過程,strlen所作的是一個計數(shù)器的工作,它從內(nèi)存的某個位置開始掃描,直到碰到第一個字符串結(jié)束符'\0'為止2022-04-04