❶ c語言編寫簡易計算器程序
C語言編寫計算器
我們可以用printf和scanf函數輸出結果和獲取用戶的輸入。需要<stdio.h>頭文件。scanf函數在讀取數據的時候不需要再一行上輸入每個數據,只要數據和數據之間留出空白就可以了。先聲明兩個變數number1和number2,operation變數用來存儲運算符。用scanf函數獲取這兩個數字和運算符。分別用%lf %c %lf
❷ 如何用c語言寫計算器程序
計算器要求如下:1)
設計一面向對象的類,含有加、減、乘、除運算及開平方等功能的函數。
2)
設計加、減、乘、除運算及求平方根的函數。
3)
設計實現四則混合運算的函數。
4)
設計測試函數。
要求是
完善計算器程序,改為可對實數操作。
完善程序,改為多個操作數基本四則運算,遇到0為止。
增加函數,完成四則混合運算,增加相應的主菜單選項。
添加語句,使四則運算具有測試功能。
可擴充其功能。
❸ 簡單的用c語言寫一個計算器程序,加減乘除能用就好
#include"stdio.h"
void
main()
{
float
a,b,c;
char
e;
printf("input
a,e,b\n");/*輸入兩個數和符號,例如3+8*/
scanf("%f%c%f",&a,&e,&b);
switch(e)
{
case
'+':c=a+b;break;
case
'-':c=a-b;break;
case
'*':c=a*b;break;
case
'/':
if(b==0.0)
printf("error\n");
else
c=a/b;break;
}
printf("%f%c%f=%f",a,e,b,c);
}
❹ 用C語言寫一段,可以計算任意兩個輸入數的和的程序
C語言任意兩個數字的求和程序設計如下:
#include <stdlib.h>
intmain()
{
inta,b,sum;
printf("請輸入兩個整數:");
scanf("%d %d",&a,&b);
sum=a+b;
printf("這兩個數的和是:%d ",sum);
printf("計算完成,謝謝使用!");
return0;
}
C語言指定兩個數字的求和程序設計如下:
#include<stdio.h>
main()
{
inta,b,sum;
a=123;
b=789;
sum=a+b;
printf("sumis%d ",sum);
}
(4)用c語言寫一個程序計算擴展閱讀:
完整的c程序的基本構成:
數據類型、常量與變數、數組、指針、字元串、文件輸入/輸出、運算、關鍵字、流程式控制制關鍵字、跳轉結構、分支結構、語法結構、順序結構、選擇結構、循環結構。
c語言的運算符號:
比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補 0)位移。例如,將 11100011 右移 3 比特,算術右移後成為 11111100,邏輯右移則為 00011100。因算術比特右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術比特右移。
運算符的優先順序從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。
❺ C語言 要求編寫一個簡單計算器的程序
#include<stdio.h>
voidmain(){floatx,y,z;charc;
scanf("%f%c%f",&x,&c,&y);
switch(c){
case'+':z=x+y;break;
case'-':z=x-y;break;
case'*':z=x*y;break;
case'/':z=(y==0)?(0):(x/y);break;
default:z=0;break;
}
printf("%f%c%f=%f ",x,c,y,z);
}
❻ 用C語言編寫一道程序計算100以內偶數的和
100以內的偶數和結果當包括100時則為2550,不包括100時,100以內的偶數和為2450。
#include<stdio.h>
int main(){
int sum=0;
int i=0;
for (i=0;i<=100;i+=2){
sum+=i;
}
printf("100以內的偶數的和:%d ",sum);
return 0;
}
(6)用c語言寫一個程序計算擴展閱讀:
for(表達式1;表達式2;表達式3)循環體語句 。(其中;不能省略)
三種語句比較
同一個問題,往往既可以用 while語句解決,也可以用 do-while或者for語句來解決,但在實際應用中,應根據具體情況來選用不同的循環語句。選用的一般原則是:
1、如果循環次數在執行循環體之前就已確定,一般用 for語句。如果循環次數是由循環體的執行情況確定的,一般用 while語句或者do- while語句。
2、當循環體至少執行一次時,用 do-while語句可以作為首選,反之,如果循環體可能一次也不執行,則選用while語句。
C++/C循環語句中,for語句使用頻率最高,while語句其次,do語句很少用。
3、三種循環語句for、while、do-while可以互相嵌套自由組合。但要注意的是,各循環必須完整,相互之間絕不允許交叉。
參考資料來源:網路-C語言的循環語句
❼ 用C語言編寫一個計算器程序
#include<stdio.h>
#include<windows.h>
#include<math.h>
#define p 3.1415926
#define r p/180 //r=p/180,p=3.14....,p/180是求的1弧度,下面sin(裡面要求的是弧度),sin(30弧度)=0.5。 void main()
{
float i,j,k;
int l,m,n,a[10];
char cmd;
LOOP:
system("cls");
printf("***********************\n");
printf("*******小寒計算器******\n");
printf("***********************\n");
printf("\n\n本計算器提供+、-、*、/四種運算。\n");
printf("p-代表圓周率pai。\n");
printf("a-代表十進制轉換為二進制。\n");
printf("b-代表十進制轉換為八進制。\n");
printf("c-代表十進制轉換為十六進制。\n");
printf("d-代表該數值開方。\n");
printf("e-代表該數值開立方。\n");
printf("f-代表求幾次方。\n");
printf("S-代表sin。\n");
printf("C-代表cos。\n");
printf("T-代表tan。\n");
printf("\n\n請輸入要計算的數字和運算符號,輸入「#」時,結束;輸入「!」時復位。\n");
scanf("%f",&k);
while((cmd=getchar())!='#')
{
if(i!=0)
switch(cmd)
{
case '+': scanf("%f",&i);
k=k+i;
printf("=%5.2f",k);
break; case '-': scanf("%f",&i);
k=k-i;
printf("=%5.2f",k);
break; case '*': scanf("%f",&i);
k=k*i;
printf("=%5.2f",k);
break; case '/': scanf("%f",&i);
k=k/i;
printf("=%5.2f",k);
break;
case 'p': k=k*p;
printf("%6.4f",k);
break; case 'f': printf("請輸入要求該數字的幾次方:");
scanf("%d",&n);
i=k;
for(m=0;m<n-1;m++)
k=k*i;
printf("%5.2f",k);
break; case 'a': printf("轉換成二進制\n");
m=0;
while((int)k>0)
{
l=k;
k=k/2;
l=l%2;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
break; case 'b': printf("轉換成八進制\n");
m=0;
while((int)k>0)
{
l=k;
k=k/8;
l=l%8;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
break;
case 'c': printf("轉換成十六進制\n");
m=0;
while((int)k>0)
{
l=k;
k=k/16;
l=l%16;
a[m]=l;
m++;
}
for(n=m-1;n>=0;n--)
{
if(a[n]==10)
{ printf("A");continue;}
else if(a[n]==11)
{ printf("B");continue;}
else if(a[n]==12)
{ printf("C");continue;}
else if(a[n]==13)
{ printf("D");continue;}
else if(a[n]==14)
{ printf("E");continue;}
else if(a[n]==15)
{ printf("F");continue;} printf("%d",a[n]);
}
break;
case 'e': printf("該數值開立方得\n");
i=pow(k,1.0/3);
printf("%5.2f",i );
break;
case 'd': printf("該數值開方得\n");
i=k/2;
j=sqrt(k);
printf("%5.2f",j);
break; case 'S': k=k*r;
i=sin(k);
printf("%5.2f",i);
break;
case 'C': k=k*r;
i=cos(k);
printf("%5.2f",i);
break; case 'T': k=k*r;
i=tan(k);
printf("%5.2f",i);
break; case '!': goto LOOP;
}
}
}
❽ 用C語言編寫一個完整的程序,完成以下計算:
/*工資計算程序*/
#include
main()
{
float
originwage;
/*應發工資*/
float
realwage;
/*實發工資*/
float
tax;
/*所繳稅款*/
int
i,hour,amount,money;
printf("請選擇工資種類:\n1.計時工資\n2.計件工資\n3.固定月工資\n");
scanf("%d",&i);
switch(i)
{
case
1:{
printf("請輸入工作時間(單位:小時)\n");
scanf("%d",&hour);
printf("請輸入單位時間的薪水(單位:元)\n");
scanf("%f",&money);
originwage=money*hour;
}
break;
case
2:{
printf("請輸入生產產品數量(單位:件)\n");
scanf("%d",&amount);
printf("請輸入生產一件產品的薪水(單位:元)\n");
scanf("%f",&money);
originwage=money*amount;
}
break;
case
3:
printf("請輸入你的固定工資\n");
scanf("%f",&originwage);
break;
default:printf("輸入錯誤!\n");
return
0;
}
if(originwage<0)
{
printf("數據錯誤!\n");
return
0;
}
if(originwage<2000)
tax=0;
else
if(originwage>2000&&originwage<=2500)
tax=(originwage-2000)*0.05;
else
if(originwage>2500&&originwage<=4000)
tax=(originwage-2500)*0.1+500*0.05;
else
tax=(originwage-4000)*0.15+1500*0.1+500*0.05;
printf("應發工資:
%f\n",originwage);
printf("所繳稅款:
%f\n",tax);
printf("實發工資:
%f\n",originwage-tax);
return
0;
}
❾ 用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;
}
運行結果:
(9)用c語言寫一個程序計算擴展閱讀:
return表示把程序流程從被調函數轉向主調函數並把表達式的值帶回主調函數,實現函數值的返回,返回時可附帶一個返回值,由return後面的參數指定。
return通常是必要的,因為函數調用的時候計算結果通常是通過返回值帶出的。如果函數執行不需要返回計算結果,也經常需要返回一個狀態碼來表示函數執行的順利與否(-1和0就是最常用的狀態碼),主調函數可以通過返回值判斷被調函數的執行情況。
❿ 用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);