自己做一個計算器
阿新 • • 發佈:2020-03-20
#第零版
```
#include
int main()
{
double tot,i,j;
char ch;
printf("請輸入第一個數:") ;
scanf("%f",&i);
printf("請輸入運算子;");
scanf("%c",&ch);
printf("請輸入第二個數:") ;
scanf("%f",&j);
if(ch=='+') {
tot=i+j;
}else if(ch=='-'){
tot=i-j;
}else if(ch=='*'){
tot=i*j;
}else if(ch=='/'){
tot=i/j;
}
printf("%f",tot);
return 0;
}
```
#第一版
```
#include
int main()
{
int sum,j;
printf("請輸入第1個數:") ;
scanf("%d",&sum);
char ch;
int t;
for(t=2;getchar()!='=';t++){
printf("請輸入運算子以及第%d個數:",t);
ch=getchar();
scanf("%d",&j);
switch(ch){
case'+':sum+=j;break;
case'-':sum-=j;break;
case'*':sum*=j;break;
case'/':sum/=j;break;
}
printf("%d\n",sum);
}
printf("%d",sum);
return 0;
}
```
#第二版
2020.3.20 14:36更新第二版(加入了選單,優化了介面,但是選項只可用兩個)
```
#include
#include //用於getch()讀取使用者輸入的按鍵
#include//用於清理螢幕
int main()
{
//多次運算多組資料
do{
//選單
printf("---------------------選單--------------------\n") ;
printf("↑:加減乘除 \n") ;
printf("Esc:退出 \n") ;
printf("Home:設定 \n") ;
printf("---------------------------------------------\n") ;
//判斷使用者輸入選項
char userput;
userput=getch();//第一次調取 ,之後的if是第二次調取,實際值
//加減乘除運算
if(userput==72)
{
printf("---------------------------------------------\n");
printf("| 加減乘除模式 |\n");
printf("---------------------------------------------\n");
int sum,j;
printf("請輸入第1個數:") ;
scanf("%d",&sum);
char ch;
int t;
//多次輸入計算單組資料
for(t=2;getchar()!='=';t++){//t的作用是為下面提示輸入第幾個數
//獲取使用者輸入的運算子以及第幾個數
printf("請輸入運算子及第%d個數(如:+8,如果結束運算請輸入==):",t);
ch=getchar();
scanf("%d",&j);
//判斷運算子,做出對應運算
switch(ch){
case'+':sum+=j;break;
case'-':sum-=j;break;
case'*':sum*=j;break;
case'/':sum/=j;break;
}
printf("本次計算結果=%d\n",sum);
}
//printf("最終結果=%d",sum);
}
//退出程式
else if(userput==27)
{
printf("---------------------------------------------\n");
printf("| 退出程式 |\n");
printf("---------------------------------------------\n");
break;
}
//為了讓佈局美觀,每次算完之後清空螢幕 ,用到了標頭檔案#include
system("cls") ;
}while(1);
return 0;
}
```
#第三版
```
#include
#include //用於getch()讀取使用者輸入的按鍵
#include//用於清理螢幕
int main()
{
int set;//用於設定選項卡,放在外面的原因是讓每一次迴圈都可以用到,而不改變set的值,以免影響下一次迴圈
int point=2;//用於設定選項卡,對於輸出的數保留n位小數 ,預設保留兩位小數
//多次運算多組資料
do{
//選單
printf("---------------------選單--------------------\n") ;
printf("↑:加減乘除 \n") ;
printf("Esc:退出 \n") ;
printf("Home:設定 \n") ;
printf("---------------------------------------------\n") ;
//判斷使用者輸入選項
char userput;
userput=getch();//第一次調取 ,之後的if是第二次調取,實際值
//加減乘除運算
if(userput==72)//72表示使用者輸入上箭頭
{
printf("---------------------------------------------\n");
printf("| 加減乘除模式 |\n");
printf("---------------------------------------------\n");
double sum,j;
printf("請輸入第1個數:") ;
scanf("%lf",&sum);
char ch;
int t;
//多次輸入計算單組資料
for(t=2;getchar()!='=';t++){//t的作用是為下面提示輸入第幾個數
//獲取使用者輸入的運算子以及第幾個數
printf("請輸入運算子及第%d個數(如:+8,以==退出):",t);
ch=getchar();
scanf("%lf",&j);
//判斷運算子,做出對應運算
switch(ch){
case'+':sum+=j;break;
case'-':sum-=j;break;
case'*':sum*=j;break;
case'/':sum/=j;break;
}
printf("本次計算結果=%.*lf\n",point,sum);
}
}
//退出程式
else if(userput==27)
{
printf("---------------------------------------------\n");
printf("| 退出程式 |\n");
printf("---------------------------------------------\n");
break;
}
//設定選項卡
//判斷區
else if(userput==71)
{
printf("---------------------------------------------\n");
printf("| 設定 |\n");
printf("|1.重新整理螢幕 |\n");
printf("|2.保留小數 |\n");
printf("---------------------------------------------\n");
int setin;
char setchoose;
printf("請輸入數字以進入選項:") ;
scanf("%d",&setin);
//1.重新整理螢幕
if(setin==1)
{
printf("是否關閉重新整理螢幕[y/n]:");
scanf("%c",&setchoose);
if(setchoose=='y'){
set=1;
} else{
set=0;
}
}
//2.保留小數
if(setin==2)
{
printf("你希望保留幾位小數?:");
scanf("%d",&point);//這裡不需要經過執行區
}
}
//執行區
if(set==1)//選擇的是弄yes
{
}
else//選擇的是no
{
//為了讓佈局美觀,每次算完之後清空螢幕 ,用到了標頭檔案#include
system("cls") ;
}
}while(1);
return 0;
}
```
#第四版
2020.3.20 20:04
更新第三版:優化了加減乘除(可以進行小數運算,多虧了%lf);
加入了十進位制轉換其他進位制模式;
加入了設定,可以選擇是否關閉“重新整理螢幕”;可以選擇保留幾位小數
進位制轉換.png
```
#include
#include //用於getch()讀取使用者輸入的按鍵
#include//用於清理螢幕
int main()
{
int set;//用於設定選項卡,放在外面的原因是讓每一次迴圈都可以用到,而不改變set的值,以免影響下一次迴圈
int point=2;//用於設定選項卡,對於輸出的數保留n位小數 ,預設保留兩位小數
double i,j,k,sum,num,left;//參與計算:加減乘除,進位制轉換
int ip,jp,kp,sump,nump,leftp;//參與計算:加減乘除,進位制轉換
//多次運算多組資料
do{
//選單
printf("---------------------選單--------------------\n") ;
printf("↑:加減乘除 \n") ;
printf("↓:進位制轉換 \n") ;
printf("Esc:退出 \n") ;
printf("Home:設定 \n") ;
printf("---------------------------------------------\n") ;
//判斷使用者輸入選項
char userput;
userput=getch();//第一次調取 ,之後的if是第二次調取,實際值
//加減乘除運算
if(userput==72)//72表示使用者輸入上箭頭
{
printf("---------------------------------------------\n");
printf("| 加減乘除模式 |\n");
printf("---------------------------------------------\n");
double sum;
printf("請輸入第1個數:") ;
scanf("%lf",&sum);
char ch;
int t;
//多次輸入計算單組資料
for(t=2;getchar()!='=';t++){//t的作用是為下面提示輸入第幾個數
//獲取使用者輸入的運算子以及第幾個數
printf("請輸入運算子及第%d個數(如:+8,以==退出):",t);
ch=getchar();
scanf("%lf",&j);
//判斷運算子,做出對應運算
switch(ch){
case'+':sum+=j;break;
case'-':sum-=j;break;
case'*':sum*=j;break;
case'/':sum/=j;break;
}
printf("%lf%c%lf=%.*lf\n",sum,ch,j,point,sum);
}
}
//進位制轉換
else if(userput==80)
{
printf("---------------------------------------------\n");
printf("| 進位制轉換模式 |\n");
printf("---------------------------------------------\n");
do{
printf("請輸入你要轉換的十進位制整數:");
scanf("%d",&ip);
printf("你想轉換成___進位制:");
scanf("%d",&jp);
//處理資料
kp=ip;//暫存IP的數值,下面要對他分解
sump=0;//初始總和=0
for(nump=1;ip>0;nump*=10) {
leftp=ip%jp;//取餘
ip/=jp;//取整
sump+=nump*leftp;//倒序相加
}
ip=kp;//IP換回原來值
printf("%d的%d進位制數是%d\n",ip,jp,sump);
printf("按下任意鍵繼續(Esc退出)\n");//借用退出程式的功能
userput=getch();
}while(userput!=27);
}
//退出程式
else if(userput==27)
{
printf("---------------------------------------------\n");
printf("| 退出程式 |\n");
printf("---------------------------------------------\n");
break;
}
//設定選項卡
//判斷區
else if(userput==71)
{
printf("---------------------------------------------\n");
printf("| 設定 |\n");
printf("|1.重新整理螢幕 |\n");
printf("|2.保留小數 |\n");
printf("---------------------------------------------\n");
int setin;
char setchoose;
printf("請輸入數字以進入選項:") ;
scanf("%d",&setin);
//1.重新整理螢幕
if(setin==1)
{
printf("是否關閉重新整理螢幕[y/n]:");
scanf(" %c",&setchoose);//考慮到scanf的讀取,上一個scanf結尾是\n,在進行這個scanf的時候把\n算在%c裡面,一定要加一個空格
if(setchoose=='y'){
set=1;
} else{
set=0;
}
}
//2.保留小數
else if(setin==2)
{
printf("你希望保留幾位小數?:");
scanf("%d",&point);//這裡不需要經過執行區
}
}
//執行區
if(set==1)//選擇的是弄yes
{
printf("修改成功\n");
}
else//選擇的是no
{
//為了讓佈局美觀,每次算完之後清空螢幕 ,用到了標頭檔案#include
system("cls") ;
}
}while(1);
return 0