本文目錄一覽:
C語言課程設計寫了一個可以畫地圖的程序 求取一個好聽的名字= ̄ω ̄=
名字的話最好取英文而且是不能輸入空格的
我給你的建議是 drawingmap DIYmap Imap
望採納!
求編程c語言
我以前寫過的實驗,但是是c++的。稍微改一下頭文件和輸入輸出的格式就可以了。我們快熄燈了,沒時間幫你改了。報告太長了,就不發上來了,要是需要的話再說。
#includeiostream
#includecmath
#includecstdlib
using namespace std;
#define MAX 1000
struct save1
{
float n[MAX];
int top;
}stack1;
struct save2
{
char n[MAX];
int top;
}stack2;
//stack1存儲數字,stack2存儲運算符號.
bool stackempty(save1 s)//判斷是否為空
{
if (s.top== -1)
return 1;
else
return 0;
}
bool stackempty2(save2 s)//判斷是否為空
{
if (s.top== -1)
return 1;
else
return 0;
}
void push(save1 s,float e)//將e入棧
{
if(s.top==MAX-1)
{
cout”棧已滿”endl;
return ;
}
s.top++;
s.n[s.top]=e;
}
void push2(save2 s,char e)//將e入棧
{
if(s.top==MAX-1)
{
cout”棧已滿”endl;
return ;
}
s.top++;
s.n[s.top]=e;
}
void pop(save1 s,float e)//將棧頂元素出棧,存到e中
{
if(s.top==-1)
{ cout”棧為空”endl; }
else
{e=s.n[s.top]; s.top–; }
}
void pop2(save2 s,char e)//將棧頂元素出棧,存到e中
{
if(s.top==-1)
{ cout”棧為空”endl; }
else
{e=s.n[s.top]; s.top–; }
}
int in(char e)//e在棧內的優先順序別
{
if(e==’-‘ || e==’+’) return 2;
if(e==’*’ || e==’/’) return 4;
if(e==’^’) return 5;
if(e=='(‘) return 0;
if(e==’)’) return 7;
return -1;
}
int out(char e)//e在棧外的優先順序別
{
if(e==’-‘ || e==’+’) return 1;
if(e==’*’ || e==’/’) return 3;
if(e==’^’) return 6;
if(e=='(‘) return 7;
if(e==’)’) return 0;
return -1;
}
void count(float a,char ope,float b)//進行計算並將計算結果入棧
{
float sum;
if(ope==’+’) sum=a+b;
if(ope==’-‘) sum=a-b;
if(ope==’*’) sum=a*b;
if(ope==’/’) sum=a/b;
if(ope==’^’) sum=pow(a,b);
push(stack1,sum);
}
int main()
{
int i=0,len,j,nofpoint,g=0;//len表示輸入式子的長度。 g表示讀入的字元是否是字母變數、數字以及運算符。
float a,b;//a、b用來存儲操作數棧中彈出的操作數,便於代入函數中進行計算。
char line[MAX],operate,temp[20];
cout”請輸入表達式”endl;
cinline;
len=strlen(line);
stack1.top=-1;//將棧置為空
stack2.top=-1;//將棧置為空
while(1)
{
g=0;
if(isdigit(line[i]))//若讀入的字元為數字,則繼續判斷下一個字元,直到下一個字元不是數字或者不是小數點,即可保證該操作數是完整的小數,然後將該數入操作數棧。
{
j=0; g=1;
nofpoint=0;//記錄所存的數中小數點的個數
while(isdigit(line[i]) || line[i]==’.’)
{
if(line[i]==’.’) nofpoint++;
temp[j++]=line[i];
i++;
if(i=len) break;
}
if( nofpoint1 || (ilen(line[i]!=’-‘ line[i]!=’+’ line[i]!=’*’ line[i]!=’/’ line[i]!=’^’ line[i]!=’)’)) )
{ cout”表達式有錯”endl; return 0; }//所存數中含有不止一個小數點,或者數字後面跟的不是「+、-、*、/、^、)」,則為錯誤
temp[j]=’\0′;
b=atof(temp);
push(stack1,b);
if(i=len) break;
}
else
{
if(line[i]==’-‘ || line[i]==’+’ || line[i]==’*’ || line[i]==’/’ ||
line[i]==’^’ || line[i]=='(‘ || line[i]==’)’ ) //若讀入的字元為運算符的情況
{
g=1;
if(line[i]=='(‘ i==len) { cout”表達式有錯”endl; return 0; }// 「(」放表達式最後面,錯誤
if(line[i]==’-‘ || line[i]==’+’ || line[i]==’*’ || line[i]==’/’ || line[i]==’^’)
{
if(i==len) { cout”表達式有錯”endl; return 0; }//「+、-、*、/、^」放在表達式最後面,錯誤
if( (!isdigit(line[i+1])) (!isalpha(line[i+1])) line[i+1]!='(‘)//「+、-、*、/、^」後面跟的不是數字或者變數,錯誤
{ cout”表達式有錯”endl; return 0; }
}
if(line[i]==’-‘ (i==0 || line[i-1]=='(‘ ))//運算符是負號
{
push(stack1,0);
push2(stack2,line[i]);
i++;
}
else
{ //讀入的運算符與運算符棧的棧頂元素相比,並進行相應的操作
if(in(stack2.n[stack2.top])out(line[i])||stackempty2(stack2)) { push2(stack2,line[i]);i++;}
else
if(in(stack2.n[stack2.top])==out(line[i])) {i++; stack2.top–;}
else
if(in(stack2.n[stack2.top])out(line[i]))
{
pop(stack1,a);
pop(stack1,b);
pop2(stack2,operate);
count(b,operate,a);
}
if(i=len) break;
}
}
else
{
if(isalpha(line[i]))//讀入的字元是字母變數的情況
{
g=1;
cout”請輸入變數”;
while( isalpha(line[i])) { coutline[i]; i++; }
cout”的值”endl;
cinb;
push(stack1,b);
if(i=len) break;
if(line[i]!=’-‘ line[i]!=’+’ line[i]!=’*’ line[i]!=’/’ line[i]!=’^’ line[i]!=’)’)//變數後面跟的不是「+、-、*、/、^、)」,則為錯誤
{ cout”表達式有錯”endl; return 0; }
}
}
}
if(g==0) { cout”表達式有錯”endl; return 0; }//g=0表示該字元是不符合要求的字元
}
while(stack2.top!=-1)//讀入結束後,繼續進行操作,直到運算符棧為空
{
pop(stack1,a);
pop(stack1,b);
pop2(stack2,operate);
if(operate=='(‘ || operate==’)’) //括弧多餘的情況
{ cout”表達式有錯”endl; return 0; }
count(b,operate,a);
}
coutstack1.n[stack1.top]endl;
return 0;
}
簡單的c語言
對,是數據溢出了, 有符號int 類型的數據最對只能從 負的 2的15次方即(-32768) 到正的 2的15次方-1即32767.
所以32769 超過的部分得從 -32768算起 就是-32767
夠詳細的吧
\b 刪除前一個字元,,\’ 輸出單引號 \\輸出 \ \n 是換行嘛
所以輸出 re’hi’you 經過實際運行
如何快速理解C語言
新手如何學習c語言 第一:一些概念。 c語言是一門程序設計語言,有一些標準,比較重要的是ansi c(好像是c89)和c99。 數據結構包括邏輯結構和物理結構。邏輯結構是數據元素集合和定義在集合上的關係。物理結構是邏輯結構在計算機中的實現。 lcc、vc、tc、gcc都是c語言編譯器,一般包括集成開發環境,編譯器和鏈接器及輔助工具 我們書寫的是c源程序,源程序通過編譯器編譯為中間文件,中間文件經鏈接器鏈接生成可執行文件。不同操作系統可執行文件不同。中間文件也有幾個標準,微軟使用的和linux下通用的有差異。 第二:學習什麼。 個人認為程序設計學習的重點放在數據結構的學習上,但是這種學習要有一個平台,比如c語言。 學習c語言首先要掌握基本語法,常量、變數、類型、及順序結構、分支結構和循環結構的意義及用法。進一步學習構造類型如指針、結構、函數的意義和用法。 c語言提供一些標準函數以減輕程序設計工作量,這些函數我們自己也可以實現。即使不依靠函數庫,只有編譯器,理論上就足夠了。事實上,提供的標準函數效率都很高,使用很頻繁,沒有自己實現的必要,所以掌握常用函數是非常必要的,但是要注意函數的適用範圍。 繼續學習因人而異,應該可以獨立選擇了。 第三:如何學習。 強調多實踐,c語言的學習要經常上機,多寫程序才能逐步提高。 推薦書籍:c programming languge。有中譯本,但最好看英文版。
原創文章,作者:YNLO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/140044.html
微信掃一掃
支付寶掃一掃