當前位置:編程學習大全網 - 編程語言 - 用c語言程序設計壹個簡單計算器,求其源代碼

用c語言程序設計壹個簡單計算器,求其源代碼

/*

2013年12月23日 12:43:46

目的:計算器的實現

*/

# include <stdio.h>

# include <ctype.h>

# include <math.h>

char get_choice(void); //獲取用戶輸入的選項,並建立目

char get_first(void); //獲取用戶輸入的選項,並剔除錯誤輸入

float get_int(void); //獲取用戶輸入的計算值

float add(void); //定義加法函數

float subtraction(void); //定義減法函數

float multiplication(void); //定義乘法函數

float division(void); //定義除法函數

float extract(void); //定義開方函數

float square(void); //定義平方函數

float cube(void); //定義立方函數

int count = 0;

int main(void)

{

char choice;

printf("***歡迎使用由小錢制作的計算器***\n");

choice = get_choice();

while(choice != 'q')

{

switch(choice)

{

case 'a':

add(); break;

case 'b':

subtraction(); break;

case 'c':

multiplication(); break;

case 'd':

division(); break;

case 'e':

extract(); break;

case 'f':

square(); break;

case 'g':

cube(); break;

default :

printf("您輸入有誤,請重新輸入:"); break;

}

fflush(stdin);

choice = get_choice();

}

printf("bye");

return 0;

}

//獲取用戶輸入的選項,並建立目錄

char get_choice(void)

{

char ch;

int a = 0;

//建立目錄

printf("\n--------------------------------\n");

printf("a. 加法\t\t\tb. 減法\nc. 乘法\t\t\td. 除法\n");

printf("e. 開方\t\t\tf. 平方\ng. 立方\t\t\tq. 退出\n");

printf("--------------------------------\n");

printf("請輸入妳的選項:");

ch = get_first();

while(ch == ' ' || ch == '\n' || ch == '\t')

ch = get_first();

//判斷用戶輸入的選項是否有誤

while((ch<'a' || ch>'g') && ch !='q')

{

putchar(ch);

printf(" 妳輸入的選項有誤,請重新輸入:");

ch = get_first();

}

return ch;

}

//獲取用戶輸入的選項,並剔除錯誤輸入

char get_first(void)

{

char ch;

ch = getchar();

//剔除由用戶輸入選項時產生的換行符

while(ch == '\n')

{

ch = getchar();

}

return ch;

}

//獲取用戶輸入的計算值

float get_int(void)

{

float input;

char ch;

int a;

if(count == 0)

printf("親!請輸入數值:");

if(count == 1)

printf("親!請輸入第壹個數值:");

if(count == 2)

printf("親!請輸入第二個數值:");

a = scanf("%f", &input);

//判斷用戶的輸入是否為壹個數值

while(a != 1)

{

//剔除用戶輸入錯誤的字符

while((ch = getchar()) != '\n')

{

putchar(ch);

printf(" 不是壹個數值,請輸入例如3、111.2、或者-1");

a = scanf("%f", &input);

}

}

return input;

}

//定義加法函數

float add(void)

{

float i, j, sum;

count = 0;

count = count+1;

i = get_int();

count = count+1;

j = get_int();

sum = i + j;

printf("%.2f + %.2f = %.2f\n", i, j, sum);

return sum;

}

//定義減法函數

float subtraction(void)

{

float i, j, sum;

count = 0;

count = count+1;

i = get_int();

count = count+1;

j = get_int();

sum = i - j;

printf("%.2f - %.2f = %.2f\n", i, j, sum);

return sum;

}

//定義乘法函數

float multiplication(void)

{

float i, j, sum;

count = 0;

count = count+1;

i = get_int();

count = count+1;

j = get_int();

sum = i * j;

printf("%.2f * %.2f = %.2f\n", i, j, sum);

return sum;

}

//定義除法函數

float division(void)

{

float i, j, sum;

count = 0;

count = count+1;

i = get_int();

count = count+1;

j = get_int();

//判斷除數是否為0

while(j == 0)

{

printf("除數不能為0\n請重新輸入!!!\n");

j = get_int();

}

sum = i / j;

printf("%.2f / %.2f = %.2f\n", i, j, sum);

return sum;

}

//定義開方函數

float extract(void)

{

float i, sum;

count = 0;

i = get_int();

//判斷開方數是否小於0,如果小於0,則讓用戶重新輸入

while(i < 0)

{

printf("請輸入大於0的數值\n");

i = get_int();

}

sum = sqrt(i);

printf("%.2f的開方等於%.2f\n", i, sum);

return sum;

}

//定義平方函數

float square(void)

{

float i, sum;

count = 0;

i = get_int();

sum = i * i;

printf("%.2f的平方等於%.2f\n", i, sum);

return sum;

}

//定義立方函數

float cube(void)

{

float i, sum;

count = 0;

i = get_int();

sum = i * i * i;

printf("%f的立方等於%.3f\n", i, sum);

return sum;

}

  • 上一篇:java反射機制的實現原理
  • 下一篇:Python自動化測試框架有哪些?
  • copyright 2024編程學習大全網