1. 程式人生 > >進擊的小白Day001——計算器(一)

進擊的小白Day001——計算器(一)

自從來實習短短兩三個月已經是被鄙視第二次了,是啊確實菜才會被鄙視,一天一百行程式碼起嗎?好吧,不知道能不能堅持下去,能堅持多久,第一次在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. 區域性變數和全域性變數怎麼定義,命名規則是什麼,命名規則這個東西還是要好好考究一下,最開始還是儘量養成好的變成習慣
  2. 在最開始選擇運算模式的時候,輸入整數不會報錯,但輸入浮點數,比如1.1,因為flag是整形,1.1會自動變成1,但在進去Add函式的時候會直接亂碼,需要考慮一下
  3. 加減乘除只完成了整形的,因為加入浮點數之後對陣列的賦值出問題了

需要完善的:

  1. 完善一下輸入,如果在選擇運算模式的時候輸入浮點數,該怎麼處理
  2. 運算中加入浮點數
  3. 加入異常輸入處理,比如除法中除數為0
  4. 加入冪乘、開方運算

第一天就這樣了,但願明天可以堅持。