1. 程式人生 > >C語言第四堂課作業

C語言第四堂課作業

作業1
目標:瞭解自己常用的IDE
提示:整合開發環境(IDE,Integrated Development Environment )是用於提供程式開發環境的應用程式,一般包括程式碼編輯器、編譯器、偵錯程式和圖形使用者介面工具。集成了程式碼編寫功能、分析功能、編譯功能、除錯功能等一體化的開發軟體服務套。所有具備這一特性的軟體或者軟體套(組)都可以叫整合開發環境。如微軟的Visual Studio系列,主要用於C++、C#和VB語言的開發;IBM的Eclipse 也是一個IDE,主要用於Java開發。
作業1題,描述自己常用的IDE特點

答: 我的常用IDE是微軟的Visual Studio2012,Visual Studio2012是微軟公司推出的開發環境,是最流行的Windows平臺應用程式開發環境,是一款優秀智慧的開發工具,不僅能滿足使用者體驗的需要,同時能夠支援更多的新技術架構

剛裝上時並不太會用它,反而被它的許多複雜的按鍵給攪混了。隨著慢慢的學習,越來越覺得很好用的。首先在寫程式碼時可以智慧的顯示出來一些函式名或者其它常用的符號,以及在執行時比較簡單,有錯誤時,會有詳細的解釋和錯誤地方的解釋和錯誤地方的指示,這是我認為最方便的地方了。
------------------------------------題目分割線------------------------------------
作業2
目標:瞭解C 程式的加工和執行過程
提示:程式設計是一種智力勞動,程式設計序就是解決問題。初學程式設計時寫的是很簡單的程式,與做一道數學應用題或物理練習題有類似之處。程式設計序時面對的是一個需要解決的問題,要完成的是一個符合題目要求的程式。一般說,解決問題的過程可分為三步:第一步是分析問題,設計一種解決方案;第二步是通過程式語言嚴格描述這個解決方案;第三步,在計算機上試用這個程式,執行它,看是否真能解決問題。如果在第三步發現錯誤,那麼就需要仔細分析錯誤原因,弄清後退到前面步驟去糾正錯誤。如果發現程式有問題,那就要修改它,然後重新編譯執行和檢查;最終得到可執行程式
作業2題
,參考下圖描述的程式設計過程,說明每個過程的主要工作內容,如,由軟體工程師分析問題....IDE負責編譯程式程式碼....

.

答:分析問題:軟體工程師負責分析問題,先想出解決問題的具體方案和流程。

編制程式:建立或修改c源程式檔案的過程,c源程式以文字的形式儲存在電腦上,檔名為.c或.cpp。

編譯:c語言是高階語言,其源程式必須經過編譯程式對其進行編譯,生成目標程式,目標程式檔案的副檔名為.obj。

連線:編譯生成的目標程式機器可以識別,但不能直接執行,由於程式中使用到一些系統庫函式,還需將目標程式與系統庫檔案進行連線,經過連線後,生成一個完整的可執行的程式,可執行程式的副檔名為.exe。

執行:c源程式經過編譯、連線後生成的可執行檔案,可脫離編譯系統直接執行。

------------------------------------題目分割線------------------------------------

作業3
目標:理解變數
提示:程式變數簡稱為變數。程式變數是表述資料儲存的基本概念,是 C 語言以及各種常規程式設計語言中的一個重要概念。我們應該知道,電腦主要用於處理資料:如字元、整數和浮點數。處理前,你必須儲存這些資料。大部分程式設計語言把資料儲存在變數(variable)中。在計算機硬體層,程式執行中的資料儲存靠記憶體、儲存地址等一系列機制實現,這些機制在程式語言層的反映就是程式變數的概念。程式變數與數學中的變數是完全不同的概念。 一個程式變數可以看作一個容器,程式執行中可以將有關的資料存入變數中。程式裡的每個變數都有一個名字,在程式中可以通過名字使用相應的變數,進而使用儲存在這個變數裡的資料。 對變數的基本操作有兩個: 1.  將資料值存入變數中。這個操作稱作給變數賦值。程式語言對於怎樣給一個變數賦值,能賦什麼值往往有一些限制,具體語言常有具體的規定;2.  取得變數裡當時儲存的值,以便在計算過程中使用。這個操作稱為“取值”。
作業3.1題:下面的字元序列中哪些不是合法的變數名,為什麼?:
1) -abc
2) __aa
3) for
4) pp.288
5) tobe
6) IBM/PC
7) ms-c
8) #micro
9) m%ust
10) tihs
11) while
12) r24_s25
13) __a__b
14) a"bc
15) _345

分析:1)變數只能由字母數字和下劃線組成;3)與已知定義重複;4)變數只能由字母數字和下劃線組成;6),7),8),9)變數只能由字母數字和下劃線組成;11)與已知定義重複;14)變數只能由字母數字和下劃線組成

答:1、3、4、6、7、8、9、11、13、14

------------------------------------題目分割線------------------------------------
作業3.2題:每個變數都必須先定義,然後才能使用。定義變數需要提供兩方面資訊:變數名和變數型別,下面是常用的變數型別,請描述每個型別的特點和使用場景,如int的特點是儲存整數,常用於年齡、月份等資料的儲存。
1) 整型 int      答:儲存整數,常用於年齡、月份等資料的儲存
2) 無符號整型unsigned int      答:可以存放的正數範圍比有符號整型中的範圍大一倍,在一些不可能取值為負數的時候,可以定義為unsigned,在一些底層的嵌入式程式設計的資料一般都是無符號的
3) 短整型 short  int      用於儲存整數,二進位制位長是16,佔用兩個位元組,所能表示的整數的值域為-32768~32767

4) 長整型 long int      用於儲存整數,二進位制位長是32,佔用4個位元組,所能表示的整數的值域為-2147483648~2147483647
5) 無符號長整型 unsigned  int        儲存整數,不代表正負,大小比普通長整大,但同時也失去了表示負數的功能
6) 字元型 char      用於存放字元常量,一個字元變數中只能存放一個字元,在記憶體中佔一個位元組的空間
7) 無符號字元型 unsigned char     實際上是1個位元組無符號整型,可以用來描述ASCII 字元編碼0到255
8) 單精度 float      在C++中,專指佔用32位儲存空間的單精度值。單精度在一些處理器上比雙精度更快而且只佔用雙精度一半的空間,但是當值很大或很小的時候,它將變得不精確。當你需要小數部分並且對精度的要求不高時,單精度浮點型的變數是有用的。例如,當表示美元和分時,單精度浮點型是有用的
9) 雙精度double       用來表示帶有小數部分的實數,一般用於科學計算,用8個位元組(64位)儲存空間,其數值範圍為1.7E-308~1.7E+308,雙精度浮點數最多有15或16位十進位制有效數字,雙精度浮點數的指數用“D”或“d”表示,如double i= 0d。所有超出人類經驗的數學函式,如sin( ),cos( ) ,和sqrt( )均返回雙精度的值
10) 長雙精度 long double      比double 更加精確的型別
------------------------------------題目分割線------------------------------------
作業4
目標:熟悉字元陣列與字串
提示:字元陣列以字元為元素的陣列,用於儲存字串和文字。字元陣列的定義和初始化語句是:char tip[10] = "Good Job!";輸出字串對應的縮寫方法是:printf("%c%c\n",tip[0],tip[5]). 注意"Good Job!"之間有空格。
作業4題:編寫一段程式,將你的名字全拼音儲存到字元陣列,如 wangxiaoming(王小明),並輸出姓和名的第一個字母,如wxm:

我的程式:

#include<stdio.h>
void main()
{
	char tip[10]="yangchen";
    printf("%c %c\n",tip[0],tip[4]);
}

執行結果截圖:



------------------------------------題目分割線------------------------------------

作業5
目標:瞭解簡單的預處理指令
提示:預處理命令以獨立的命令列形式出現。#符號是其特殊引導符號,前處理器指令總是以符號#開始,如果源程式裡某行的第一個非空格符號是#,那麼這行就是預處理命令列。預處理命令的作用是要求預處理程式完成一些操作,預處理命令只在編譯程式時發生作用,不會在執行時產生任何行為。
其中,以  #include  開始的行,這就是檔案包含命令,其作用是把指定檔案的內容包含到當前原始檔裡來;
而以 #define 開始的行稱為巨集定義命令列。簡單巨集定義的形式是:“ #define  巨集名字  替代正文” 。編譯時,編譯器發現正文中遇到已定義的巨集名字,就用對應的替代正文替換它,這種操作稱為巨集展開或巨集替換。
作業5題:對以下程式碼進行巨集替換,使其看起來像編譯後的效果

#include <stdio.h>
#define  TEL5  139133    // 手機號碼頭五位
#define  PI  3.1415926
int main()
{
   printf("%d\n",TEL5);
   printf("%f\n",PI);
}
替換後:
#include <stdio.h>
#define  TEL5  139133    // 手機號碼頭五位
#define  PI  3.1415926
int main()
{
   printf("%d\n",139133);
   printf("%f\n",3.1415926);
}

作業6
目標:掌握C語言運算子和表示式
提示:C語言通過運算子和表示式進行運算,在 C 語言程式裡,描述計算的最基本結構是表示式,表示式由被計算的物件(例如溫度)和表示運算的特殊符號(+、-)按照一定的規則構造而成;
另,如果某個運算子的運算物件具有不同型別時,就出現了混合型別計算,例如表示式:3.27 + 201 這裡的一個運算物件是浮點型別,而另一個運算物件是 int 型別,計算過程中發生了型別轉換,型別轉換也是“運算”是暫時將變數的資料型別改變為另一種;
作業6.1 題利用程式計算下列表達式的值: 
1)    25 + 0125 
2)  24 * 3 / 5 + 6  
3)  36 + - (5 - 23 ) / 4
4)  35 * 012 + 27 / 4 / 7 * (12 - 4)

我的程式:

#include<stdio.h>
void main()
{
	int a,b,c,d;
	a=25 + 0125;
	b=24 * 3 / 5 + 6;
	c=36 + - (5 - 23 ) / 4;
	d=35 * 012 + 27 / 4 / 7 * (12 - 4);
	printf("a=%d\n b=%d\n c=%d\n d=%d\n",a,b,c,d);
}
執行結果截圖:



作業6.2題 在下面表示式的計算過程中,在什麼地方將發生型別轉換,各個轉換是從什麼型別轉換
到什麼型別,表示式計算的結果是什麼? 
  1)3 * (2L + 4.5f) - 012 + 44 
  2)3 * (int)sqrt(144.0) 
  3)cos(2.5f + 4) - 6 *27L + 1526 - 2.4L 

我的程式:

#include<stdio.h>
#include<math.h>
void main()
{
	int a,b,c;
    a=3 * (2L + 4.5f) - 012 + 44; 
    b=3 * (int)sqrt(144.0) ;
    c=cos(2.5f + 4) - 6 *27L + 1526 - 2.4L; 
	printf("a=%d\n b=%d\n c=%d\n",a,b,c);
}

執行結果截圖:



------------------------------------題目分割線------------------------------------
作業7 閱讀部落格
"一個人的命運決定於每天晚上8點到10點之間:
http://www.cnblogs.com/zhoujie/archive/2013/03/27/article1.html"
要求:針對“一個人的命運決定於每天晚上8點到10點之間”發表感慨、必須真實,感慨字數大於100,小於200!