




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、合式公式的判定1、 基本概念1、合式公式: (1)單個(gè)命題常項(xiàng)或變項(xiàng)是合式公式;(2)如果A是合式公式,則A也是合式公式;(3)如果A,B是合式公式,則PQ、PQ、PQ、 PQ也是合式公式; (4)只有有限次地應(yīng)用(1)(3)所包含的命題變?cè)?lián)結(jié)詞和括號(hào)的符號(hào)串是 合式公式。2、設(shè)命題集合Lp:C1,C2,Cn 長(zhǎng)度:語(yǔ)言構(gòu)成元素的數(shù)目 表達(dá)式u=v:指長(zhǎng)度相等且從左向右比處處相等 初始段:從最左端開(kāi)始向右掃描 結(jié)尾段:從最右端開(kāi)始向左掃描2、 編程思路假定 給定的程序變量為U ,U為L(zhǎng)p 表達(dá)式,代表輸入的帶判定的字符串又記“*”代表“”,“”,“”,“”四種之一。則:1、空表達(dá)式不是合適
2、公式的表達(dá)式。返回NO2、單獨(dú)的一個(gè)符號(hào)是一個(gè)公式時(shí),當(dāng)且僅當(dāng)此符號(hào)為命題符號(hào)3、如果U的長(zhǎng)度大于1,則U 必須以“(”開(kāi)頭,否則不是合式公式,返回NO。(1)如果U的第二個(gè)符號(hào)為一個(gè)表示否定的“” ,則U必須是可以匹配(V) 模式, 其中V是一個(gè)表達(dá)式。否則U不是合式公式,即U是合式公式當(dāng)且僅當(dāng)V是合式公式。 于是,遞歸判斷V是否為合式公式,轉(zhuǎn)入1、重頭開(kāi)始判斷。(2)如果U的第二個(gè)符號(hào)不是“”。則U一定要符合(A*B)模式。 對(duì)U從左向右掃描,遇到“(A”停止,其中A是一個(gè)含有相同數(shù)目的“(”和“)” 的表達(dá)式,如果沒(méi)有,則U不是合式公式,返回NO。 對(duì)U從右向左掃描,遇到“B)”停止,其
3、中B是一個(gè)含有相同數(shù)目“(”和“)”的 表達(dá)式,如果沒(méi)有,則U不是合式公式,返回NO。 驗(yàn)證(A*B)的“*”是否是“”,“”,“”,“”四種之一,如果不是,則U 不是合式公式,返回NO。 遞歸判斷A,B是否為合式公式,轉(zhuǎn)入1、重頭開(kāi)始判斷3、 程序代碼#include<stdio.h>#include<string.h>#include<stdlib.h>void check(char *str1);int main(void) int index = 1 ; int keyNum = 1 ;static char string50 ;/ 友好界面,循環(huán)使
4、用判斷 while( index != 0 ) printf("歡迎使用合式公式判斷系統(tǒng)n");printf("合式公式()不可以省略n");printf("用- 表示非n");printf("用* 表示與n");printf("用+ 表示或n");printf("用> 表示蘊(yùn)涵n");printf("用 表示等值n");printf("請(qǐng)輸入您要判斷識(shí)別的字符串:n"); scanf("%s",&st
5、ring); check(string); printf("請(qǐng)選擇:0-退出系統(tǒng);1-繼續(xù)判斷其它字符串n"); scanf( "%d", &keyNum ) ;if(keyNum = 0)break;elsecontinue; / 合式公式字符串的判讀void check(char *str1)char formal50;int len = 0;/ 獲取字符串的長(zhǎng)度并且去除空格while( *str1 != '0')if(*str1 != ' ')formallen = *str1;len+;str1+;form
6、allen = '0'printf("字符串%st有效長(zhǎng)度:%dn",formal,len);/ 空字符串不是合式公式if(len = 0)printf("字符串為空ntttNO!tt該字符串不是合式公式n");return;/ 單獨(dú)的一個(gè)符號(hào)是一個(gè)公式時(shí),當(dāng)且僅當(dāng)次符號(hào)為命題符號(hào)else if(len = 1)if(!isalpha(formal0)printf("字符串%s不是合適字母ntttNO!tt該字符串不是合式公式n",formal);return;elseprintf("tttYES!tt字符串
7、%s 是合式公式n",formal);return;/ 如果U的長(zhǎng)度大于,則U 必須以“(”開(kāi)頭,否則不是合式公式,返回NO。elseif( (formal0 != '(') | (formallen-1 != ')')printf("字符串%s 沒(méi)有以“(”開(kāi)始或者以“)”結(jié)束ntttNO!tt該字符串不是合式公式n",formal);return;else/ 如果U的第二個(gè)符號(hào)為一個(gè)表示否定的“”,則U必須是可以匹配(V)模式if(formal1 = '-')char newstring50 ;int i = 0
8、;for(i = 0; i < len - 3; i+)newstringi = formal2+i;newstringi = '0'check(newstring); / 遞歸判斷V是否為合式公式/如果U的第二個(gè)符號(hào)不是“”。則U一定要符合(A*B)模式。elseint j = 0;int max1 = 0;int max2 = 0;int aindex = 0;int bindex = 0;int prenum = 0;int rearnum = 0;char Astring50 ;char Bstring50 ;/ 對(duì)U從左向右掃描,遇到“(A”停止,其中A是一個(gè)含
9、有相同數(shù)目的“(”和“)”的表達(dá)式for(j = 0; j < len; j+)if(formalj = '(')prenum+;max1+;else if(formalj = ')')prenum-;if(prenum = 1 )aindex = j;break;if(prenum = 0 && max1 = 1)prenum+;/ 如果沒(méi)有,則U不是合式公式,返回NO。if(prenum != 1)printf("字符串%s 中沒(méi)有掃描到(A ntttNO!tt該字符串不是合式公式n",formal);return
10、;/截取新的短的字符串Aif(max1 = 1)Astring0 = formal1;Astring1 = '0'elsefor(j = 0; j < aindex; j+)Astringj = formal1+j;Astringj = '0'/ 對(duì)U從右向左掃描,遇到“B)”停止,其中B是一個(gè)含有相同數(shù)目“(”和“)”的表達(dá)式max2 = 0;for(j = len - 1; j >= 0; j-)if(formalj = ')')rearnum+;max2+;else if(formalj = '(')rearnu
11、m-;if(rearnum = 1)bindex = j;break;if(rearnum = 0 && max2 = 1)rearnum+;/ 如果沒(méi)有,則U不是合式公式,返回NO。if(rearnum != 1 )printf("字符串%s 中沒(méi)有掃描到 B)ntttNO!tt該字符串不是合式公式n",formal);return;/截取新的短的字符串Bif(max2 = 1)Bstring0 = formallen-2;Bstring1 = '0'elsefor(j = 0; (bindex + j) < len - 1; j+)
12、Bstringj = formalbindex+j;Bstringj = '0'/ 驗(yàn)證(A*B)的“*”是否是“”,“”,“”,“”四種之一if(max1 = 1 && max2 = 1)if( formal2 = '*' | formal2 = '+' | formal2 = '>' | formal2 = '' )/ 遞歸判斷A,B是否為合式公式check(Astring); check(Bstring);elseprintf("字符串% s中連接符不對(duì)ntttNO!tt該字符串不是合式公式n",formal);return;elseif(aindex != bindex - 2)if(max1 != 1 && max2 !=1 )printf("字符串% s中(A*B)不對(duì)ntttNO!tt該字符串不是合式公式n",formal);return;if( formalaindex + 1 = '*' | formalaindex + 1 = '+' | formalai
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 華北理工大學(xué)冀唐學(xué)院《科研論文寫(xiě)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 平頂山工業(yè)職業(yè)技術(shù)學(xué)院《高級(jí)微生物》2023-2024學(xué)年第二學(xué)期期末試卷
- 長(zhǎng)春東方職業(yè)學(xué)院《商務(wù)英語(yǔ)視聽(tīng)說(shuō)IV》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川電影電視學(xué)院《節(jié)奏與打擊樂(lè)基礎(chǔ)訓(xùn)練》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西運(yùn)城市運(yùn)康中學(xué)2025年初三預(yù)測(cè)密卷(新課標(biāo)II卷)英語(yǔ)試題試卷含答案
- 長(zhǎng)沙商貿(mào)旅游職業(yè)技術(shù)學(xué)院《醫(yī)學(xué)寄生蟲(chóng)學(xué)檢驗(yàn)技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 內(nèi)江市2025年五下數(shù)學(xué)期末達(dá)標(biāo)檢測(cè)試題含答案
- 天津市七校靜海一中楊村中學(xué)2025年高三下學(xué)期第一次摸底考試語(yǔ)文試題理試卷含解析
- 山西省大學(xué)附屬中學(xué)2025屆高三全真模擬生物試題含解析
- 四川省內(nèi)江市資中縣市級(jí)名校2024-2025學(xué)年初三摸底聯(lián)考生物試題試卷含解析
- 《恙蟲(chóng)病正式》課件
- 《新食品安全法培訓(xùn)》課件
- 易錯(cuò)點(diǎn)18 世界近現(xiàn)代史上的反殖民抗?fàn)?備戰(zhàn)2023年中考?xì)v史考試易錯(cuò)題(原卷版)
- 微通道內(nèi)納米流體傳熱流動(dòng)特性
- 初中計(jì)算機(jī)基礎(chǔ)知識(shí)
- 第一章 整式的乘除 單元測(cè)試(含答案) 2024-2025學(xué)年北師大版數(shù)學(xué)七年級(jí)下冊(cè)
- 上海市閔行區(qū)區(qū)管國(guó)企招聘筆試沖刺題2025
- 衛(wèi)生院鄉(xiāng)村醫(yī)保培訓(xùn)課件
- 微陣列技術(shù)在腫瘤標(biāo)志物研究-洞察分析
- 2024至2030年中國(guó)氣力輸送系統(tǒng)行業(yè)投資前景及策略咨詢研究報(bào)告
- 初中數(shù)學(xué)52個(gè)經(jīng)典母題
評(píng)論
0/150
提交評(píng)論