


版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章分支結(jié)構(gòu)【練習(xí)3-1】例3-4中使用else-if 語(yǔ)句求解多分段函數(shù),為了檢查else-if 語(yǔ)句的三個(gè)分支是否正確,已經(jīng)設(shè)計(jì)了三組測(cè)試用例,請(qǐng)問(wèn)還需要增加測(cè)試用例 嗎?為什么?如果要增加,請(qǐng)給出具體的測(cè)試用例并運(yùn)行程序。解答:最好再增加兩組測(cè)試用例,因?yàn)樯形磳?duì)分段函數(shù)參數(shù)的邊界值進(jìn)行測(cè)試??稍俳o 出x=0和x=15時(shí)的兩種情況?!揪毩?xí)3-2】計(jì)算符號(hào)函數(shù)的值:輸入一個(gè)整數(shù)x ,計(jì)算并輸出下列分段函數(shù)sign(x)的值。-1 x<0ry=sig n( x)= 0x=01 x>0I解答:#i nclude <stdio.h>int main(v oid)int x
2、, y;prin tf("E nter x:");sca nf("%d", &x); if(x>0)y=1;else if (x=0) y=0;else y=-1;printf("sign( %d ) = %dn",x,y);return 0;【練習(xí)3-3】統(tǒng)計(jì)學(xué)生平均成績(jī)與及格人數(shù):輸入一個(gè)正整數(shù)n,再輸入n個(gè)學(xué)生的成績(jī),計(jì)算平均成績(jī),并統(tǒng)計(jì)所有及格學(xué)生的人數(shù)。試編寫(xiě)相應(yīng)程序。解答:# in elude <stdio.h>int main(v oid)int coun t, i, n;double grad
3、e, total;printf("Enter n:"); sca nf("%d", &n); total = 0;count = 0;for(i = 1; i <= n; i+) printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade; if(grade >= 60) count+; printf("Grade average = %.2fn", total / n); pr
4、intf("Number of pass = %dn", count);return 0;【練習(xí) 3-4 】統(tǒng)計(jì)字符:輸入 10 個(gè)字符,統(tǒng)計(jì)其中英文字母、空格或回車(chē)、數(shù) 字字符和其他字符的個(gè)數(shù)。試編寫(xiě)相應(yīng)程序。解答:#include <stdio.h>int main(void)int i;int blank, digit, letter, other;char c;blank = digit = letter = other = 0;for(i=1;i<=15;i+) c = getchar(); if(c>='a' &&
5、amp; c <= 'z' | c>='A' && c <= 'Z') letter+;else if(c>='0' && c <= '9') digit+;else if(c=' '|c='n') blank+;else other+; printf("letter=%d,blank=%d,digit=%d,other=%dn", letter, blank, digit, other);return
6、 0;【練習(xí) 3-5 】輸出閏年:輸出 21 世紀(jì)中截至某個(gè)年份之前的所有閏年年份。判 斷閏年的條件是: 能被 4整除但不能被 100整除,或者能被 400 整除。試編寫(xiě)相 應(yīng)程序。解答:# include <stdio.h>int main(void)int year; printf("Enter year: "); scanf("%d", &year);for(;year>=2000;year-)if( (year % 4 = 0 && year % 100 != 0 ) | year % 400 = 0)
7、printf("It is a leap yearn");else printf("It is not a leap yearn ");return 0;【練習(xí) 3-6 】在例 3-8 程序中, 如果把 switch 語(yǔ)句中所有的 break 都去掉,運(yùn) 行結(jié)果會(huì)改變嗎?如果有變化,輸出什么?為什么?解答:如果去掉所有的 break 語(yǔ)句,運(yùn)行結(jié)果會(huì)改變,輸出 price = 0.0 ,因?yàn)椴还?choice 值與其中某個(gè)常量表達(dá)式相等, 當(dāng)去掉 break 語(yǔ)句時(shí),其后的所有語(yǔ)句 段都將運(yùn)行,故每次都將執(zhí)行到 price=0.0 語(yǔ)句為止?!揪毩?xí) 3-
8、7 】成績(jī)轉(zhuǎn)換:輸入一個(gè)百分制成績(jī),將其轉(zhuǎn)換為五分制成績(jī)。百分制 成績(jī)到五分制成績(jī)的轉(zhuǎn)換規(guī)則:大于或等于90分為A,小于90分且大于或等于80分為B,小于80分且大于或等于70分為C,小于70分且大于或等于60分為 D,小于60分為E。試編寫(xiě)相應(yīng)程序。解答:#include <stdio.h>int main(void)double grade;printf("Input grade: "); scanf(“ %lf ” ,&grade);If(grade>=90) printf("A"); else if(grade>=
9、80) printf("B");else if(grade>=70) printf("C");else if(grade>=60) printf("D");else printf("E");return 0;或#include <stdio.h>int main(void)double score;char grade;printf("Input your score: ");scanf("%lf",&score); switch(int(sc
10、ore/10) case 10:case 9: grade='A' ; break;case 8:grade='B' break;case 7:grade='C' break;case 6:grade='D' break;default:grade='E' break;printf("Your grade is: %c",grade);return 0;【練習(xí)3-8】查詢(xún)水果的單價(jià):有4種水果,蘋(píng)果(apples )、梨(pears)、桔 子(oranges)和葡萄(grapes),單價(jià)分別是3
11、.00元/公斤,2.50元/公斤, 4.10 元/ 公斤和 10.20 元/ 公斤。在屏幕上顯示以下菜單(編號(hào)和選項(xiàng)) ,用戶(hù) 可以連續(xù)查詢(xún)水果的單價(jià), 當(dāng)查詢(xún)次數(shù)超過(guò) 5 次時(shí), 自動(dòng)退出查詢(xún); 不到 5 次 時(shí),用戶(hù)可以選擇退出。當(dāng)用戶(hù)輸入編號(hào)14,顯示相應(yīng)水果的單價(jià)(保留兩位小數(shù));輸入 0,退出查詢(xún);輸入其他編號(hào),顯示價(jià)格為 0 。試編寫(xiě)相應(yīng)程序。1 apples2 pears3 oranges4 grapes0 Exit解答:#include <stdio.h>int main(void)int ri;int choice;float price;for(ri=1; ri
12、<=5; ri+)printf("1 applesn");printf("2 pearsn");printf("3 orangesn");printf("4 grapesn");printf("0 Exitn");scanf("%d", &choice); if(choice=0) break;else switch(choice)case 1: price=3.00; break; case 2: price=2.50; break; case 3: pric
13、e=4.10; break; case 4: price=10.20; break; default: price=0;break;printf("price=%0.2fn", price);return 0;【練習(xí) 3-9】 請(qǐng)讀者重新編寫(xiě)例 3-4 的程序,要求使用嵌套的 if - else 句,并上機(jī)運(yùn)行。解答:#include <stdio.h>int main(void)double x, y;printf("Enter x:") ;scanf("%lf", &x);if (x >15)y = 2.
14、5 * x - 10.5;else if(x<0)y=0;elsey=4*x/3;printf("f(%.2f)=%.2fn", x, y);return 0;兩條【練習(xí) 3-10 】在例 3-12 中,改寫(xiě) if 語(yǔ)句前, y= x + 1; 和 y= x + 2; 語(yǔ)句的執(zhí)行條件是什么?改寫(xiě)后呢?解答:改寫(xiě)前: y=x+1 的執(zhí)行條件是 x<1; y=x+2 的執(zhí)行條件是 1<=x<2 。 改寫(xiě)后: y=x+1 的執(zhí)行條件是 x<1; y=x+2 的執(zhí)行條件是 2<=x 。習(xí)題3選擇題1 能正確表示邏輯關(guān)系:“a10或aw0”的C語(yǔ)言
15、表達(dá)式是DA. a >= 10 or a <= 0 Ba >= 0 | a <= 10C. a >= 10 && a <= 0D. a >= 10 | a <= 02. 在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是 CA. 和之前與其具有相同縮進(jìn)位置的if配對(duì)B. 和之前與其最近的if 配對(duì)C和之前與其最近的且不帶 else的if配對(duì) D.和之前的第一個(gè)if 配對(duì)3. 下列敘述中正確的是D 。A. break語(yǔ)句只能用于switch語(yǔ)句B. 在switch語(yǔ)句中必須使用defaultC. break語(yǔ)句必須與switch語(yǔ)句中的c
16、ase配對(duì)使用D. 在switch語(yǔ)句中,不一定使用 break語(yǔ)句1x>04. 有一函數(shù)y=0 x=0 ,以下程序段中錯(cuò)誤的是C-1 x<0A. if(x > 0) y = 1;else if(x = 0) y = 0;B.y=0;if(x>0) y=1;else y = -1;C. y = 0;if(x >= 0);if(x > 0) y = 1 ;else if(x<0) y=-1;D. if(x>=0)if(x>0) y=1;else y=0;else y=-1;else y = -1;5. 下列程序段的輸出結(jié)果是C int mai
17、n(v oid)int a=2,b=-1,c=2;if(a<b)if(b<0)c=0;else c+;prin tf("%dn",c);return 0;.2 D . 3 A。A. 0 B . 1 C6. 下列程序段的輸出結(jié)果是 int main(v oid)int x = 1,a = 0,b = 0;switch(x)case 0case 1case 2 b+; a+ ; a+;b+;printf("a=%d,b=%dn",a,b); return 0;a=1,b=1a=2,b=2Aa=2,b=1BC a=1,b=0D7在執(zhí)行以下程序時(shí),為
18、使輸出結(jié)果為: t=4 ,則給 a 和 b 輸入的值應(yīng)滿(mǎn)足的 條件是 Cint main(void)int a,b,s,t; scanf("%d,%d",&a,&b);s = 1; t = 1; if(a > 0) s = s + 1; if(a > b) t = s + t; else if(a = b) t = 5; else t = 2 * s; printf("t=%dn",t); return 0;a<b<00>a>bAa>b10<x<100 或者 x<0 的 C 語(yǔ)言
19、表達(dá)式是 (x>10&&x<100)|C0<a<b 二、填空題 1表示條件: (x<0) 2已知 a=7.5 , b=2, c=3.6 ,則表達(dá)式 a>b&&c>a|a<b&&!c>b 的值為 0 。3若從鍵盤(pán)輸入 58 ,則以下程序段的輸出結(jié)果是585858int main(void) int a;scanf("%d",&a);if(a > 50) printf("%d",a);if(a > 40) printf("%d&
20、quot;,a);if(a > 30) printf("%d",a);return 0;4下列程序運(yùn)行的輸出結(jié)果是9 int main(void)char c = b'int k = 4;switch(c)case 'a': k = k + 1;break;case 'b': k = k + 2;case 'c': k = k + 3;printf("%dn",k);return 0; 三程序設(shè)計(jì)題1. 比較大小:輸入 3 個(gè)整數(shù),按從小到大的順序輸出。試編寫(xiě)相應(yīng)程序。 解答:#include
21、<stdio.h>int main(void)int a,b,c;char op='<'printf("Enter a:"); scanf("%d",&a);printf("Enter b:"); scanf("%d",&b);printf("Enter c:");scanf("%d",&c);if(a>b) if(b>c)printf("%d%c%d%c%d",c,op,b,op,a)
22、;else if(a>c)printf("%d%c%d%c%d",b,op,c,op,a); else printf("%d%c%d%c%d",b,op,a,op,c);else if(a>c)printf("%d%c%d%c%d",c,op,a,op,b); elseif(b<c)printf("%d%c%d%c%d",a,op,b,op,c); else printf("%d%c%d%c%d",a,op,c,op,b);return 0;2. 高速公路超速處罰:按照規(guī)定,在
23、高速公路上行駛的機(jī)動(dòng)車(chē),超過(guò)本車(chē)道限 速的 10%則處 200 元罰款;若超出 50%,就要吊銷(xiāo)駕駛證。請(qǐng)編寫(xiě)程序根據(jù)車(chē)速 和限速判別對(duì)該機(jī)動(dòng)車(chē)的處理。解答:#include<stdio.h>int main(void)double speed,rate_limiting;printf("Enter speed:");scanf("%lf",&speed);printf("Enter rate_limiting:");scanf("%lf",&rate_limiting); if(rat
24、e_limiting*1.5>speed>rate_limiting*1.1) printf(" 罰款 200 元");else if(speed>rate_limiting*1.5)printf(" 罰款 200 元,并吊銷(xiāo)駕駛證 ");else;return 0;3出租車(chē)計(jì)價(jià): 某城市普通出租車(chē)收費(fèi)標(biāo)準(zhǔn)如下: 起步里程 3 公里,起步費(fèi) 10 元;超起步里程后 10 公里內(nèi),每公里 2 元,超過(guò) 10 公里以上的部分加收 50% 的空駛補(bǔ)貼費(fèi),即每公里 3 元;營(yíng)運(yùn)過(guò)程中,因路阻及乘客要求臨時(shí)停車(chē)的,按 每 5 分鐘 2 元計(jì)收(不
25、足 5 分鐘則不收費(fèi))。運(yùn)價(jià)計(jì)費(fèi)尾數(shù)四舍五入, 保留到元。 編寫(xiě)程序,輸入行駛里程(公里)與等待時(shí)間 (分鐘) ,計(jì)算并輸出乘客應(yīng)支付的車(chē) 費(fèi)(元)。解答:#include <stdio.h>int main(void)int mile,time,cost;printf("Input mile and time:"); scanf("%d%d",&mile,&time); cost=0;mile=mile+time/5;if(mile<=3)cost=10;else if(mile<=13) cost=10+(mi
26、le-3)*2;elsecost=10+10*2+(mile-13)*3; printf("cost=%dn",cost);return 0;4. 統(tǒng)計(jì)學(xué)生成績(jī):輸入一個(gè)正整數(shù)n,再輸入n個(gè)學(xué)生的成績(jī),統(tǒng)計(jì)五分制成績(jī)的分布。百分制成績(jī)到五分制成績(jī)的轉(zhuǎn)換規(guī)則:大于或等于90分為A,小于90分且大于或等于80分為B,小于80分且大于或等于70分為C,小于70分且 大于或等于60分為D,小于60分為E。試編寫(xiě)相應(yīng)程序。解答:#i nclude <stdio.h>int main(v oid)int mark, n, i, sum;double average;int
27、coun ta, coun tb, coun tc, coun td, coun te;prin tf("E nter n:");sca nf("%d",&n);coun ta= countb = countc = countd = counte =sum=0;for(i=1; i<=n; i+)sca nf("%d",&mark);sum=sum+mark;if(mark>=90 ) coun ta+;else if (mark>=80) coun tb+;else if(mark>=70) coun tc+;else if(mark>=60) coun td+;else coun te+;average=sum*1.0/n;prin tf("average=%.1fn",average);printf("A:%d, B: %d, C: %d, D: %d, E: %dn",counta, countb, countc, countd,coun te);retur
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療物聯(lián)網(wǎng)設(shè)備能耗節(jié)能方案行業(yè)跨境出海項(xiàng)目商業(yè)計(jì)劃書(shū)
- 共享單車(chē)策劃專(zhuān)業(yè)策劃方案
- 地基沉降控制方法-洞察及研究
- 自動(dòng)化產(chǎn)線(xiàn)安全評(píng)估-洞察及研究
- 線(xiàn)上藝術(shù)品交易模式-洞察及研究
- 操作風(fēng)險(xiǎn)智能識(shí)別方法-洞察及研究
- 訴訟救濟(jì)機(jī)制完善-洞察及研究
- GB/T 45687-2025立式攪拌磨選型試驗(yàn)方法
- 線(xiàn)上線(xiàn)下股權(quán)眾籌投資協(xié)議范本
- 金融科技項(xiàng)目股權(quán)轉(zhuǎn)讓協(xié)議承債與風(fēng)險(xiǎn)管理合同
- 《不斷變化的人口問(wèn)題》核心素養(yǎng)目標(biāo)教學(xué)設(shè)計(jì)、教材分析與教學(xué)反思-2023-2024學(xué)年初中歷史與社會(huì)人教版新課程標(biāo)準(zhǔn)
- 血液透析惡心嘔吐的應(yīng)急預(yù)案
- 物流倉(cāng)儲(chǔ)中心項(xiàng)目建設(shè)背景和必要性
- 安徽省渦陽(yáng)縣2023-2024學(xué)年七年級(jí)下學(xué)期期中考試語(yǔ)文試題
- 藝術(shù)設(shè)計(jì)專(zhuān)業(yè)面試問(wèn)題
- 廣東省深圳市龍華區(qū)2023-2024學(xué)年二年級(jí)下學(xué)期期中數(shù)學(xué)試題
- 小學(xué)科學(xué)湘科版六年級(jí)下冊(cè)全冊(cè)同步練習(xí)含答案
- (2024年)傳染病培訓(xùn)課件
- 公車(chē)拍賣(mài)拍賣(mài)工作方案
- 幼兒園大班教案《娃哈哈》含反思
- C語(yǔ)言課程設(shè)計(jì)-家庭財(cái)務(wù)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論