1. 程式人生 > >我與C語言之第三戰!

我與C語言之第三戰!

  我與C語言第三戰之num1:將陣列A中的內容和陣列B中的內容進行交換。(陣列一樣大)

  首先定義兩個陣列用以存放元素,為了更直觀的看到陣列內容進行了交換,先將之前定義的兩個陣列內容分別打印出來,然後利用for迴圈和中間變數,進行兩個陣列間元素的交換,最後進行列印即可。具體程式程式碼和執行結果如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int a[5] = {1,2,3,4,5};
	int b[5] = {6,7,8,9,10};
	int i, t;
	printf("陣列a的元素為:\n");
	for (i = 0; i < 5; i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
	printf("陣列b的元素為:\n");
	for (i = 0; i < 5; i++)
	{
		printf("%d ",b[i]);
	}
	printf("\n");
	printf("交換後陣列a和b的元素分別為:\n");
	for (i = 0; i < 5; i++)
	{
		t = a[i];
		a[i] = b[i];
		b[i] = t;
	}
	printf("陣列a的元素為:\n");
	for (i = 0; i < 5; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
	printf("陣列b的元素為:\n");
	for (i = 0; i < 5; i++)
	{
		printf("%d ", b[i]);
	}
	printf("\n");
    system("pause");
    return 0;
}

  我與C語言第三戰之num2:計算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。

  首先會想到用迴圈來完成,但並不是每個運算子都是“+”號,觀察表示式,能得知它的正負順序是一正一負一正一負……,將迴圈變數當作分母,再定義一個常量n,令n=-n,並將表示式放在迴圈中,就能保證值的正負。要注意的是:計算結果肯定是小數,所以定義變數sum時,不能用int,要用double。具體程式程式碼及執行結果如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int m = 0;
	int n = 1;
	double sum = 0.0;
	for (m = 1; m < 101; m++)
	{
		sum += n*(1.0 / m);
		n = -n;
	}
	printf("sum is %f\n", sum);
	system("pause");
	return 0;
}

  我與C語言第三戰之num3:編寫程式數一下 1到 100 的所有整數中出現多少次數字9。

  首先考慮個位為9,怎麼計算?取餘即可,其次考慮十位為9,利用計算機除法運算的取整特性,即可求出十位有9的數字,值得注意的是,此題中99只計算了一次,所以對最後計算出來的9的個數要加1。具體程式程式碼及執行結果如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
	int m = 0;
	int n = 0;
	printf("1到100中有9的數字分別為:\n");
	for (m = 1; m < 101; m++)
	{
		if (m % 10 == 9)
		{
			printf("%d ", m);
			n++;
		}
		else if (m/10==9)
		{
			printf("%d ", m);
			n++;
		}
	}
	n += 1;
	printf("\n1到100中9的個數為:%d\n", n);
    system("pause");
    return 0;
}

   個人感悟:拿到題目,對題目的理解不夠深入,經過檢視監視視窗,發現了程式碼的漏洞及不足,再接再厲!