【打基礎】高級語言程序設計·廈大出版社 課後習題個人記錄1

【前記】 

      大一時,貪玩罵人,沒有認真地跟着忠孝教授好好學習C語言。後來雖然又花了些時間查閱,但總歸沒有花一段連續的時間來研讀這本教材《高級語言程序設計》(廈門大學出版社·黃翠蘭主編),趁着實習前的這段空閒時間,重新拿起學習,並認真做好課後的習題,做到每題都弄懂,打好基礎!有閒暇了,數據結構和C++也每題必做!發到自己的博客上監督自己完成!奮鬥

 

【第二章】

1.思考題

  (1)用#define定義符號常量有什麼好處?

   答:a.含義清楚;b.能做到“一改全改”。

  (2)用何種辦法可以迅速找出回車換行符“\n”的ASCII碼?

   答:printf("%d",'\n');

  (3)從整數在機內的表示方式的角度舉例說明整形溢出的問題。

  答:整數在機內是用補碼錶示的,由於不同整形變量所佔用的內存大小不同,所以,所能表示的數的範圍也不同。例如,unsigned short 佔用2字節,表示範圍0~65535,用它來表示負數或者大於65535的整數時就溢出。

 (4)寫出4個不同的表達式,分別將整型變量n減去1。

  答:n--,--n,n=n-1,n-=1。

 (5)試運行下面的代碼,猜想其結果是如何得到的,並查資料驗證你的想法。

   void main (void)

{

  int a,b,c;

  c = scanf("%d%d",&a,&b);

  printf("\n%d",c);

}

答:2,scanf()函數返回成功賦值的數據項數,讀到文件末尾出錯時則返回EOF。

(6)(略)

#include <stdio.h>

void main(){
  int a;
  char c;
  scanf("%d",&a);
  scanf("%c",&c);
  printf("a = %d,c=%d\n",a,c);
  getch();
}

2.分析下列程序的運行結果。

(1)

#include <stdio.h>
void main(){
  printf("ab c\t de\rf\tg\n");
  printf("h\ti\b\bj k");
  getch();
}

關於轉義字符!

(2)

#include <stdio.h>
void main(){
  unsigned int a = 65535;
  printf("a=%d,%o,%x,%u\n",a,a,a,a);
  getch();
}

格式化輸出!%d 十進制整數;%o 八進制整數; %x十六進制整數; %u十進制形式輸出無符號數,例如地址值。

(3)#include <stdio.h>
void main(){
  int x,y,z,a,b,c;
  x=3;
  y=3;
  z=3;
  y+=++x;
  z+=x++;
  a=(x++)+(++x);
  b=-x++;
  c=-++x;
  printf("x=%d,y=%d,z=%d,a=%d,b=%d,c=%d",x,y,z,a,b,c);
  getch();
}

我只能說,哪天,我遇到這樣的前輩遺碼,我一定折服於他寫出了這樣的代碼!

(4)略

3.略

4.略

5.用下面的scanf函數輸入數據,使a=10,b=20,c1='a',c2='A',x=1.5,y=-1.5,請問該如何輸入數據?

scanf("%5d%5d%c%*3c%dx%fy%f",&a,&b,&c1,&c2,&x,&y);

不至於叫用戶一口氣格式化輸入這麼多數據吧?

6.編程題

(1)輸入直角三角形的兩直角邊的邊長,求斜邊的長度和三角形的面積。

#include <stdio.h>
#include <math.h>
void main(){
 float a,b,c,p,area;
 printf("請輸入直角邊a:\n");
 scanf("%f",&a);
 printf("請輸入直角邊b:\n");
 scanf("%f",&b);
 c = sqrt(a*a+b*b);
 if(a+b<=c||a+c<=b||b+c<=a)
 printf("輸入的三邊不能組成三角形!\n");
 p = (a+b+c)/2;
 area = p*(p-a)*(p-b)*(p-c);
 printf("斜邊長:%f 面積:%f \n",c,area);
 getch();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章