進擊的小白Day001——計算器(一)
阿新 • • 發佈:2018-11-29
自從來實習短短兩三個月已經是被鄙視第二次了,是啊確實菜才會被鄙視,一天一百行程式碼起嗎?好吧,不知道能不能堅持下去,能堅持多久,第一次在csdn上寫東西,選擇csdn來記錄這個過程,不知道結果會怎麼樣,先來第一天吧。
剛開始接觸程式設計,幾乎沒有任何程式設計經驗,只是看了基本C的教材,紙上談兵而已,在網上搜了一些C的小專案,一個一個的來吧,第一個是計算器。
最開始不知道該怎麼寫,去網上看了看別人寫的程式碼,一般都是兩位之間的計算,我就想改成多位的,加一些比較複雜的運算,像冪乘、開方之類的。
貼程式碼吧:
#define _CRT_SECURE_NO_WARNINGS /*預定義常量,解決scanf不安全的報錯,需要放在#include <stdio.h>之前*/ #include <stdio.h> int main() { /*各種定義*/ int flag; int Add(); int Sub(); int Mul(); int Div(); /*引導*/ printf("這是一個計算器,可以進行加、減、乘、除的運算。\n"); /*選擇運算模式*/ printf("請選擇需要運算的型別:\n"); printf("1.加 2.減 3.乘 4.除\n"); scanf("%d", &flag); while (1) { if (flag < 0 || flag > 4) { printf("輸入有誤,請重新輸入:"); scanf("%d", &flag); } else { break; } } /*進入運算*/ if (flag == 1) { /*加法*/ Add(); } else if (flag == 2) { /*減法*/ Sub(); } else if (flag == 3) { /*乘法*/ Mul(); } else { /*除法*/ Div(); } return 0; } /*求和*/ int Add(void) { /*各種定義*/ int add; int a[100]; int i, j; /*獲取數字*/ printf("請輸入所有需要相加的數字,數字間以空格隔開:"); i = 0; do { scanf("%d", &a[i++]); } while (getchar() != '\n'); /*求和*/ for (j = 0, add = 0; j < i; j++) { add = add + a[j]; } printf("add=%d\n", add); return 0; } int Sub(void) { /*各種定義*/ int sub; int a[100]; int i, j; /*獲取數字*/ printf("請輸入所有需要相加的數字,數字間以空格隔開:"); i = 0; do { scanf("%d", &a[i++]); } while (getchar() != '\n'); /*求差*/ for (j = 1, sub = a[0]; j < i; j++) { sub = sub - a[j]; } printf("sub=%d\n", sub); return 0; } int Mul(void) { /*各種定義*/ int mul; int a[100]; int i, j; /*獲取數字*/ printf("請輸入所有需要相加的數字,數字間以空格隔開:"); i = 0; do { scanf("%d", &a[i++]); } while (getchar() != '\n'); /*求積*/ for (j = 0, mul = a[0]; j < i; j++) { mul = mul * a[j]; } printf("mul=%d\n", mul); return 0; } int Div(void) { /*各種定義*/ int div; int a[100]; int i, j; /*獲取數字*/ printf("請輸入所有需要相加的數字,數字間以空格隔開:"); i = 0; do { scanf("%d", &a[i++]); } while (getchar() != '\n'); /*求商*/ for (j = 1, div = a[0]; j < i; j++) { div = div / a[j]; } printf("div=%d\n", div); return 0; }
這是今天寫的程式,功能還不完善,只能實現最基本的加減乘除功能,而且只是針對整數的。
今天遇到的問題:
- 區域性變數和全域性變數怎麼定義,命名規則是什麼,命名規則這個東西還是要好好考究一下,最開始還是儘量養成好的變成習慣
- 在最開始選擇運算模式的時候,輸入整數不會報錯,但輸入浮點數,比如1.1,因為flag是整形,1.1會自動變成1,但在進去Add函式的時候會直接亂碼,需要考慮一下
- 加減乘除只完成了整形的,因為加入浮點數之後對陣列的賦值出問題了
需要完善的:
- 完善一下輸入,如果在選擇運算模式的時候輸入浮點數,該怎麼處理
- 運算中加入浮點數
- 加入異常輸入處理,比如除法中除數為0
- 加入冪乘、開方運算
第一天就這樣了,但願明天可以堅持。