查看全部128種考試
軟件水平考試
 考試動態(tài) 報考指南 歷年真題 模擬試題 復習資料 心得技巧 專業(yè)英語 技術(shù)文章 軟考論壇 考試用書
 程序員 軟件設計師 網(wǎng)絡管理員 網(wǎng)絡工程師 系統(tǒng)分析師 數(shù)據(jù)庫系統(tǒng)工程師
1
2
3
4
5
6
7
8
9
10
Exam8.com  
【字體: 程序員考試補課筆記-第二天
程序員考試補課筆記-第二天
spks.exam8.com 來源:狂風校園 更新:2004-12-26 13:20:00 軟件水平考試 考試論壇

因為前天老師摸到我們的底的關(guān)系,所以今天要補一補前面的基礎(chǔ)部份。他先是列出一個數(shù)據(jù)類型的表,如下:
           | 整型
           | 字符型
     | 基本類型<         | 單精度型
     |      | 實型(浮點型)<
     |      | 枚舉類型    | 雙精度型
     |
數(shù)據(jù)類型<      | 數(shù)組類型
     | 構(gòu)造類型< 結(jié)構(gòu)體類型 (結(jié)構(gòu))
     |     | 共用體類型 (聯(lián)合)
     | 指針類型
     | 空類型

  上面這個表,基本類型是我們平常用得最多的,包括整型、字符型、實型(浮點型),就從這里最常用的數(shù)據(jù)類型說起吧。
  說起C語言的數(shù)據(jù)內(nèi)容就要說說計算機里存放的數(shù)據(jù)是究竟怎么一回事,大家應該都知道計算機只可以處理二進制的數(shù)吧,因為是硬件的關(guān)系(二態(tài)器件),這些只能有兩種表示的狀態(tài),所以運用到計算機里就顯得特別有用了。從現(xiàn)在開始我們要知道計算機處理的所有數(shù)據(jù)都是二進制數(shù),那么他究竟是怎么運算的呢?老師先給一些十進制數(shù)轉(zhuǎn)換為二進制數(shù)的幾道題我們做,這些小兒科當然是沒問題啦,很簡單的就做了出來。老師當然知道我們是會做的了,但是其實是想我們在做這些題目的時候找出更簡單的轉(zhuǎn)換方法。例:
10111012 =(93)10 很簡單的就可以計算出來了,我的方法就是傳統(tǒng)的計算方法。它們都有自己的位權(quán),第一位就是20,第二位是21,跟著的都如些類推,將有1的地方乘上該位的數(shù)跟著相加起來就等于93了。這里說說其實二進制的次方特別好算,就像我們的內(nèi)存一樣階梯上去的,1-2-4-8-16-32-64-128-256-512-1024……你知道這規(guī)律嗎,如果知道是不是計算起來特別別好辦呢!
  不過老師在這里提出了一個更好的方法,起碼比一個一個加上去也快多了。就是將那個要轉(zhuǎn)換的數(shù)變?yōu)槿际?111111,你知道這個數(shù)是多少嗎?其實就是有一技巧在里面,把它看成10000000 減 1吧!那么是不是很快就知道10000000是多少呢,沒錯就是128嘛,再減1就是127了,在些基礎(chǔ)上試著將原來的那個二進制數(shù)位為零的那兩個數(shù)求出來,第一個零在第二位,所以是2,第二個零在第六位,所以是32,將其加起來被127減去就可以得出93了,是不是很簡單方便呢(學到東西快交學費啊,哈哈~。。你知道計算機里二進制有什么幾種運算嗎?我在這里告訴你,其實就只有這么的一種,就是加法運算(你不要告訴我你連二進制的加法也不會運算,其實就是蓬二制一嘛)。為什么這樣說呢?其實二進制也有減法運算和乘除,但是計算機里有一種叫補碼的方法,可以將減法運算變?yōu)榧臃ㄟ\算,至于怎么實現(xiàn)教師也沒有再深入講下去了(在些補充,乘法也是利用移位來實現(xiàn)轉(zhuǎn)為加法的)。
  現(xiàn)在轉(zhuǎn)入到C語言的整型數(shù)據(jù)里,C語言的整型數(shù)據(jù)是2字節(jié)的,就是16位,最多可以存儲65536,他的范圍是 -32768 到 32767 。C語言里分有符號類型和無符號類型,如果是沒有符號的整數(shù)類型的范圍就是0 到 65535 了。關(guān)于字符型數(shù)據(jù),如果嚴格來說C語言里根本沒有字符這種類型,因為他所存儲的是它的ASCII碼。直接可以用來和其它的數(shù)據(jù)類型運算,比如:
main()
{
  char s='A';
  int i=2;
  s=s+i;
  printf("%d",s); /*這里可以直接輸出其ASCII碼*/
  printf("%c",s); /*這里的結(jié)果因為上面的語句改變了字符s的字符,輸出的是'C'*/
}
  那么更不要說字符串了,所以字符串在C語言里也只是用數(shù)組來表示,和其它的高級語言不同,有其的字符串類型,而且還是字符和字符串結(jié)合在同一種類型里,F(xiàn)在該說一下實型數(shù)據(jù)了,字型類型通常用在有小數(shù)位的一些數(shù)據(jù)。就像這題一樣:
S=1/1+1/3-1/5+1/7……1/2n-1

這個程序是我寫的:
main()
{
  int n,i,s;
  int r=1;
  printf("please input: ";
  scanf("%d",&n);
  for(i=1;i<=n;i++)
  {
    s=s+r/(2*i-1);
    r=-1*r;
  }
  printf("%d",s);
}

這個是考試里的:
void fun(float *sn, int n)
{
  float s=0.0,w,f=-1.0;
  int i=0;
  for(i=0;i<n;i++)
  {
    f=___*f; /*這里填 -1 */
    w=f / (2*i+1);
    s+=w;
  }
  ____=s; /*這里填 *sn */
}

  考試里的兩個空我都做對了,可是自己寫的那個程序就有大問題了,就是答案用了整型數(shù)據(jù),從答可知答案應該是小數(shù)啊,真的一時的糊涂就可以至命。∥覀儙缀跛腥硕际清e了這點,當然也要另類的錯法,就是用回來以前QB的一些運算符,^ 這個是QB里的次方運算符,這可真的鬧出笑話了。之后是要我們編一個主函數(shù)來調(diào)用這個函數(shù)。

我是我做的
main()
{
  float s;
  int n;
  printf("please input:";
  scanf("%d",&n);
  fun(&s,n);
  printf("%f",s);
}

  這是這么幾條簡單的語句,不過就難道了幾乎所有人(除了我)。你知道他們的答案嗎?讓我給大家展示出來吧

main()
{
  float *ss;
  int n;
  printf("Please input:";
  scanf("%d",&n);
  fun(*ss,n); /*這里出了問題*/
  printf("%f",*ss);
}

  他可以還沒有了解到C語言里的函數(shù)參數(shù)的問題吧,既沒有定義一個可以存放結(jié)果的變量,參數(shù)方面也用錯了,如果真的要用指針也得要指針指向一個存儲單元才行吧。而且還不是傳了地址,他而是試圖傳一個指針指向單元進函數(shù)里,這是絕對錯誤的。因為該調(diào)用的函數(shù)是地址,好了,下面給他的程序更正一下。如下:

main()
{
  float *ss,s; /*這里多定義一個單精度的變量*/
  int n;
  ss=&s;
  printf("Please input:";
  scanf("%d",&n);
  fun(*ss,n); /*這里出了問題*
  printf("%f",*ss);
}

  好了,就這樣這條程序就完全正確了,不過要是為了節(jié)省空間就用我寫的那條吧,因為不要多開消一個指針變量。今天寫得特別的長,也特別的嗅,望大家見諒了。

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
·程序員考試補課筆記-第九天  (2004-12-29 23:59:00)
·程序員考試補課筆記-第八天  (2004-12-27 13:29:00)
·程序員考試補課筆記-第七天  (2004-12-27 13:28:00)
·程序員考試補課筆記-第六天  (2004-12-27 13:27:00)
·程序員考試補課筆記-第四天  (2004-12-27 13:26:00)
·程序員考試補課筆記-第三天  (2004-12-26 13:21:00)
網(wǎng)友評論
昵 稱: *  評 分: 1分 2分 3分 4分 5分
標題:   匿名發(fā)表    (共有條評論)查看全部評論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系,我們將會及時處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  付款方式  站內(nèi)導航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧軟件水平考試網(wǎng) All Rights Reserved    
中國科學院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認證  十佳網(wǎng)絡教育機構(gòu)  經(jīng)營許可證號:京ICP060677