




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
個人學(xué)高中物理的經(jīng)驗以下是是個人學(xué)習(xí)物理的經(jīng)驗,和大家分享一下,希望對高中的學(xué)生有幫助、本人比較喜歡學(xué)習(xí)物理對于力學(xué)問題首先要讀懂題目,找出題目中對我們有用的信息,讀懂題目后,對物體進(jìn)行受力分析,這是關(guān)鍵,經(jīng)過受力分析,問題就會迎刃而解,因為看圖比較直觀。對于運(yùn)動學(xué)問題首先也是先讀懂題目,這很重要,然后分析這是什么運(yùn)動?如勻速直線運(yùn)動,勻變速運(yùn)動。分析完什么運(yùn)動后要明白整個的運(yùn)動過程。這很關(guān)鍵,再從題目中找出已知量和要我們求的量,再找對應(yīng)的物理公式,問題就解決了。*頭文件pl0.h*/#defineal10/*符號的最大長度*/
#definenmax14/*number的最大位數(shù)*/
#definenorw8/*關(guān)鍵字個數(shù)*/
charch;/*獲取字符的緩沖區(qū),getch使用*/
intcc,ll;/*cc表示當(dāng)前字符(ch)的位置*/
charline[81];/*讀取行緩沖區(qū)*/
chara[al+1];/*臨時符號,多處的字節(jié)用于存放0*/
charanum[nmax+1];/*臨時符號,存放number*/
charinum[nmax+1];/*存放常數(shù)*/
charword[norw][al];/*保留字*/
charfname[al];/*文件名*/
charid[al+1];/*存放標(biāo)識符或保留字*/
intnum;/*常數(shù)*/
interr;//錯誤計數(shù)器
FILE*fin;
FILE*fout;
FILE*fas;/*詞法分析結(jié)果文件*/
/*函數(shù)執(zhí)行出錯,退出程序*/
#definegetchdoif(-1==getch())return-1
#definegetsymdoif(-1==getsym())return-1
intgetch();/*讀取一行字符*/
intgetsym();/*讀取一個分詞*//*主程序*//*
*運(yùn)行環(huán)境:Microsoftvisualc++6.0
*//*
*程序功能要求:
*編制一個讀單詞過程,源程序為一個文件,讀取該文件,識別出各個具有獨立意義的單詞,
*即基本保留字、標(biāo)識符、常數(shù)、運(yùn)算符、界符五大類。并依次輸出各個單詞的內(nèi)部編碼及單詞符號自身值。
*單詞的內(nèi)部編碼如下:
*1.保留字:if、int、for、while、do、return、break、continue;單詞種別碼為1;
*2.標(biāo)識符:除保留字外的以字母開頭,后跟字母、數(shù)字的字符序列;單詞種別碼為2;
*3.常數(shù)為無符號整形數(shù);單詞種別碼為3;
*4.運(yùn)算符包括:+、-、*、/、=;單詞種別碼為4;
*5.分隔符包括:,、;、{、}、(、);單詞種別碼為5。
*//*
*各類單詞的文法
*<標(biāo)識符>→<字母><字母數(shù)字串>
*<字母數(shù)字串>→<字母><字母數(shù)字串>|<數(shù)字><字母數(shù)字串>|ε
*<無符號整數(shù)>→<數(shù)字>|<數(shù)字><無符號整數(shù)>
*<運(yùn)算符>→+|-|*|/|=
*<界符>→,|;|(|)|{|}
*//*
*程序輸出格式(<單詞種別碼>,"<單詞符號>")
*例如對于源程序
main()
{
inta,b;
a=10;
b=a+20;
}
輸出格式為
cc=0;
ch='';
while(ch!=10)
{
if(EOF==fscanf(fin,"%c",&ch))
{
line[ll]=0;
break;
}
line[ll]=ch;
ll++;
}
}
ch=line[cc];
cc++;
return0;
}
/*讀取一個分詞*/
intgetsym()
{
inti,j,k;while(ch==''||ch==10||ch==9)//忽略空格,換行和TAB
{
getchdo;
}
if(ch>='a'&&ch<='z')//判斷是否為關(guān)鍵字或標(biāo)識符
{
k=0;do{
if(k<al){
a[k]=ch;
k++;
}
getchdo;
}while(ch>='a'&&ch<='z'||ch>='0'&&ch<='9');
a[k]=0;
if(k>al)printf("error");
strcpy(id,a);
i=0;
j=norw-1;
do{
k=(i+j)/2;
if(strcmp(id,word[k])<=0)
{j=k-1;
}
if(strcmp(id,word[k])>=0)
{
i=k+1;
}
}while(i<=j);
if(i-1>j)
{fprintf(fas,"(1,\"%s\")\n",id);/*分詞為關(guān)鍵字*/
}
else{fprintf(fas,"(2,\"%s\")\n",id);/*標(biāo)識符*/}
}
elseif(ch>='0'&&ch<='9')/*判斷分詞是否為常數(shù)*/
{
k=0;
num=0;
do{
num=10*num+ch-'0';
anum[k]=ch;
k++;
getchdo;
}while(ch>='0'&&ch<='9');
fprintf(fas,"(3,\"%d\")",num);/*常數(shù)*/
anum[k]=0;
if(k>nmax)/*常數(shù)位數(shù)超過規(guī)定的最大位數(shù),報錯*/
{
strcpy(inum,anum);
fprintf(fas,"常數(shù)%s超出范圍!",inum);
}
fprintf(fas,"\n");
}
elseif(ch=='+')/*運(yùn)算符*/
{
fprintf(fas,"(4,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='-')
{
fprintf(fas,"(4,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='*')
{
fprintf(fas,"(4,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='/')
{
fprintf(fas,"(4,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='=')
{
fprintf(fas,"(4,\"%c\")\n",ch);
getchdo;
}
elseif(ch==',')/*界符*/
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
elseif(ch==';')
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='{')
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='}')
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
elseif(ch=='(')
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
elseif(ch==')')
{
fprintf(fas,"(5,\"%c\")\n",ch);
getchdo;
}
else{/*其他字符*/
getchdo;
}
return0;
}
voidinit()/*初始化*/
{
/*設(shè)置保留字名字,按照字母順序,便于折半查找*/
strcpy(&(word[0][0]),"break");
strcpy(&(word[1][0]),"continue");
strcpy(&(word[2][0]),"do");
strcpy(&(word[3][0]),"for");
strcpy(&(word[4][0]),"if");
strcpy(&(word[5][0]),"int");
strcpy(&(word[6][0]),"return");
strcpy(&(word[7][0]),"while");
}
intmain()
{
printf("請輸入源文件名:");
scanf("%s",fname);
fin=fopen(fname,"r");
if(fin)
{
fas=fopen("fa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校教學(xué)成果表格
- 農(nóng)學(xué)作物種植技術(shù)測試題及答案解析
- 高效辦公數(shù)字化解決方案實踐指南
- 財務(wù)人員擔(dān)保協(xié)議書
- 水資源智能監(jiān)控與管理合同
- 金融科技反欺詐技術(shù)合作協(xié)議
- 基于人工智能的智能種植管理系統(tǒng)優(yōu)化實踐
- 月子中心月嫂服務(wù)合同
- 建筑裝修行業(yè)施工安全責(zé)任書
- 西方童話格林童話讀后感和兒童成長影響
- 車輛維修、保養(yǎng)審批單
- 科普版六年級下冊英語全冊教學(xué)課件
- 電力系統(tǒng)的微電網(wǎng)區(qū)域規(guī)劃管理
- 智能割草機(jī)器人的概述外文翻譯
- 井下作業(yè)工:初級井下作業(yè)工考試答案二
- 學(xué)生心理健康一生一策檔案模板
- 《胸外按壓》課件
- 2024屆南通二模(又蘇北七市二模)數(shù)學(xué)試題
- 北師大版六年級下冊書法練習(xí)指導(dǎo)教案教學(xué)設(shè)計
- 江西省南昌市2024屆高三一模語文試題及答案解析
- 2023年小學(xué)音樂2022版新課程標(biāo)準(zhǔn)考試測試題及答案(共五套)
評論
0/150
提交評論