實驗3邏輯結(jié)構(gòu)程序設計答案_第1頁
實驗3邏輯結(jié)構(gòu)程序設計答案_第2頁
實驗3邏輯結(jié)構(gòu)程序設計答案_第3頁
實驗3邏輯結(jié)構(gòu)程序設計答案_第4頁
實驗3邏輯結(jié)構(gòu)程序設計答案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗3 分支結(jié)構(gòu)程序設計班級:學號:姓名:日期:一、實驗目的(1)了解C語言表示邏輯量的方法(以0代表“假”,以1代表“真”)。(2)學會正確使用邏輯運算符和邏輯表達式。(3)熟練掌握if語句和switch語句。(4)結(jié)合程序掌握一些簡單的算法。(5)學習調(diào)試程序。二、實驗內(nèi)容1運行以下程序,說明表達式值1 和表達式值2 的不同。#include <stdio.h>void main()int a=3,b=2,c=1,d=0;printf("exp1=%dn",d=a>b+c);printf("exp2=%dn",d=a>b+c)

2、;2以下程序的功能是:從鍵盤輸入一個字符型數(shù)據(jù),若輸入一個數(shù)字字符(0-9),則將其轉(zhuǎn)換成相應的整數(shù)顯示出來;若輸入其它字符,則顯示出錯信息。#include <stdio.h>void main( )char c;scanf("%c",&c);if('0'<=c<='9') /*條件表達式*/ c=c-'0'printf("c=%dn",c);else printf("data error!n");實驗步驟: 上機調(diào)試以上程序; 輸入09之間的任何字符,

3、驗證輸出結(jié)果是否和程序功能相符合; 輸入09之外的任何字符,例如,輸入字母a,驗證輸出結(jié)果是否和程序功能相符合; 將條件表達式if('0'<=c<='9')改為if('0'<=c&&c<='9'),重復、步驟。分析、比較以上的輸出結(jié)果,總結(jié)字符變量c 的取值在0-9之間在C 語言編程中的正確描述。3if 語句的第一種形式為基本形式 if(表達式) 語句; 其語義是:如果表達式的值非零(為真),則執(zhí)行其后的語句, 否則不執(zhí)行該語句。編程:輸入兩個整數(shù),輸出其中的大數(shù)。提示:輸入兩個數(shù)a,b。把

4、a 先賦予變量max,再用if 語句判別max 和b的大小,如max 小于b,則把b 賦予max。因此max 中總是大數(shù),最后輸出max的值。#include <stdio.h>void main()int a,b,max;scanf("%d%d",&a,&b);max=a;if(b>max) max=b;printf("max=%dn",max);4if 語句的第二種形式為if-else 形式if(表達式) 語句1;else 語句2;其語義是:如果表達式的值非零(為真),則執(zhí)行語句1,否則執(zhí)行語句2 。程序填空題。下列

5、程序用于完成對輸入的整數(shù)判斷它是奇數(shù)還是偶數(shù),并給出相應的提示。試完成它缺少的部分,并上機驗證。#include <stdio.h>void main( )int x;scanf("%d",&x);if(x/2 % =0 ) printf("x=%d is Evenn",x);else printf("x=%d is Oddn",x);編程:輸入兩個整數(shù),輸出其中的大數(shù)。提示:改用if-else 語句判別a,b 的大小,若a 大,則輸出a,否則輸出b。#include <stdio.h>void mai

6、n()int a,b;scanf("%d%d",&a,&b);if(a>b) printf("max=%dn",a);elseprintf("max=%dn",b);5if 語句的第三種形式為if-else-if 形式(嵌套的if)當有多個分支選擇時,可采用if-else-if 語句,其一般形式為:if(表達式1) 語句1;else if(表達式2) 語句2;else if(表達式3) 語句3;else if(表達式m) 語句m;else 語句n;其語義是:依次判斷表達式的值,當出現(xiàn)某個值為真時, 則執(zhí)行其對應的

7、語句。然后跳到整個if 語句之外繼續(xù)執(zhí)行程序。 如果所有的表達式均為假,則執(zhí)行語句n 。 然后繼續(xù)執(zhí)行后續(xù)程序。編程:要求判別鍵盤輸入字符的類別??梢愿鶕?jù)輸入字符的ASCII 碼來判別類型。由ASCII 碼表可知ASCII 值小于32 的為控制字符。 在“0”和“9”之間的為數(shù)字,在“A”和“Z”之間為大寫字母, 在“a”和“z”之間為小寫字母,其余則為其它字符。 這是一個多分支選擇的問題,用if-else-if 語句編程,判斷輸入字符ASCII 碼所在的范圍,分別給出不同的輸出。例如輸入為“g”,輸出顯示它為小寫字符。在嵌套中要特別注意if 和else 的配對問題。為了避免二義性,語言規(guī)定,

8、else 總是與它前面最近的if 配對。6分析以下程序的運行結(jié)果并上機調(diào)試。程序1:#include <stdio.h>void main()int a=3,b=4,c=5,d=0;if(a>b) d=a;elseif(c>b) d=c;else d=b;printf("d=%dn",d);程序2:#include <stdio.h>void main()int a=3,b=4,c=5,d=0;if(a>b)if(c>b) d=c;else d=b;else d=a;printf("d=%dn",d);程序

9、3:#include <stdio.h>void main()int a=3,b=4,c=5,d=0;if(a>b)if(c>b) d=c;else d=b;printf("d=%dn",d);程序4:#include <stdio.h>void main()int a=3,b=4,c=5,d=0;if(a>b)if(c>b) d=c;else d=b;printf("d=%dn",d);編程:比較鍵盤依次輸入的兩個數(shù)a 和b 的大小關系,并根據(jù)大小關系分別輸出1(若a>b)、0(若a=b)、-1(若

10、a<b)。#include <stdio.h>void main()int a,b;scanf("%d%d",&a,&b);if(a>b)printf("1n");else if(a=b)printf("0n");elseprintf("-1n");7條件運算符和條件表達式由條件運算符組成條件表達式的一般形式為:表達式1? 表達式2: 表達式3其求值規(guī)則為:如果表達式1 的值為真,則以表達式2 的值作為條件表達式的值,否則以表達式3 的值作為整個條件表達式的值。用條件表達式對

11、4 中要求的輸出兩個數(shù)中的大數(shù)的程序重新編程。8switch 語句語言還提供了另一種用于多分支選擇的switch 語句, 其一般形式為:switch(表達式)case 常量表達式1: 語句1;case 常量表達式2: 語句2;case 常量表達式n: 語句n;default : 語句n+1;在switch 語句中,“case 常量表達式”只相當于一個語句標號, 表達式的值和某標號相等則轉(zhuǎn)向該標號執(zhí)行,但不能在執(zhí)行完該標號的語句后自動跳出整個switch 語句。 這是與前面介紹的if 語句完全不同的,應特別注意。程序分析題。分析以下程序,對分析的結(jié)果上機檢驗。#include <stdio

12、.h>void main( )int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0: a+;break;case 1: b+;break; /abccase 2:a+;b+;break;printf("a=%d, b=%dn",a,b);在程序中的/abc 前面,后面添加一個break; 再次運行該程序,程序結(jié)果有何變化?在實驗報告中對結(jié)果作出解釋。9本實驗要求事先編好解決下面問題的程序,然后上機輸入程序并調(diào)試運行程序。(1)有一個函數(shù):用scanf函數(shù)輸入x的值,求y的值。運行程序,輸入x的值(分別為x<1、1

13、10、x³10這3種情況),檢查輸出的y值是否正確。#include <stdio.h>void main() int x,y; printf("please input x:"); scanf("%d",&x); if(x<1) y=x; else if(x>=1 && x<10) y=2*x-1; else y=3*x-11; printf("x=%3d,y=%dn",x,y);(2)給出一個百分制的成績,要求輸出成績等級A、B、C、D、E。90分以上為A,8089分

14、為B,7079分為C,6069分為D,60分以下為E。#include <stdio.h>void main() float score; char grade; printf("please input score:"); scanf("%f",&score); while(score>100|score<0) printf("please input again,score is wrong!nscore="); scanf("%f",&score); switch(in

15、t)(score/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' printf("score=%f,grade=%cn",score,grade);事先編寫好程序,要求分別用if語句和switch語句來實現(xiàn)。運行程序,并檢查結(jié)果是否正確。再運行一次程序,輸入分數(shù)為負值(如-70),這顯然是輸

16、入時出錯,不應給出等級,修改程序,使之能正確處理任何數(shù)據(jù),當輸入數(shù)據(jù)大于100或小于0時,通知用戶“輸入數(shù)據(jù)錯誤”,程序結(jié)束。(3)給一個不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別輸出每一位數(shù)字;按逆序輸出各位數(shù)字,例如原數(shù)為321,應輸出123。應準備以下測試數(shù)據(jù):l 要處理的數(shù)為1位正整數(shù);l 要處理的數(shù)為2位正整數(shù);l 要處理的數(shù)為3位正整數(shù);l 要處理的數(shù)為4位正整數(shù);l 要處理的數(shù)為5位正整數(shù);除此之外,程序還應當對不合法的輸入做必要的處理,例如:l 輸入負數(shù);l 輸入的數(shù)超過5位。#include <stdio.h>void main() int m,k; long

17、 n; printf("Please input a integer:"); scanf("%ld",&n); k=0; while(n>0) m=n % 10; n=n/10; k+; printf("%d",m); printf("ndata number is %dn",k);(4)輸入4個整數(shù),要求按由小到大順序輸出。在得到正確結(jié)束后,修改程序使之按同大到小順序輸出。#include <stdio.h>void main() int a,b,c,d,t; printf("please input a,b,

溫馨提示

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

評論

0/150

提交評論