簡單的判斷語句:ide
if(條件成立){ //執行代碼 }
條件測試
關係運算的結果ui
優先級code
3 + 4
,再將結果和7比較,比較的結果爲1==
和!=
的優先級比其餘的低,而連續的關係運算是從左到右進行的
註釋blog
"//"
開頭的語句爲註釋,爲程序提供解釋 `"//"
是C99的註釋,ANSI C不支持比較兩個數的大小
用戶輸入兩個數,用比較兩個數的大小,輸出較大的那個數。
程序流程圖:ip
代碼實現:rem
#include <stdio.h> int main(int argc, char *argv[]) { int a = 0; int b = 0; int max = 0; printf("請輸入兩個整數:"); scanf("%d %d", &a, &b); if(a>b){ max = a; } else {//b>=a max = b; } printf("大的那個是%d\n", max); }
運行結果:it
請輸入兩個整數:5 10 大的那個是10
if語句的大括號的做用io
if
後的那條語句。嵌套的判斷
if(條件A成立){ if(條件B成立){ //執行代碼 } else { //執行代碼 } }
tips
級聯的if-else if
示例:
if(條件1){ //執行塊1 } else if (條件2){ //執行塊2 } else if (條件3){ //執行塊3 } ... else { // 這個else能夠省略掉 //執行塊n }
switch-case
switch (控制表達式){ case 常量: 語句; 語句; break; case 常量: 語句; 語句; case 常量: case 常量: 語句; default: 語句; break; }
swtich-case 示例-成績轉換
本題要求編寫程序將一個百分制成績轉換爲五分製成績。轉換規則:
輸入格式:
輸入在一行中給出1個整數的百分制成績
輸入出格式:
在一行中輸出對應的五分製成績
輸入樣例:
90
輸出樣例:
A
程序實現:
#include <stdio.h> int main(int argc, char *argv[]) { int score = 0; printf("請輸入你的分數(0-100):"); scanf("%d", &score); if(score < 0 || score > 100) { printf("輸入的分數有誤,請輸入0至100之內的分數"); } else { score = score / 10; switch(score){ case 10: case 9: printf("A"); break; case 8: printf("B"); break; case 7: printf("C"); break; case 6: printf("D"); break; default: printf("E"); break; } } return 0; }
執行結果:
請輸入你的分數(0-100):80 B
錯題解析
如下語句是否能夠經過編譯:
int n = 0;
if ( 1<=n<=10 );
題目分析:
1 <= n <= 10
這個關係表達式的結果,關係表達式按優先級從左到右結合,1<=0的結果爲0, 0<=10的結果爲1,進一步分析,關係表達式的值只能爲0或1,0小於1小於10,所以整個表達式的值老是爲1.一、題目內容:
UTC 是世界協調時,BJT 是北京時間,UTC 時間至關於 BJT 減去 8。如今,你的程序要
讀入一個整數,表示 BJT 的時和分。整數的個位和十位表示分,百位和千位表示小時。如
果小時小於 10,則沒有千位部分;若是小時是 0,則沒有百位部分;若是分小於 10 分,
須要保留十位上的 0。如 1124 表示 11 點 24 分,而 905 表示 9 點 5 分,36 表示 0
點 36 分,7 表示 0 點 7 分。
有效的輸入範圍是 0 到 2359,即你的程序不可能從測試服務器讀到 0 到 2359 之外的輸
入數據。
你的程序要輸出這個時間對應的 UTC 時間,輸出的格式和輸入的相同,即輸出一個整數,
表示 UTC 的時和分。整數的個位和十位表示分,百位和千位表示小時。若是小時小於 10,
則沒有千位部分;若是小時是 0,則沒有百位部分;若是分小於 10 分,須要保留十位上的
0。
提醒:要當心跨日的換算。
輸入格式:
一個整數,表示 BJT 的時和分。整數的個位和十位表示分,百位和千位表示小時。若是小
時小於 10,則沒有千位部分;若是小時是 0,則沒有百位部分;若是分小於 10 分,須要
保留十位上的 0。
輸出格式:
一個整數,表示 UTC 的時和分。整數的個位和十位表示分,百位和千位表示小時。若是小
時小於 10,則沒有千位部分;若是小時是 0,則沒有百位部分;若是分小於 10 分,須要
保留十位上的 0。
輸入樣例:
903
輸出樣例:
103
題目分析
-(-800+2400)
= -1600,也就是說當UTC時間計算結果爲負數時咱們還須要用公式 UTC時間 = - ( UTC時間 + 2400 ) 來轉換爲用戶查看的時間。#include <stdio.h> int main(int argc, char *argv[]) { const int TIMELAG = 800; //北京時間和世界協調時間的時差 const int TIMEOFDAY = 2400; //一天的時間24制在程序中的表示 int bjtTime = 0; int utcTime = 0; /*時間有效性狀態碼, 0:有效 1:無效,小時超出0~23範圍 , 2:無效,分鐘超出0~59範圍 */ int validCode = 0; int hours = 0; int minutes = 0; printf("請輸入北京時間,用一個四位正整數表示," "如1124表示11點24分,7表示0點7分:"); scanf("%d", &bjtTime); //校驗用戶輸入時間的正確性 Begin if(validCode == 0) { hours = bjtTime / 100; if(hours < 0){ validCode = 1; } else if(hours > 23){ validCode = 1; } } if(validCode == 0) { minutes = bjtTime % 100; if(minutes < 0){ validCode = 2; } else if(minutes > 59){ validCode = 2; } } //校驗用戶輸入時間的正確性 End if(validCode == 0) {//有效則進行時間轉換處理 utcTime = bjtTime - TIMELAG; if(utcTime < 0) { utcTime = -(utcTime + TIMEOFDAY); printf("%d(負數表明UTC前一天的時間,好比-2300表示UTC時間前一天23點整)\n", utcTime); } else { printf("%d\n", utcTime); } } else if(validCode == 1) { printf("輸入的時間無效:小時超出範圍,請輸入0~23內的小時\n"); } else if(validCode == 2) { printf("輸入的時間無效:分鐘超出範圍,請輸入0~59內的分鐘\n"); } else {//當新增了錯誤碼,但忘記新增else-if分支時提示,幫助排錯。 printf("輸入的時間無效:錯誤碼%d,請聯繫管理員\n",validCode); } return 0; }
運行結果:
請輸入北京時間,用一個四位正整數表示,如1124表示11點24分,7表示0點7分:1124 324 請輸入北京時間,用一個四位正整數表示,如1124表示11點24分,7表示0點7分:7 -1607(負數表明UTC前一天的時間,好比-2300表示UTC時間前一天23點整) 請輸入北京時間,用一個四位正整數表示,如1124表示11點24分,7表示0點7分:2400 輸入的時間無效:小時超出範圍,請輸入0~23內的小時 請輸入北京時間,用一個四位正整數表示,如1124表示11點24分,7表示0點7分:2360 輸入的時間無效:分鐘超出範圍,請輸入0~59內的分鐘
二、題目內容:
無線電臺的 RS 制信號報告是由三兩個部分組成的:
R(Readability) 信號可辨度即清晰度.
S(Strength) 信號強度即大小.
其中 R 位於報告第一位,共分 5 級,用 1—5 數字表示.
1---Unreadable
2---Barely readable, occasional words distinguishable
3---Readable with considerable difficulty
4---Readable with practically no difficulty
5---Perfectly readable
報告第二位是 S,共分九個級別,用 1—9 中的一位數字表示
1---Faint signals, barely perceptible
2---Very weak signals
3---Weak signals
4---Fair signals
5---Fairly good signals
6---Good signals
7---Moderately strong signals
8---Strong signals
9---Extremely strong signals
如今,你的程序要讀入一個信號報告的數字,而後輸出對應的含義。
輸入樣例
59
輸出樣例
Extremely strong signals, perfectly readable.
題目分析
程序實現:
#include <stdio.h> int main(int argc, char *argv[]) { int rsCode = 0; int sinals = 0; //信號強度 int redable = 0; //可辨度 int isValidRSCode = 1; printf("請輸入一個信號報告兩位整數,十位表明可辨度,個位表明信號強度,\n" "好比59表示Extremely strong signals, perfectly readable. :"); scanf("%d", &rsCode); //用戶輸入校驗 Begin if(rsCode <= 10){ isValidRSCode = 0; }else if(rsCode > 100) { isValidRSCode = 0; } //用戶輸入校驗 End if(isValidRSCode == 1){ sinals = rsCode % 10; switch(sinals) { case 1: printf("Faint signals, barely perceptible"); break; case 2: printf("Very weak signals"); break; case 3: printf("Weak signals"); break; case 4: printf("Fair signals"); break; case 5: printf("Fairly good signals"); break; case 6: printf("Good signals"); break; case 7: printf("Moderately strong signals"); break; case 8: printf("Strong signals"); break; case 9: printf("Extremely strong signals"); break; default: printf("Error:Unown signals%d", sinals); break; } printf(","); redable = rsCode / 10; switch(redable) { case 1: printf("Unreadable"); break; case 2: printf("Barely readable, occasional words distinguishable"); break; case 3: printf("Readable with considerable difficulty"); break; case 4: printf("Readable with practically no difficulty"); break; case 5: printf("Perfectly readable"); break; default: printf("Error:Unown readable%d", redable); break; } printf(".\n"); } else { printf("信號必須是一個兩位整數"); } return 0; }
執行結果:
請輸入一個信號報告兩位整數,十位表明可辨度,個位表明信號強度, 好比59表示Extremely strong signals, perfectly readable. :59 Extremely strong signals,Perfectly readable. 請輸入一個信號報告兩位整數,十位表明可辨度,個位表明信號強度, 好比59表示Extremely strong signals, perfectly readable. :11 Faint signals, barely perceptible,Unreadable.