日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言實現計算器的兩種方法_C 語言

作者:豬飼夫婦、 ? 更新時間: 2022-04-09 編程語言

本文實例為大家分享了C語言實現計算器的具體代碼,供大家參考,具體內容如下

C語言計算器兩種方法

//一般做法
#include<stdio.h>
#include<windows.h>
//#include<assert.h>
void menu()
{
?? ?printf("**************************\n");
?? ?printf("****歡迎來到計算器頁面****\n");
?? ?printf("**** 1.add ? ?2.mul ?*****\n");
?? ?printf("*****3.sub ? ?4.div1 *****\n");
?? ?printf("*****0.exit ? ? ? ? ?*****\n");
?? ?printf("**************************\n");
}

int add(int x, int y)
{
?? ?return x + y;
}

int mul(int x, int y)
{
?? ?return x * y;
}

int sub(int x, int y)
{
?? ?return x - y;
}

int div1(int x, int y)
{
?? ?return x / y;
}



int main()
{
?? ?int n = 1;
?? ?menu();
?? ?while (n)
?? ?{
?? ??? ?printf("請輸入選項:\n");
?? ??? ?scanf("%d", &n);
?? ??? ?int x = 0, y = 0;
?? ??? ?/*printf("請輸入兩個整數!\n");
?? ??? ?scanf("%d%d", &x, &y);*/ ? ?
? ? ? ? //若將兩個數字輸入放在此處會出現輸入錯誤時不能退出系統,而是顯示“輸入兩個整數”的提示
?? ??? ?switch (n)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?printf("請輸入兩個整數!\n");
?? ??? ??? ?scanf("%d%d", &x, &y);
?? ??? ??? ?printf("%d\n", add(x, y));
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?printf("請輸入兩個整數!\n");
?? ??? ??? ?scanf("%d%d", &x, &y);
?? ??? ??? ?printf("%d\n", mul(x, y));
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?printf("請輸入兩個整數!\n");
?? ??? ??? ?scanf("%d%d", &x, &y);
?? ??? ??? ?printf("%d\n", sub(x, y));
?? ??? ??? ?break;
?? ??? ?case 4:
?? ??? ??? ?printf("請輸入兩個整數!\n");
?? ??? ??? ?scanf("%d%d", &x, &y);
?? ??? ??? ?printf("%d\n", div1(x, y));
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出計算器!\n");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("輸入錯誤,請重新輸入!\n");
?? ??? ?}
?? ?}
}

//使用函數指針數組解決計算器問題

#include<stdio.h>
#include<windows.h>
//#include<assert.h>

void menu()
{
?? ?printf("**************************\n");
?? ?printf("****歡迎來到計算器頁面****\n");
?? ?printf("**** 1.add ? ?2.mul ?*****\n");
?? ?printf("*****3.sub ? ?4.div1 *****\n");
?? ?printf("*****0.exit ? ? ? ? ?*****\n");
?? ?printf("**************************\n");
}

int add(int x, int y)
{
?? ?return x + y;
}

int mul(int x, int y)
{
?? ?return x * y;
}

int sub(int x, int y)
{
?? ?return x - y;
}

int div1(int x, int y)
{
?? ?return x / y;
}

int main()
{
?? ?int n = 1;
?? ?menu();
?? ?while (n)
?? ?{
?? ??? ?printf("請輸入選項:\n");
?? ??? ?scanf("%d", &n);
?? ??? ?int(*arr[5])() = { 0,add,mul,sub,div1 };//轉移表
? ? ? ? //定義一個函數指針數組,存放函數地址
?? ??? ?if (n >= 0 && n < 5)
?? ??? ?{
?? ??? ??? ?int x = 0, y = 0;
?? ??? ??? ?printf("請輸入兩個整數:>\n");
?? ??? ??? ?scanf("%d%d", &x, &y);
?? ??? ??? ?printf("%d\n", (*arr[n])(x,y));//輸出結果
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?printf("輸入有誤,請重新輸入!\n");
?? ??? ??? ?scanf("%d", &n);
?? ??? ?}
?? ?}
?? ?system("pause");
?? ?return 0;
}

兩種方法相比,第一種相似代碼較多,比較冗余;第二種代碼簡潔直觀,程序效率高。

原文鏈接:https://blog.csdn.net/weixin_42617262/article/details/84349753

欄目分類
最近更新