作者主頁:paper jie的博客_CSDN博客-C語言,算法詳解領(lǐng)域博主
本文作者:大家好,我是paper jie,感謝你閱讀本文,歡迎一建三連哦。
本文錄入于《C語言》專欄,本專欄是針對于大學(xué)生,編程小白精心打造的。筆者用重金(時間和精力)打造,將C語言基礎(chǔ)知識一網(wǎng)打盡,希望可以幫到讀者們哦。
其他專欄:《系統(tǒng)解析C語言》《算法詳解》《C語言-語法篇》
內(nèi)容分享:本期將用C語言實現(xiàn)一個簡單的計算器,各位看官姥爺快搬好小板凳坐好叭。
? ? -------- 不要998,不要98,只要一鍵三連,三連買不了吃虧,買不了上當(dāng)
目錄
??前言
??實現(xiàn)思想
??具體代碼
?????代碼一
??代碼二
??前言
計算器大家在生活學(xué)習(xí)中都接觸過,是對于我們運算速度提升的一種很方便的工具。今天,我們就用C語言代碼來實現(xiàn)一個簡單計算器的功能。在這個過程中,我們會用到循環(huán),函數(shù),指針等一些知識,代碼很簡單,易理解,大家不用擔(dān)心,可以很好的理解的。
??實現(xiàn)思想
需要設(shè)置一個菜單,提示如何操作
我們要可以多次計算,且可以退出計算程序。
我們要用函數(shù)將我們需要實現(xiàn)的功能封裝起來。
我們要接收函數(shù)計算的結(jié)果,顯示出來。
??具體代碼
?????代碼一
int add(int x, int y)
{
return x + y;
}
//減法
int sub(int x, int y)
{
return x - y;
}
//乘法
int mull(int x, int y)
{
return x * y;
}
//除法
int div(int x, int y)
{
return x / y;
}
//菜單
void menu()
{
printf("*****************************\n");
printf("*****************************\n");
printf("*****1:add 2:sub*******\n");
printf("*****3:mull 4:div********\n");
printf("*****************************\n");
printf("*****************************\n");
}
int main()
{
int input = 0;
int x = 0;
int y = 0;
menu();
//多次使用 當(dāng)input==0時,停止
do
{
printf("請選擇:>");
scanf("%d", &input);
//根據(jù)input的值來選擇要計算的方法
switch (input)
{
case 0:
printf("退出程序\n");
break;
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", sub(x, y));
break;
case 3:
printf("請輸入:\n");
scanf("%d %d", &x, &y);
printf("%d\n", mull(x, y));
break;
case 4:
printf("請輸入:\n");
scanf("%d %d", &x, &y);
printf("%d\n", div(x, y));
break;
//其他數(shù)都錯誤
default:
printf("輸入錯誤,請重新選擇\n");
break;
}
} while (input);
return 0;
}
到這就實現(xiàn)了計算器的功能,但是我們發(fā)現(xiàn)這里面的代碼有些地方非常的冗余,出現(xiàn)的多組重復(fù)的代碼,我們一旦要加功能進(jìn)去,重復(fù)的代碼就會更加多。文章來源:http://www.zghlxwxcb.cn/news/detail-482846.html
??代碼二
int add(int x, int y)
{
return x + y;
}
//減法
int sub(int x, int y)
{
return x - y;
}
//乘法
int mull(int x, int y)
{
return x * y;
}
//除法
int div(int x, int y)
{
return x / y;
}
//菜單
void menu()
{
printf("*****************************\n");
printf("*****************************\n");
printf("*****1:add 2:sub*******\n");
printf("*****3:mull 4:div********\n");
printf("*****************************\n");
printf("*****************************\n");
}
int main()
{
int input = 1;
int x = 0;
int y = 0;
int ret = 0;
menu();
//函數(shù)指針數(shù)組
//將函數(shù)的地址都作為一個指針放到arr數(shù)組中了
//這就是一個轉(zhuǎn)移表
int (*arr[5])(int, int) = { NULL, add, sub, mull, div };
//input為0退出 其他繼續(xù)
while (input)
{
printf("請選擇:>");
scanf("%d", &input);
if (input <= 4 && input >= 1)
{
printf("請輸入:");
scanf("%d %d", &x, &y);
//通過函數(shù)指針解引用找到函數(shù)求值賦給ret
ret = (*arr[input])(x, y);
printf("%d\n", ret);
}
else if (input == 0)
printf("退出程序\n");
else
printf("輸入錯誤,請重新輸入\n");
}
return 0;
}
現(xiàn)在的代碼就已經(jīng)很簡潔了,再想加功能,直接將加進(jìn)來的函數(shù)指針放到arr數(shù)組中,代碼也不會變得冗余,且容易增加。這里我們就是運用了函數(shù)指針數(shù)組的作用,做了一個轉(zhuǎn)移表,將函數(shù)指針放到arr數(shù)組中,通過數(shù)組來找到函數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-482846.html
到了這里,關(guān)于用代碼實現(xiàn)一個簡單計算器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!