中醫(yī)藥大學數學實驗2命題邏輯(2)_第1頁
中醫(yī)藥大學數學實驗2命題邏輯(2)_第2頁
中醫(yī)藥大學數學實驗2命題邏輯(2)_第3頁
中醫(yī)藥大學數學實驗2命題邏輯(2)_第4頁
中醫(yī)藥大學數學實驗2命題邏輯(2)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、離散數學實驗報告專業(yè)班級:15專升本計算機1班 姓名: 祝新宇學號: 201512203101005 實驗成績:1【實驗題目】命題邏輯2【實驗目的】熟悉掌握命題邏輯中真值表,進一步能用它們來解決實際問題。3【實驗內容】求任意一個命題公式的真值表4. 【實驗要求】對于給定的命題公式,生成相應真值表,然后用函數運算,輸出結果:如生成邏輯非、合取、析取、條件、雙條件表達式的真值表,例如:輸入 !a輸出真值表如下:a !a0110輸入a&&b輸出真值表如下:a b ab0 0 00 1 01 0 01 1 1輸入a|b輸出真值表如下:a b ab0 0 00 1 11 0 11 1 1

2、輸入a->b輸出真值表如下:a b ab0 0 10 1 11 0 01 1 1輸入a<>b (其中<>表示雙條件)輸出真值表如下:a b ab0 0 10 1 01 0 01 1 1通過以下界面提示實現相應邏輯運算,列出其真值表*請選擇(16)要進行的真值表運算:1.邏輯非( P)2.合取(PQ)3.析?。≒Q)4.條件(PQ)5.雙條件(PQ)6.繼續(xù)/退出(y/n)*5. 【算法描述】列出命題公式真假值的表,通常以1表示真,0 表示假。命題公式的取值由組成命題公式的命題變元的取值和命題聯結詞決定,命題聯結詞的真值表給出了真假值的算法。6. 【源程序(帶注釋)

3、】#include <stdio.h>#include <stdlib.h>#include <string.h>static int a2;/定義全局數組a2 void main() int luojifei();/聲明邏輯非函數 int hequ();/ 聲明合取函數 int xiqu();/聲明析取函數 int tiaojian();/聲明條件函數 int shuangtiaojian();/聲明雙條件函數 void print();/聲明打印星號函數 char n10; char c; print();/打印星號 loop: /loop循環(huán)開始標記

4、do fflush(stdin);/清空輸入緩存區(qū),以免對后面的數據輸入造成干擾 printf("請選擇(1-6)要進行的真值表運算:nn"); printf("t1.邏輯非( P)nt2.合?。≒Q)nt3.析?。≒Q)nt4.條件(PQ)nt5.雙條件(PQ)nt6.繼續(xù)/退出(y/n)n"); print(); printf("t提示:若想查看真值表,按提示輸入:nt!a 查看邏輯非真值表nta&&b 查看合取真值表nta|b 查看析取真值表nta->b 查看條件真值表nta<>b 查看雙條件真值表n&q

5、uot;); print(); scanf("%s",n);/接收用戶輸入的功能序號 if (strcmp("1",n)=0) /若輸入為1,進行邏輯非運算 print(); printf("n邏輯非結果 P=%dn",luojifei();/邏輯非運算結果來自luojifei子函數的返回值 print(); fflush(stdin); system("pause"); if (strcmp("2",n)=0) /若輸入為2,進行合取運算 print(); printf("n合取結果

6、(PQ)=%dn",hequ();/合取運算結果來自hequ子函數的返回值 print(); fflush(stdin); system("pause"); if (strcmp("3",n)=0) /若輸入為3,進行析取運算 print(); printf("n析取結果(PQ)=%dn",xiqu();/析取運算結果來自xiqu子函數的返回值 print(); fflush(stdin); system("pause"); if (strcmp("4",n)=0) /若輸入為4,進行

7、條件運算 print(); printf("n條件運算結果(PQ)=%dn",tiaojian();/條件運算結果來自tiaojian子函數的返回值 print(); fflush(stdin); system("pause"); if (strcmp("5",n)=0) /若輸入為5,進行雙條件運算 print(); printf("n雙條件運算結果(PQ)=%dn",shuangtiaojian();/雙條件運算結果來自shuangtiaojian子函數的返回值 print(); fflush(stdin);

8、system("pause"); if (strcmp("6",n)=0) break;/若輸入為6,跳出while循環(huán) if (strcmp("!a",n)=0) printf("邏輯非真值表為:nta !ant0 1nt1 0n") ; print();fflush(stdin);system("pause"); if (strcmp("a&&b",n)=0) printf("合取真值表為:nta b abnt0 0 0nt0 1 0nt1 0

9、0nt1 1 1n"); print();fflush(stdin);system("pause"); if (strcmp("a|b",n)=0) printf("析取真值表為:nta b abnt0 0 0nt0 1 1nt1 0 1nt1 1 1n"); print();fflush(stdin);system("pause"); if (strcmp("a->b",n)=0) printf("條件真值表為:nta b abnt0 0 1nt0 1 1nt1 0

10、0nt1 1 1n"); print();fflush(stdin);system("pause"); if (strcmp("a<>b",n)=0) printf("雙條件真值表為:nta b abnt0 0 1nt0 1 0nt1 0 0nt1 1 1n"); print();fflush(stdin);system("pause"); while(c=getchar()!=EOF);/一直執(zhí)行while循環(huán),直到無更多的數據可讀取檔案結束 fflush(stdin);/清空輸入緩存區(qū),以

11、免對后面的數據輸入造成干擾 printf("n確認退出(y/n)?"); scanf("%c",&c);/接收用戶輸入的字符 if(c='y') exit(1);/字符為y,則退出程序 else print(); fflush(stdin); goto loop;/返回loop循環(huán)起始標簽 void print()/定義print函數 printf("*n");int panduanp(int p)/定義判斷p的值是否有效的panduanp函數 while(p!=0 && p!=1)/當p不為0

12、,且p不為1的時候進入while循環(huán) printf("n輸入有誤,請重新輸入P的值(0或1):nP=");/提示用戶輸錯數據 fflush(stdin); scanf("%d",&p);/重新接收p的值,再進行while循環(huán)判斷 return p; void panduanpq(int p,int q)/定義判斷p和q的值是否有效的panduanpq函數 while(p!=0 && p!=1) | (q!=0 && q!=1)/當p不為0也不為1,q不為0也不為1的時候進入循環(huán) fflush(stdin); pri

13、ntf("輸入錯誤,請重新輸入:nP="); scanf("%d",&p); printf("nQ="); scanf("%d",&q);/重新接收p和q的值,再進行while循環(huán)判斷 a0=p; a1=q;/將正確的p和q的值分別存儲到全局數組變量a0,a1中 int luojifei()/定義邏輯非函數 int panduanp(int p);/子函數里聲明panduanp函數 int p; printf("n您要進行邏輯非運算,請輸入P的值:nP="); scanf(&qu

14、ot;%d",&p); if(panduanp(p)=1) return 0;/調用判斷p函數來確保輸入的數據有效,并傳送回p的值,再對p的值進行邏輯非判斷 else return 1;int hequ()/定義合取函數 void panduanpq(int p,int q);/子函數里聲明panduanpq函數 int p,q; printf("n您要進行合取運算,請輸入P與Q的值(0或1):nP="); scanf("%d",&p); printf("Q="); scanf("%d",

15、&q); panduanpq(p,q);/調用判斷pq函數來確保輸入的p,q數據有效,有效數據在判斷pq函數中已經儲存到了全局變量a0,a1中 if(a0=1 && a1=1) return 1;/合取時,只有在p,q均為1的時候,才返回1的值 else return 0;int xiqu()/定義析取函數 void panduanpq(int p,int q);/子函數里聲明panduanpq函數 int p,q; printf("n您要進行析取運算,請輸入P與Q的值(0或1):nP="); scanf("%d",&p)

16、; printf("Q="); scanf("%d",&q); panduanpq(p,q);/調用判斷pq函數來確保輸入的p,q數據有效,有效數據在判斷pq函數中已經儲存到了全局變量a0,a1中 if(a0=1 | a1=1) return 1;/析取時,只要有一個為1,即返回1的值 else return 0;int tiaojian()/定義條件運算函數 void panduanpq(int p,int q);/子函數里聲明panduanpq函數 int p,q; printf("n您要進行條件運算,請輸入P與Q的值(0或1):n

17、P="); scanf("%d",&p); printf("Q="); scanf("%d",&q); panduanpq(p,q);/調用判斷pq函數來確保輸入的p,q數據有效,有效數據在判斷pq函數中已經儲存到了全局變量a0,a1中 if(a0=1 && a1=0 ) return 0;/蘊含時,只有在p為1,q為0的情況下返回0的值 else return 1; int shuangtiaojian()/定義雙條件函數 void panduanpq(int p,int q);/子函數里聲明panduanpq函數 int p,q; printf("n您要進行雙條件運算,請輸入P與Q的值(0或1):nP="); scanf("%d&qu

溫馨提示

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

評論

0/150

提交評論