A. c語言設計一個簡單的計算器程序
#include<stdio.h>//計算器
voidmenu()//自定義的菜單界面
{
printf("--------------------\n");
printf("請輸入你的選擇\n");
printf("1.+\n");
printf("2.-\n");
printf("3.*\n");
printf("4./\n");
printf("--------------------\n");
}
intmain()
{
inti=0;
intj=0;
intnum=0;//計算結果存放在nun
intselect=0;//選擇的選項存放在select
do//do-while先執行再判斷循環條件,即可實現重復計算功能
{
menu();//列印出菜單界面
scanf("%d",&select);//輸入你的選項
printf("請輸入計算值:");
scanf("%d%d",&i,&j);//輸入要計算的數值
switch(select)
{
case1:
printf("%d+%d=%d\n",i,j,num=i+j);//實現加法功能
break;
case2:
printf("%d-%d=%d\n",i,j,num=i-j);//實現減法功能
break;
case3:
printf("%d*%d=%d\n",i,j,num=i*j);//實現乘法功能
break;
case4:
printf("%d-%d=%d\n",i,j,num=i/j);//實現除法功能
break;
default:
printf("輸入有誤重新選擇");
break;
}
}while(select);
return0;
}
運行結果:
(1)c語言的算術程序擴展閱讀:
return表示把程序流程從被調函數轉向主調函數並把表達式的值帶回主調函數,實現函數值的返回,返回時可附帶一個返回值,由return後面的參數指定。
return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
B. c語言怎麼進行算術運算
#include "stdio.h" void main() { int a,b,c; scanf("%d%d",&a,&b); c=a+b; printf("%d\n",c); getch(); }
具體如下:
1、簡介C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。
2、基本介紹
C語言,是一種通用的、過程式的編程語言,廣泛用於系統與應用軟體的開發。具有高效、靈活、功能豐富、表達力強和較高的移植性等特點,在程序員中備受青睞。最近25年是使用最為廣泛的編程語言。
3、運算
C語言的運算非常靈活,功能十分豐富,運算種類遠多於其它程序設計語言。在表達式方面較其它程序語言更為簡潔,如自加、自減、逗號運算和三目運算使表達式更為簡單,但初學者往往會覺的這種表達式難讀,關鍵原因就是對運算符和運算順序理解不透不全。當多種不同運算組成一個運算表達式,即一個運算式中出現多種運算符時,運算的優先順序和結合規則顯得十分重要。在學習中,對此合理進行分類,找出它們與數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算符在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。
C. 求C語言小學生算術運算程序
main()
{
char ch;
int a;
printf("1 加法運算\n
2 減法運算\n
3 乘法運算\n
4 除法運算\n
0 退出\n");
scanf("%d",a);
do
{
switch(a)
{
case 1:
........//加法運算演算法
break;
case 2:
........// 減法運算演算法
break;
case 3:
........//乘法運算演算法
break;
case 4:
........//除法運算演算法
break;
case 0:
exit(0);//退出程序
}
printf("是否繼續做題,請輸入Y/N:");
scanf("%c",ch);
}while(ch=='Y' || ch=='y');
return 0;
}
D. C語言中一個算術練習程序的實現
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<math.h>
#defineN99
voidsign(charn)
{
inta,b,c;
srand((unsigned)time(NULL));
a=1+(int)(10*rand()/(RAND_MAX+1.0));//隨機數產生
b=1+(int)(10*rand()/(RAND_MAX+1.0));
printf("%d%c%d=",a,n,b);
scanf("%d",&c);
if(n=='+')
{
if(c==a+b)printf("答對了! ");
elseprintf("答案是%d ",a+b);
}
if(n=='-')
{
if(c==a-b)printf("答對了! ");
elseprintf("答案是%d ",a-b);
}
if(n=='*')
{
if(c==a*b)printf("答對了! ");
elseprintf("答案是%d ",a*b);
}
if(n=='/')
{
if(c==a/b)printf("答對了! ");
else{printf("答案是%d ",a/b);}
}
}
voidmenu()
{
printf("1.加法運算 ");
printf("2.減法運算 ");
printf("3.乘法運算 ");
printf("4.除法運算 ");
printf("0.退出程序 ");
}
voidmain()
{
intnum,i;
for(i=0;;i++)
{
while(1){
menu();
printf(" 請選擇功能:");
scanf("%d",&num);
switch(num)
{
case4:sign('/');break;
case3:sign('*');break;
case2:sign('-');break;
case1:sign('+');break;
case0:return;
}
printf("按任意鍵返回菜單 ");
getch();
system("cls");//清屏
}
}
}
E. 如何用C語言數據結構的格式實現簡單的算術表達式求值程序
用棧把中綴表達式(輸入的式子)按優先順序轉為後綴表達式(逆波蘭式,即運算符在前,操作數在後),再利用棧變計算邊保存結果用於下一步計算,最後算出式子的答案
以下代碼輸入一個式子(以
=
作為輸入結束標志),輸出結果,負數如-3用0-3表示,支持高位運算
#include
<stdio.h>
#include
<stdlib.h>
#include
<math.h>
#include
<malloc.h>
#define
OK
1
#define
ERROR
-1
typedef
char
SElemType;
typedef
char
Status;
#define
STACK_INIT_SIZE
100000
#define
STACKINCREMENT
2
struct
SqStack
{
SElemType
*base;
SElemType
*top;
int
stacksize;
};
struct
SqStack1
{
int
*base;
int
*top;
int
stacksize;
};
SqStack
OPTR;
SqStack1
OPND;
char
Precede(char
c1,char
c2)
{
if(c1=='+'
||
c1=='-')
{
if(c2=='+'
||
c2=='-'
||
c2==')'
||
c2=='=')
return
'>';
else
return
'<';
}
else
if(c1=='*'
||
c1=='/')
{
if(c2=='(')
return
'<';
else
return
'>';
}
else
if(c1=='(')
{
if(c2==')')
return
'=';
else
return
'<';
}
else
if(c1==')')
return
'>';
else
if(c1=='=')
{
if(c2=='=')
return
'=';
else
return
'<';
}
else
return
'\0';
}
int
In(char
c)
{
if(c=='+'
||
c=='-'
||
c=='*'
||
c=='/'
||
c=='('
||
c==')'
||
c=='=')
return
1;
else
return
0;
}
int
Operrate(int
m,char
b,int
n)
{
switch(b)
{
case
'+':return
m+n;
case
'-':return
m-n;
case
'*':return
m*n;
case
'/':return
m/n;
}
return
0;
}
//操作數
int
InitStack1(SqStack1
&S)
{
S.base=(int
*)malloc(STACK_INIT_SIZE*sizeof(int));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push1(SqStack1
&S,int
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(int
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop1(SqStack1
&S,int
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
int
GetTop1(SqStack1
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
//算符
int
InitStack(SqStack
&S)
{
S.base=(SElemType
*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return
OK;
}
int
Push(SqStack
&S,SElemType
e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(SElemType
*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
S.top=S.base+S.stacksize;
S.stacksize=S.stacksize+STACKINCREMENT;
}
*S.top++=e;
return
OK;
}
int
Pop(SqStack
&S,SElemType
&e)
{
if(S.top==S.base)
return
ERROR;
e=*
--S.top;
return
OK;
}
Status
GetTop(SqStack
S)
{
if(S.top==S.base)
return
ERROR;
return
*(S.top-1);
}
int
Calculate()
{
char
c,theta,p;
int
a,b,i=0,ans,x;
InitStack(OPTR);
Push(OPTR,'=');
InitStack1(OPND);
c=getchar();
while(c!='='
||
GetTop(OPTR)!='=')
{
if(!In(c)
&&
c>='0'
&&
c<='9')
{
Push1(OPND,c-'0');
c=getchar();
while(c>='0'
&&
c<='9')
{
Pop1(OPND,x);
Push1(OPND,x*10+c-'0');
c=getchar();
}
}
else
if(In(c))
{
switch(Precede(GetTop(OPTR),c))
{
case
'<':
Push(OPTR,c);
c=getchar();
break;
case
'=':
Pop(OPTR,p);
c=getchar();
break;
case
'>':
Pop(OPTR,theta);
Pop1(OPND,b);
Pop1(OPND,a);
ans=Operrate(a,theta,b);
Push1(OPND,ans);
break;
}
}
else
{
c=getchar();
}
}
return
GetTop1(OPND);
}
int
main()
{
int
ans;
ans=Calculate();
printf("%d\n",ans);
return
0;
}
F. 求助:用C語言幫我寫幾個「算數」程序
第一題
#include "stdio.h"
int fn(int x);
int main()
{
int x, y;
scanf("%d", &x);
y=fn(x);
printf("%d\n", y);
return 0;
}
int fn(int x)
{
if(x<0) return -1;
else if(x==0) return 0;
else return 1;
}
第二題
#include "stdio.h"
int main()
{
char ch;
scanf("%c", &ch);
/*判斷ch是否大寫字母*/
if( ch >= 'A' && ch <= 'Z')
{
ch += 32; /*加上32轉化為小寫字母*/
printf("%c\n", ch);
}
else
{
printf("%c\n", ch);
}
return 0;
}
第三題
#include "stdio.h"
/* max函數,返回a,b,c當中最大者 */
int max(int a, int b, int c);
int main()
{
int m, a, b, c;
scanf("%d %d %d", &a, &b, &c);
m=max(a,b,c);
printf("%d\n", m);
return 0;
}
int max(int a, int b, int c)
{
int temp;
/*先判斷a,b,將a,b中較大的存進temp*/
if(a>=b)
temp = a;
else
temp = b;
/*再判斷temp和c的大小*/
if(c>temp)
temp = c;
return temp;
}
第四題
#include "stdio.h"
int main()
{
int a=3, b=4, c=5;
int x, y;
/*每個表達式都返回一個bool值,0或1,直接輸出就行了*/
printf("%d\n", a+b>c&&b==c);
printf("%d\n", a||b+c&&b-c);
printf("%d\n", !(a>b)&&!c||1);
printf("%d\n", !(x=a)&&(y=b)&&0);
printf("%d\n", !(a+b)+c-1&&b+c/2 );
return 0;
}
有什麼不懂的盡管問我,我會盡力幫助你的^_^
G. 用C語言編寫一個計算器程序,實現加,減,乘,除,求平方根(正數),倒數等功能.
#include<iostream>
#include<cmath>
#include<string>
using
namespace
std;
const
double
pi
=
3.14159265;
const
double
e
=
2.718281828459;
const
int
SIZE
=
1000;
typedef
struct
node//為了處理符號而建立的鏈表(如:
1+(-2))
{
char
data;
node
*next;
}node;
typedef
struct
stack_num//存儲
數
的棧
{
double
*top;
double
*base;
}stack_num;
typedef
struct
stack_char//存儲
運算符號
的棧
{
char
*top;
char
*base;
}stack_char;
stack_num
S_num;//定義
stack_char
S_char;//定義
char
fu[18]
=
{'\n',
')',
'+',
'-',
'*',
'/',
'%',
'^',
'Q',
'L',
'C',
'S',
'T',
'c',
's',
't',
'('};
int
compare[1000];//表現出各運算符號的優先順序
double
shu[1000];//存儲
"數"
的數組
double
dai_result;//運算的結果,是為了處理
M
運算(簡介函數里有M的定義)
int
biao
=
0;//和dia_result
一樣,為了處理
M
運算
char
line[SIZE];//輸入的所要計算的表達式
void
init()//初始化
{
compare[fu[0]]
=
-2;//用數字的大小表現出符號的優先順序
compare[fu[1]]
=
-1;
compare[fu[2]]
=
2;
compare[fu[3]]
=
2;
compare[fu[4]]
=
4;
compare[fu[5]]
=
4;
compare[fu[6]]
=
4;
compare[fu[7]]
=
5;
for(int
i
=
8;
i
<=
15;
i++)
compare[fu[i]]
=
6;
compare[fu[16]]
=
7;
S_num.base
=
(double*)malloc(sizeof(double)*SIZE);//為棧開辟空間
S_char.base
=
(char*)malloc(sizeof(char)*SIZE);//同上
S_num.top
=
S_num.base;
S_char.top
=
S_char.base;
}
void
push_num(double
n)//數字進棧
{
*
++S_num.top
=
n;
}
void
push_char(char
c)//運算符號進棧
{
*
++S_char.top
=
c;
}
double
pop_num()//數字出棧
{
double
m
=
*S_num.top;
S_num.top--;
return
m;
}
char
pop_char()//運算符號出棧
{
char
cc
=
*S_char.top;
S_char.top--;
return
cc;
}
char
get_top_char()//得到運算符號的棧中最頂端的運算符號
{
return
*S_char.top;
}
double
operate(double
y,
char
c,
double
x)//
對兩個數計算
(
含是雙目運算符
:
如
*,
/
等等
)
{
double
r;
if(c
==
'-')
r
=
x
-
y;
else
if(c
==
'+')
r
=
x
+
y;
else
if(c
==
'/'
&&
y
!=
0)
r
=
x
/
y;
else
if(c
==
'*')
r
=
x
*
y;
else
if(c
==
'^')
{
r
=
1;
for(int
i
=
1;
i
<=
y;
i++)
r
*=
x;
}
else
if(c
==
'%')
{
int
r0
=
(int)x
%
(int)y;
r
=
double(r0);
}
return
r;
}
double
operate_one(double
one,
char
cc)//
對一個數運算
(
含單目運算符
:
如
log(L),
sin(S)
等等
)
{
double
r;
if(cc
==
'Q')
r
=
sqrt(one);
else
if(cc
==
'C')
r
=
cos(one);
else
if(cc
==
'S')
r
=
sin(one);
else
if(cc
==
'T')
r
=
tan(one);
else
if(cc
==
'c')
i++;
}
i++;
}
if(ge
>=
3)
return
0;
else
return
1;
}
void
output(double
result)//
打出結果
{
printf("
所得結果是
:
");
cout<<result<<endl;
}
void
check()//
檢查表達式是否合法
{
void
introce();
char
cc;//
決定計算器按哪種功能進行計算
double
result;//
結果
void
input();//
定義
if(
check_kuohao()
&&
check_char()
)//
看是否合法
,
合法則計算
{
result
=
compute();
output(result);
cout<<"
輸入一個字元
'M'
或
'D'
或
'F',
決定是否繼續
:
"<<endl;
while(cin>>cc)
{
if(cc
==
'M')
{
system("cls");
introce();
printf("
您上次所得結果為
:
");
cout<<result<<endl;
cout<<"
在上次計算結果的基礎上
,
請繼續輸入想計算的表達式
"<<endl;
dai_result
=
result;
biao
=
1;
input();//
輸入表達式
break;
}
else
if(cc
==
'D')
{
system("cls");
introce();
cout<<"
計算器已清零
,
請輸入您所要計算的表達式
"<<endl;
input();//
輸入表達式
break;
}
else
if(cc
==
'F')
{
system("cls");
cout<<"
計算器關閉
,
謝謝使用
!"<<endl;
break;
}
else
{
cout<<"
所輸入字元無效
,
請輸入一個字元
'M'
或
'D'
或
'F'!"<<endl;
continue;
}
}
}
else//
不合法,分兩種不合法
{
if(check_kuohao()
==
0
&&
check_char()
==
1)
{
cout<<"
您所輸入的表達式括弧不匹配
,
請重新輸入
:"<<endl;
input();//
輸入表達式
}
else
{
cout<<"
您所輸入的表達式不合法
,
請重新輸入
:"<<endl;
input();//
輸入表達式
}
}
}
void
tackle_fuhao()//
處理負號
{
node
*root,
*head,
*p,
*q,
*p1;
root
=
head
=
new
node;
head->next
=
NULL;
int
i;
for(i
=
0;
line[i]
!=
'\0';
i++)//
建立鏈表
{
p
=
new
node;
p->data
=
line[i];
p->next
=
head->next;
head->next
=
p;
head
=
p;
}
//
delete
p;
q
=
(node*)malloc(sizeof(node));
head
=
root;
if(root->next->data
==
'+'
||
root->next->data
==
'-')//
處理第一個字元
{
p
=
new
node;
p->data
=
'0';
p->next
=
head->next;
head->next
=
p;
}
if(root->next
!=
NULL)
{
for(q
=
root->next;
q;
q
=
q->next)
{
if(q->data
==
'('
&&
(q->next->data
==
'-'
||
q->next->data
==
'+'))
{
p
=
new
node;
p->data
=
'0';
p->next
=
q->next;
q->next
=
p;
}
}
}
//
delete
q;
p1
=
new
node;
int
qi
=
-1;
for(p1
=
root->next;
p1;
p1
=
p1->next)
{
line[++qi]
=
p1->data;
}
line[++qi]
=
'\0';
}
void
input()//
輸入
{
cin>>line;
if(biao
==
0)
tackle_fuhao();//
處理負號
check();//
檢查表達式是否合法
}
void
introce()//
對計算器的符號功能的簡要介紹
{
cout<<"
計算器簡要介紹
"<<endl;
cout<<"C(cos)
S(sin)
T(tan)
a(arccos)
c(arcsin)
"<<endl;
cout<<"7
8
9
/
on
t(arctan)
"<<endl;
cout<<"4
5
6
*
%
L(log)"<<endl;
cout<<"1
2
3
-
M(M+)
Q(sqrt)
"<<endl;
cout<<"0
.
+
^(
乘方
)
F(off)
Enter(=)
"<<endl;
cout<<"
對於對數輸入
L2_5
表示以
2
為底
5
的對數
"<<endl;
cout<<"M(
在前面結果的基礎上繼續計算,
如:
上次結果為
10
,
現輸入
+10.5*2)"<<endl;
cout<<"D(
清零並繼續輸入
)"<<endl;
cout<<"F(
計算機關閉
)"<<endl;
cout<<"
輸入
P
就代表輸入圓周率
,
輸入
E
代表輸入自然對數
"<<endl<<endl;
}
void
print()
{
system("color
2");
cout<<"
歡迎使用本計算器
"<<endl;
cout<<"
輸入一個字元串
on,
計算器開始啟動
"<<endl;
}
void
if_start()//
是否啟動計算器
{
string
start;
print();
while(cin>>start)
{
if(start
!=
"on")
{
cout<<"
您所輸入的字元無效
,
請按照介紹的繼續輸入
:"<<endl;
continue;
}
else
break;
}
if(start
==
"on")
{
system("color
5");//
顏色的處理
system("cls");//
刷屏
}
introce();//
對計算器的簡要介紹
cout<<"
現在
,
請輸入您所要計算的表達式
"<<endl;
input();//
輸入所要計算的表達式
}
int
main()
{
if_start();//
調用是否啟動計算器函數
return
0;
}
r
=
acos(one);
else
if(cc
==
's')
r
=
asin(one);
else
if(cc
==
't')
r
=
atan(one);
H. 關於C語言編輯算數的程序
你先分析
你這個程序都需要完成什麼
完成的順序誰先誰後。
然後每個功能都用一個函數來完成
比如
借書
還書
等等
最後完善每個函數之間的關系
比如
誰調用誰
形參的傳遞
請採納
I. C語言兩個整型數的算術運算
第1空填 scanf("%d",&a);
第2空填 scanf("%d",&b);
第3空填 a+b;
第4空填 a-b;
第5空填 a*b;
第6空填 a/b;
第7空填 a%b;
第8空填 printf("差=%d ",sub);
第9空填 printf("積=%d ",mul);
第10空填 printf("商=%d ",div);
第11空填 printf("余數=%d ",oct);
完整的C語言程序如下
#include<stdio.h>
int main(void)
{
int a,b;//a和b是輸入的兩個整型值
int add,sub,mul,div,oct;//分別存放和,差,積,商,余數
scanf("%d",&a);//輸入a
scanf("%d",&b);//輸入b
add=a+b;//和
sub=a-b;//差
mul=a*b;//積
div=a/b;//商
oct=a%b;//余數
printf("和=%d ",add);//輸出和
printf("差=%d ",sub);//輸出差
printf("積=%d ",mul);//輸出積
printf("商=%d ",div);//輸出商
printf("余數=%d ",oct);//輸出余數
return 0;
}
J. C語言,編寫一個算術四則運算的程序
主要是你的scanf輸入有問題,你可以列印一下輸入的x,y值看是否正確, 將scanf("%f,%f,%c",&x,&y,&z);改成scanf("%lf,%lf,%c",&x,&y,&z);double類型應該為lf%