代碼如下:
安康網站制作公司哪家好,找創新互聯!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設公司等網站項目制作,到程序開發,運營維護。創新互聯2013年開創至今到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯。
#includestdio.h
void main()
{
int n,a,b,c;
scanf("%d",n);
a=n; c=a%10; a/=10; b=a%10; a/=10; a%=10;
printf("%d的個位為%d,十位為%d,百位為%d。\n",n,c,b,a);
}
c語言:
1.簡介:
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用范圍廣泛,具備很強的數據處理能力,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,適于編寫系統軟件,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。
2.基本特性
1、高級語言:它是把高級語言的基本結構和語句與低級語言的實用性結合起來的工作單元。
2、結構式語言:結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便于使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,并具有多種循環、條件語句控制程序流向,從而使程序完全結構化。
4、代碼級別的跨平臺:由于標準的存在,使得幾乎同樣的C代碼可用于多種操作系統,如Windows、DOS、UNIX等等;也適用于多種機型。C語言對編寫需要進行硬件操作的場合,優于其它高級語言。
5、使用指針:可以直接進行靠近硬件的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由于這些改進增加語言的復雜度,也為另一部分所詬病。Java則吸取了C++的教訓,取消了指針操作,也取消了C++改進中一些備受爭議的地方,在安全性和適合性方面均取得良好的效果,但其本身解釋在虛擬機中運行,運行效率低于C++/C。一般而言,C,C++,java被視為同一系的語言,它們長期占據著程序使用榜的前三名。
3.特有特點
1.C語言是一個有結構化程序設計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變量類型可以用結構體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變量、函數命名有更多彈性。
5.部份的變量類型可以轉換,例如整型和字符型變量。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
分類: 電腦/網絡 程序設計 其他編程語言
問題描述:
功能為;首先有一個界面問"請輸入你想進行運算的對象個數”
這個數在一至5之間
然后出來界面讓輸入算術式
然后輸入結果
然后有計算機判斷對錯
解析:
哈哈,剛好,我也在學C語言,碰巧,這幾天也正在思考編寫計算器的問題.網上應該能找到經典的C程序計算器,這個是我獨立寫出來的.
我只學到數組這里.所以沒用到堆棧,指針之類的.主要用數組,循環與函數調用實現.完全是入門級.
支持四則運算和指數運算(用h符)。
數據類型為float型。
算術式最大長度可以通過修改程序中的數組長度和“I”值更該,沒有具體規定,使用時要注意運算結果的溢出問題。
對錯誤的算術式有一定的檢查功能。
程序代碼如下:
#includemath.h
float sss(float d[],char e[],int I)
{int i,n;
for(i=0;i=I;n=++i)
{if(e[i]==0)
{printf("The answer is:--: %f\n",d[i]);i=I;}
else
{if(e[i]-e[i+1]-5)
{switch(e[i])
{case 80: d[i+1]=d[i]+d[i+1];break;
case 81: d[i+1]=d[i]-d[i+1];break;
case 90: d[i+1]=d[i]*d[i+1];break;
case 91: d[i+1]=d[i]/d[i+1];break;
case 100: d[i+1]=pow(d[i],d[i+1]);break;
default :printf("Sorry! Some Error unknow...");break;}
for(n=i;i=I;i++)
{d[i]=d[i+1],e[i]=e[i+1];
if(e[i]==0) i=I;}
if(n==0) i=n-1;
else i=n-2;}}}}
main()
{float d[32];
char e[32];
int i,I=31,n;
printf("\n\n");
for(i=0;i=I;i++)
{scanf("%f%c",d[i],e[i]);
switch(e[i])
{case '+': e[i]=80;break;
case '-': e[i]=81;break;
case '*': e[i]=90;break;
case '/': e[i]=91;break;
case 'h': e[i]=100;break;
case '=': e[i]=0,i=I;break;
default: printf("Oper %d is Error! ---- %c -ChangeTo:one of + - * / h =\n",i+1,e[i]);}}
printf("\n");
sss(d,e,I);}
直接從我的.c文件里復制出來的.
使用時輸入格式例如:123*456-789/369+852h2-741= 然后回車.
852h2表示852的2次方.記得以等號結束.不支持括號(正在努力).
在這支持的32次運算(包括等號).
//名字記不太清了,這個叫遞歸下降算法,但這個算法肯定是首先在編譯原理中的,主要用在
//各種編譯器中。就是現掃描整個表達式字符串,把其中的運算符找出來,判斷它們的優先級
//然后按從左到右的順序先計算把優先級低的運算符和它兩邊的數據壓入,這樣循環做過以后
//再從頭取出一個一個計算,表達式的結構類似與二叉樹,遍歷二叉樹后把結果存在連表中供
//計算。你這個程序問題好像比較多啊。用的數據結構類型和函數名根本就不配套
#include stdio.h
struct s_node //節點結構體
{
int data;
struct s_node *next;
};
typedef struct s_node s_list;
typedef s_list *link;
link operator=NULL;
link operand=NULL;
link push(link stack,int value) //向鏈表添加數據
{
link newnode;
newnode=(link) malloc(sizeof(s_list));
if(!newnode)
{
printf("\nMemory allocation failure!!!");
return NULL;
}
newnode-data=value;
newnode-next=stack;
stack=newnode;
return stack;
}
link pop(link stack,int *value) //從鏈表取出數據
{
link top;
if(stack !=NULL)
{
top=stack;
stack=stack-next;
*value=top-data;
free(top);
return stack;
}
else
*value=-1;
}
int empty(link stack) //判斷鏈表是否為空
{
if(stack==NULL)
return 1;
else
return 0;
}
int is_operator(char operator) //判斷是否是運算符號
{
switch (operator)
{
case '+': case '-': case '*': case '/': return 1;
default:return 0;
}
}
int priority(char operator) //判斷運算符優先級
{
switch(operator)
{
case '+': case '-' : return 1;
case '*': case '/' : return 2;
default: return 0;
}
}
int two_result(int operator,int operand1,int operand2) //計算數值,計算器的核心
{
switch(operator)
{
case '+':return(operand2+operand1);
case '-':return(operand2-operand1);
case '*':return(operand2*operand1);
case '/':return(operand2/operand1);
}
}
void main()
{
char expression[50];
int position=0;
int op=0;
int operand1=0;
int operand2=0;
int evaluate=0;
printf("\nPlease input the inorder expression:");
gets(expression);
while(expression[position]!='\0'expression[position]!='\n')
{
if(is_operator(expression[position]))
{
if(!empty(operator))
while(priority(expression[position])= priority(operator-data)
!empty(operator))
{
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operator=pop(operator,op);
operand=push(operand,two_result(op,operand1,operand2));
}
operator=push(operator,expression[position]);
}
else
operand=push(operand,expression[position]-48);
position++;
}
while(!empty(operator))
{
operator=pop(operator,op);
operand=pop(operand,operand1);
operand=pop(operand,operand2);
operand=push(operand,two_result(op,operand1,operand2));
}
operand=pop(operand,evaluate);
printf("The expression [%s] result is '%d' ",expression,evaluate);
getch();
}
文章題目:c語言函數指針數組計算器 c語言指針數組經典題目詳解
URL地址:http://vcdvsql.cn/article30/ddsihpo.html
成都網站建設公司_創新互聯,為您提供App開發、網頁設計公司、電子商務、云服務器、網站制作、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯