第一篇:全國計算機2級c語言考試
2012年上半年全國計算機等級考試
各設區(qū)市招考辦,各設考點學校:
2012年上半年全國計算機等級考試定于2012年3月24-27日舉行。為確??荚図樌M行,現(xiàn)將有關事項通知如下:
一、報名工作
1、報名要求
報名對象:報考者不受年齡、職業(yè)、學歷的限制,任何人均可根據(jù)自己學習和使用計算機的實際需要,選擇不同級別的考試,但考生一次只能報考一個級別的考試。
南昌市內高??键c只接收本校在校生報名考試,其他社會考生、未設考點學校和??伎键c學校的學生,統(tǒng)一到江西師范大學繼續(xù)教育學院報名和考試。
各高??键c的考生一律不得跨校報考。一旦發(fā)現(xiàn)跨校報考,將取消報名資格。
其他設區(qū)市社會考生、未設考點學校和??伎键c學校的考生統(tǒng)一到省教育考試院指定的考點報名。指定的考點分別是:景德鎮(zhèn)市報名點是景德鎮(zhèn)高等專科學校,上饒市報名點是上饒師范學院,萍鄉(xiāng)市報名點是萍鄉(xiāng)高等??茖W校,新余市報名點是新余學院,宜春市報名點是宜春學院,贛州市報名點是贛州市教育局電教館,吉安市報名點是井岡山大學,撫州市報名點是東華理工大學,鷹潭市報名點是鷹潭職業(yè)技術學院,九江市報名點是江西財經職業(yè)學院(九江)。開考級別:一級B、一級WPS OFFICE、一級MS OFFICE;二級C語言、二級VB、二級VFP、二級JAVA、二級ACCESS、二級C++、二級Delphi語言程序設計;三級PC技術、三級信息管理技術、三級網絡技術、三級數(shù)據(jù)庫技術;四級網絡工程師、四級數(shù)據(jù)庫工程師、四級軟件測試工程師。
報名時間:2011年12月1日—2012年1月10日
考試日期:2012年 3月24日上午為筆試;3月24日下午2:00至27日為上機考試。
2、考點要求
加大宣傳力度。要做好在校學生的報名宣傳工作,擴大考試規(guī)模。嚴格審查考生報名資格,各考點只能接受本校學生報考(指定考點除外),其他考生都必須到省教育考試院指定考點報考。
各考點要準確輸入考生的各種信息,包括準考證號、身份證號、姓名、保留成績種類、原準考證號碼、報考類別、語種等。考生報考信息經考生本人在信息確認單及考試承諾書上簽字,并保留半年備查。若因報考信息未經考生本人確認而影響考生成績或證書的,一切后果由考點負責。
按時完成好各項工作。根據(jù)教育部考試中心的規(guī)定,考試前14天上報報名庫必須100%準確,并按考務系統(tǒng)完成所有相關編排,考試后成績庫必須以本次報名數(shù)據(jù)為準。各考點考前要對機房進行全面檢查,如計算機有USB接口和光驅,要用“考試專用USB封口”封條進行密封(“考試專用封條”由我院提供),對未按規(guī)定處理的計算機,一旦被查出,將追究考點相關人員責任。
二、試卷申報及報送報名軟盤
1、試卷申報
各考點請于2012年1月12日前將《2012年上半年全國計算機等級考試試卷申報表》(見附件)填好加蓋單位公章后用特快專遞或傳真(0791-86765391)方式報送省教育考試院成招與社考處梅老師(除南昌地區(qū)外,其他考點試卷申報表還須加蓋所在設區(qū)市招考辦公章)。
2、報送報名數(shù)據(jù)
報名數(shù)據(jù)請于2012年1月20日前上報省教育考試院信息處(0791-86765551)(本次上報的信息可以不編排準考證號和考場)并于2012年3月10日上報最終準確報名庫(必須編排準考證號和考場)。報名數(shù)據(jù)要求準確無誤,考試后不允許再對報名數(shù)據(jù)作任何修改,考試后成績庫必須以本次報名數(shù)據(jù)為準。
請各考點將考生的照片按要求報送我院信息處,截止上報時間為3月10日。各考點必須用ACDsee軟件檢查考生照片是否倒置或橫置,凡是因考生照片不符合考務要求造成照片信息有誤的由考點負責。根據(jù)教育部考試中心相關規(guī)定,沒有照片的考生不得參加考試,我院將對考點上報的缺少照片的考生報名信息予以刪除。
考生照片采集標準如下:
(1)背景要求:背景布為淺藍色,要求垂感和吸光好。(2)成像要求:成像區(qū)上部空1/10,頭部占7/10,肩部占1/5,左右各空1/10。采集圖像大小最小為192*144(高*寬),彩色,成像區(qū)大小為48mm*33mm(高*寬);
(3)燈光要求:需要攝影燈,一臺前燈基本滿足要求,最好利用兩臺側燈。燈具可以是專業(yè)攝影燈,也可以是舞臺燈或家用立式客廳燈。
(4)文件格式要求:要求存儲為JPG格式,圖像文件名為*.JPG,其中“*”為14位“BMH”,并用“BMH”與“報名庫”、“成績庫”連接。
(5)存儲要求:每個考生的照片單獨存儲于目錄名稱為考點代碼(省代碼+考點序號,共六位)的目錄下。
(6)打印機為黑白激光打印機,分辨率最少是600dpi,即每英寸600點。
三、考務要求
1、試卷的領取、回收由設區(qū)市招考辦負責。各設區(qū)市招考辦必須配備專職干部、公安干警和專車負責試卷的押運,在押運途中,任何情況下,押運人員不得少于兩人。試卷運送到目的地后應嚴格核對數(shù)量,檢查密封,履行交接手續(xù),及時報平安。試卷必須存放在保密室的專用保險柜內,存放期間必須有專人晝夜值守,值班人員不少于兩人。必須配備一部專門的值班電話并報我院以便隨時保持聯(lián)系。因試卷丟失、被盜或其它原因造成失密、泄密等事件,必須采取有效措施控制擴散范圍,并立即向省教育考試院和當?shù)毓?、保密機構報告。
2、每個考場只能安排30人考試,超過30人,造成考生無成績的由考點自負。每個考場同一語種、級別只能裝訂一袋試卷(含備用卷、10份卷)。試卷申報要準確,留作機動數(shù)應控制在百分之五左右。
3、特別提醒考生在筆試答題時一律用黑色簽字筆或鋼筆答題,2B鉛筆填涂答題卡,如用其他顏色筆答題,造成無法網上閱卷或信息采集不到,一切后果由考生自負。監(jiān)考老師填涂準考證、缺考標記也按上述要求執(zhí)行。
4、為了做好2012年3月第35次全國計算機等級考試組考工作,確保因科目調整、考務軟件更新、上機考試硬件設備及軟件更新的銜接,考務工作一律按新版考務軟件執(zhí)行,請各考點組織好系統(tǒng)、考務管理人員的培訓,提高業(yè)務素質。各考點必須按照教育部考試中心要求及上機考試的需要配置正版考試軟件,確保考試順利進行,凡因沒有使用正版軟件造成考生無成績的由考點負責。
5、如考試時間安排有變動,以教育部考試中心文件為準。
關于做好江西省2012年下半年全國計算機等級考試工作的通知
各設區(qū)市招考辦,各考點學校:
我省2012年下半年全國計算機等級考試將于2012年9月22 - 26日舉行。為確??荚図樌M行,現(xiàn)將有關事項通知如下:
一、報名工作
1、報名要求
報名對象:報考者不受年齡、職業(yè)、學歷的限制,任何人均可根據(jù)自己學習和使用計算機的實際需要,選擇不同級別的考試,但考生一次只能報考一個級別的考試。
根據(jù)有關規(guī)定,從2012年10月起,自學考試中“00018計算機應用基礎(含實踐00019)”課程和“00051管理系統(tǒng)中計算機應用(含實踐00052)”課程須分別參加全國計算機等級考試一級或以上考試和全國計算機等級考試二級或以上考試。南昌市內高??键c只接收本校在校生報名考試,其他社會考生、未設考點學校和??伎键c學校的學生,統(tǒng)一到江西師范大學省直屬考點所屬青山湖校區(qū)考點(考點代碼360023)報名和考試,報名地址:江西師范大學逸夫樓一樓105室(南昌市北京西路437號)。聯(lián)系人:陳媛媛陸軍,聯(lián)系電話:0791—88507345,88507898,88506184。
各高??键c的考生一律不得跨校報考。一旦發(fā)現(xiàn)跨校報考,將取消其報名資格。
其他設區(qū)市社會考生、未設考點學校和停考考點學校的考生統(tǒng)一到省教育考試院指定的考點報名。指定的考點分別是:景德鎮(zhèn)市報名點是景德鎮(zhèn)高等??茖W校,上饒市報名點是上饒師范學院,萍鄉(xiāng)市報名點是萍鄉(xiāng)高等??茖W校,新余市報名點是新余學院,宜春市報名點是宜春市教育局計算機培訓中心,贛州市報名點是贛州市教育局電教館,吉安市報名點是井岡山大學,撫州市報名點是東華理工大學,鷹潭市報名點是鷹潭職業(yè)技術學院,九江市報名點是江西財經職業(yè)學院(九江)。
開考級別:一級B、一級WPS OFFICE、一級MS OFFICE;二級C語言、二級VB、二級VFP、二級JAVA、二級ACCESS、二級C++、二級Delphi語言程序設計;三級PC技術、三級信息管理技術、三級網絡技術、三級數(shù)據(jù)庫技術;四級網絡工程師、四級數(shù)據(jù)庫工程師、四級軟件測試工程師。
報名時間:2012年6月1日—25日
考試日期:2012年 9月22日上午為筆試;9月22日下午至26日為上機考試。
報名時間:2011年12月1日—2012年1月10日
考試日期:2012年 3月24日上午為筆試;3月24日下午2:00至27日為上機考試。
2、考點要求
加大宣傳力度。要做好在校學生的報名宣傳工作,擴大考試規(guī)模。嚴格審查考生報名資格,各考點只能接受本校學生報考(指定考點除外),其他考生都必須到省教育考試院指定考點報考。
各考點要準確輸入考生的各種信息,包括準考證號、身份證號、姓名、保留成績種類、原準考證號、報考類別、語種等。考生報考信息經考生本人在信息確認單及考試承諾書上簽字,并保留半年備查。若因報考信息未經考生本人確認而影響考生成績或證書的,一切后果由考點負責。
按時完成好各項工作。根據(jù)教育部考試中心的規(guī)定,考試前14天上報報名庫必須100%準確,并按考務系統(tǒng)完成所有相關編排,考試后成績庫必須以本次報名數(shù)據(jù)為準。各考點考前要對機房和考試用計算機進行全面檢查,對未按規(guī)定處理的計算機,一旦被查出,將追究考點相關人員責任。
二、試卷申報及報送報名數(shù)據(jù)
1、試卷申報
各考點請于2012年6月29日前將《2012年下半年全國計算機等級考試試卷申報表》(見附件)填好加蓋單位公章后用特快專遞或傳真(0791-86765391)方式報送省教育考試院成招與社考處梅老師(除南昌地區(qū)外,其他考點試卷申報表還須加蓋所在設區(qū)市招考辦公章)。
2、報送報名數(shù)據(jù)
報名數(shù)據(jù)請于2012年7月10日前上報省教育考試院信息處(0791-86765551)(本次上報的信息可以不編排準考證號和考場,通過FTP上報報名庫,地址:ftp://111.75.211.150),并于2012年9月7日上報最終準確報名庫(必須編排準考證號和考場,刻錄光盤上報)。報名數(shù)據(jù)要求準確無誤,考試后不允許再對報名數(shù)據(jù)作任何修改,考試后成績庫必須以本次報名數(shù)據(jù)為準。
請各考點將考生的照片按要求報送我院信息處,截止上報時間為9月7日(刻錄光盤上報)。各考點必須用XNview(1.97及以上版本)軟件檢查考生照片是否倒置或橫置,凡是因考生照片不符合考務要求造成照片信息有誤的由考點負責。根據(jù)教育部考試中心相關規(guī)定,沒有照片的考生不得參加考試,我院將對考點上報的缺少照片的考生報名信息予以刪除。
考生照片采集標準如下:
(1)背景要求:背景布為淺藍色,要求垂感和吸光好。
(2)成像要求:成像區(qū)上部空1/10,頭部占7/10,肩部占1/5,左右各空1/10。采集圖像大小最小為192*144(高*寬),彩色,成像區(qū)大小為48mm*33mm(高*寬);
(3)燈光要求:需要攝影燈,一臺前燈基本滿足要求,最好利用兩臺側燈。燈具可以是專業(yè)攝影燈,也可以是舞臺燈或家用立式客廳燈。
(4)文件格式要求:要求存儲為JPG格式,圖像文件名為*.JPG,其中“*”為14位“BMH”,并用“BMH”與“報名庫”、“成績庫”連接。
(5)存儲要求:每個考生的照片單獨存儲于目錄名稱為考點代碼(省代碼+考點序號,共六位)的目錄下。
(6)打印機為黑白激光打印機,分辨率最少是600dpi,即每英寸600點。
三、考務要求
1、試卷(含上機考試系統(tǒng)盤)的領取、回收由設區(qū)市招考辦負責。各設區(qū)市招考辦必須配備專職干部、公安干警和專車負責試卷的押運,在押運途中,任何情況下,押運人員不得少于兩人。試卷運送到目的地后應嚴格核對數(shù)量,檢查密封,履行交接手續(xù),及時報平安。試卷(含上機考試系統(tǒng)盤)必須存放在保密室的專用保險柜內,存放期間必須有專人晝夜值守,值班人員不少于兩人。必須配備一部專門的值班電話并報我院以便隨時保持聯(lián)系。因試卷丟失、被盜或其它原因造成失密、泄密等事件,必須采取有效措施控制擴散范圍,并立即向省教育考試院和當?shù)毓病⒈C軝C構報告。考試期間,上機考試系統(tǒng)盤及相關資料仍屬于保密材料,必須由專人、專車負責送回,否則,一旦出現(xiàn)問題,后果由考點負責。
2、每個考場只能安排30人考試,超過30人,造成考生無成績的由考點負責。每個考場同一語種、級別只能裝訂一袋試卷(含備用卷、10份卷)。試卷申報要準確,留作機動數(shù)應控制在百分之五左右。
3、特別提醒考生在筆試答題時一律用黑色簽字筆或鋼筆答題,2B鉛筆填涂答題卡,如用其他顏色筆答題,造成無法網上閱卷或信息采集不到,一切后果由考生自負。監(jiān)考老師填涂準考證、缺考標記也按上述要求執(zhí)行。
4、為了做好2012年9月第36次全國計算機等級考試組考工作,確保因科目調整、考務軟件更新、上機考試硬件設備及軟件更新的銜接,考務工作一律按新版考務軟件執(zhí)行,請各考點組織好系統(tǒng)、考務管理人員的培訓,提高業(yè)務素質。各考點必須按照教育部考試中心要求及上機考試的需要配置正版考試軟件,確??荚図樌M行,凡因沒有使用正版軟件造成考生無成績的由考點負責。
5、如考試時間安排有變動,以教育部考試中心文件為準。
第二篇:C語言計算機
計算機程序設計基礎
(C語言)實驗指導書
信息基礎學科
2005
實驗總論
一、實驗目的
上機實驗是學習程序設計語言必不可少的實踐環(huán)節(jié),特別是C語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規(guī)定、掌握程序設計方法、提高程序開發(fā)能力,這些都必須通過充分的實際上機操作才能完成。學習C程序設計語言除了課堂講授以外,必須保證有足夠的上機時間。因為學時所限,課程不能安排過多的統(tǒng)一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用C語言開發(fā)程序的能力,為今后的繼續(xù)學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了8次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1.加深對課堂講授內容的理解
課堂上要講授許多關于C語言的語法規(guī)則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用C語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握C語言的語法規(guī)定。對于一些內容自己認為在課堂上聽懂了,但上機實踐中會發(fā)現(xiàn)原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。學習C語言不能停留在學習它的語法規(guī)則,而是利用學到的知識編寫C語言程序,解決實際問題。即把C語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握C語言、自己編寫的程序是否能夠正確地解題。
通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數(shù)同學在完成老師作業(yè)時的心態(tài)。但是在程序設計領域里這是一定要克服的傳統(tǒng)的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去“掩蓋”程序中的錯誤,而不是盡可能多地發(fā)現(xiàn)程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發(fā)生,通過解決這些問題,可以逐步提高自己對C語言的理解和程序開發(fā)能力。
2.熟悉程序開發(fā)環(huán)境、學習計算機系統(tǒng)的操作方法
一個C語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環(huán)境下才能進行。所謂“環(huán)境”就是所用的計算機系統(tǒng)硬件、軟件條件,只有學會使用這些環(huán)境,才能進行程序開發(fā)工作。通過上機實驗,熟練地掌握C語言開發(fā)環(huán)境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發(fā)環(huán)境時就會觸類旁通,很快掌握新系統(tǒng)的使用。
本書中所采用的C語言開發(fā)環(huán)境為Borland公司的Turbo C2.0集成開發(fā)環(huán)境(以下簡稱TC環(huán)境)。
3.學習上機調試程序
完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現(xiàn)麻煩。常見錯誤有兩種類型,一種是語法錯誤或設置錯誤,編譯程序會幫助我們檢
測出來,如某變量未進行類型定義、語句末尾缺少分號、庫函數(shù)找不導等,這些屬于低級錯誤,是初學者對語言不熟悉,包括程序錄入錯誤,隨著學習的深入,會逐漸克服;另一種是邏輯錯誤,即程序編譯通過,也能夠順利運行,但是運行結果不對。這就需要借助調試來發(fā)現(xiàn)問題,改正錯誤。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。
經常上機的人見多識廣,經驗豐富,對出現(xiàn)的錯誤很快就有基本判斷,通過C語言提供的調試手段逐步縮小錯誤點的范圍,最終找到錯誤點和錯誤原因。這樣的經驗和能力只有通過長期上機實踐才能取得。向別人學習調試程序的經驗當然重要,但更重要的是自己上機實踐,分析、總結調試程序的經驗和心得。別人告訴你一個經驗,當時似乎明白,當出現(xiàn)錯誤時,由于情況千變萬化,這個經驗不一定用得上,或者根本沒有意識到使用該經驗。只有通過自己在調試程序過程中的經歷并分析總結出的經驗才是自己的。一旦遇到問題,這些經驗自然涌上心頭。所以調試程序不能指望別人替代,必須自己動手。分析問題,選擇算法,編好程序,只能說完成一半工作,另一半工作就是調試程序、運行程序并得到正確結果。掌握程序調試的方法,積累經驗是上機實驗的一個重要目的。
二、實驗要求
上機實驗一般經歷上機前的準備(編程)、上機調試運行和實驗后的總結三個步驟。
1.上機前的準備
根據(jù)問題,進行分析,選擇適當算法并編寫程序,初學者可以參考別人的程序,但一定要讀懂,理解,掌握設計思路,變成自己的。上機前一定要仔細檢查程序(稱為靜態(tài)檢查)直到找不到錯誤(包括語法和邏輯錯誤)。分析可能遇到的問題及解決的對策。準備幾組測試程序的數(shù)據(jù)和預期的正確結果,以便發(fā)現(xiàn)程序中可能存在的錯誤。
要求寫出預習報告,包括實驗目的、實驗內容、算法設計(流程圖或NS圖)、源程序、調試步驟。
上機前沒有充分的準備,到上機時臨時拼湊一個錯誤百出的程序,寶貴的上機時間白白浪費了?;蛘哒粘瓌e人的程序,而自己又不理解,一運行通過,結果正確,象一個錄入員一樣,到頭來自己一無所獲。
2.上機輸入和編輯程序,并調試運行程序
首先調用C語言集成開發(fā)環(huán)境,輸入并編輯事先準備好的源程序;然后調用編譯程序對源程序進行編譯,查找語法錯誤,若存在語法錯誤,重新進入編輯環(huán)境,改正后再進行編譯,直到通過編譯,得到目標程序(擴展名為OBJ)。下一步是調用連接程序,產生可執(zhí)行程序(擴展名為EXE)。使用預先準備的測試數(shù)據(jù)運行程序,觀察是否得到預期的正確結果。若有問題,則仔細調試,排除各種錯誤,直到得到正確結果,注意記錄。在調試過程中,要充分利用C語言集成開發(fā)環(huán)境提供的調試手段和工具,例如單步跟蹤、設置斷點、監(jiān)視變量值 3 的變化等。整個過程應自己獨立完成。不要一點小問題就找老師,學會獨立思考,勤于分析,通過自己實踐得到的經驗用起來更加得心應手。
3.整理上機實驗結果,寫出實驗報告
實驗結束后,要整理實驗結果并認真分析和總結,在預習報告的基礎上,給出正確的源程序,添上實驗調試記錄,加上分析與思考形成完整的實驗報告。
三、注意事項
1.作好預習,無預習報告者不準上機。2.程序調試完成后,需經指導教師檢查。
3.實驗后,按時提交實驗報告和軟盤,一般在下次上課時提交。
建議實驗報告按如下格式書寫:
實驗*
***** ***** *****
一、實驗目的
二、實驗內容:實驗題目與要求。
三、算法說明:NS圖或流程圖
四、源程序清單
五、調試記錄:原始數(shù)據(jù)、相應的運行結果和必要的說明
六、分析與思考:調試過程及調試中遇到的問題及解決辦法;若最終未完成調試,要試著分析原因;調試程序的心得與體會;其他算法的存在與實踐;對課程及實驗的建議等。
實驗一 簡單程序的編制和調試
一、實驗目的
1.熟悉TC環(huán)境。
2.熟悉C語言程序的編輯、編譯、連接、運行過程。
3.掌握基本輸入輸出函數(shù)的使用。
4.編寫順序結構程序并運行。
二、實驗內容
1、盡快熟悉C環(huán)境及程序的編輯、編譯、連接、運行過程,參看實驗步驟1、2、3、4
2、自己編程輸出如下形式: ******************** Welcome to turbo c I am 自己的名字 ********************
3、試下列程序,使之能正確輸出3個整數(shù)之和及3個整數(shù)之積。
#include “stdio.h” main(){ int a,b,c;
printf(“Please enter 3 numbers:”); scanf(“%d,%d,%d”,&a,&b,&c); ab=a+b; ac=a*c;
printf(“a+b+c=%dn”,a+b+c); printf(“a*b*c=%dn”,a+c*b); } 輸入:40,50,60↙
4、行下述程序,分析輸出結果。#include “stdio.h” main(){ int a=10; long int b=10; float x=10.0; double y=10.0;
printf(“a = %d, b = %ld, x = %f, y = %lfn”,a,b,x,y);
printf(“a = %ld, b = %d, x = %lf, y = %fn”,a,b,x,y); printf(“x = %f, x = %e, x = %gn”,x,x,x); } 從此題的輸出結果認識各種數(shù)據(jù)類型在內存的存儲方式。
5、輸入圓半徑和圓心角,輸出圓的周長、面積
6、輸入一個字符,找出它的前驅或后繼字符,分別以字符形式和整型格式輸出(選作題)
7、綜合題初步:菜單編制(提高題)編制如下菜單:
|*******************************| | 小學生算術運算測試系統(tǒng) | | +-----Add 加法 | |------Sub 減法 | | *----mul 乘法 | | /----div 除法 | | E----exit 退出 | | 請輸入你的選擇: | |*******************************|
三、實驗步驟
1.了解TC環(huán)境的組成
開機后進入WINDOWS系統(tǒng)的“資源管理器”,找到TC環(huán)境所在的文件夾。一般情況下,TC環(huán)境都安裝在名為“TC”的子目錄下,具體存于硬盤的哪個分區(qū)可以搜索。查看在TC目錄下的以字母TC開頭的文件,是否包括了TC.EXE、TCC.EXE、TLINK.EXE、TCCONFIG.TC等文件;查看INCLUDE、LIB兩個子目錄下的文件,了解這些文件的作用;記下TC.EXE文件、INCLUDE、LIB兩個子目錄所在的路徑,并在TC根目錄下建立自己的文件夾。
2.進入、退出和定制TC環(huán)境
運行TC目錄下的TC.EXE文件,就可進入TC環(huán)境。
在WINDOWS環(huán)境下運行文件的方法是用鼠標雙擊要運行的文件名,或在桌面上雙擊快捷圖標;在DOS環(huán)境下進入到TC子目錄,用命令方式運行TC.EXE程序。進入TC環(huán)境后屏幕上顯示出TC環(huán)境的主畫面。
退出TC環(huán)境,可在“FILE”菜單下選擇“QIUT”菜單項,或用熱鍵
3.TC環(huán)境下的“Options”菜單下可對TC環(huán)境進行設置
了解“Directories”的作用,一般不要改變系統(tǒng)的其它設置。檢查”INCLUDE”、”LIB””、TC”路徑設置,如不正確,請改變,并會改變輸出文件的目錄,指向你的文件夾。
4.輸入第一個程序
在編輯窗口,錄入如下C源程序:
#include “stdio.h” main(){ printf(“This is a C Programn”)printf(“I am a studentn”);
} 打開“Compile”菜單,并選擇“Compile to object”命令編譯該源程序文件,屏幕出現(xiàn)錯誤提示:
statement missing ;in function main 通過提示,可以知道上面程序第二行的最后漏敲一個分號,改正后,編譯通過,說明程序語法正確,然后選擇“Compile”菜單的“Link EXE file”命令調用連接程序連接成可執(zhí)行文件,最后用“Run”菜單的“Run”命令運行程序,用“Run”菜單的“User screen命令”查看運行結果。
按
用F8鍵單步運行程序,用
5.依次錄入調試自己的程序,記錄調試過程、遇到問題、解決辦法
在編輯窗口,錄入自己的C源程序,按
然后進行編譯、連接和運行,按
將程序源文件和可執(zhí)行文件存入軟盤。
實驗二 選擇結構程序設計
一、實驗目的
1.正確使用關系表達式和邏輯表達式表達條件。
2.學習分支語句if和switch的使用方法。
3.進一步熟悉TC集成環(huán)境的使用方法,學習TC環(huán)境提供的調試工具。
二、實驗內容
1. 熟悉IF語句的用法。
鍵盤輸入一個字符(用getchar()函數(shù)輸入,體會#include語句的作用),求出它的前驅和后繼字符,同時將三個字符按順序在屏幕上顯示(用IF語句實現(xiàn))。2. 輸入a、b、c三個整數(shù),求最小值,寫出調試過程。
(1)學會要求設置觀察變量:按
⑵ 單步執(zhí)行程序。觀察“message”窗口變量值的變化。和預期的結果是否一致。
⑶ 學會用“RUN”菜單的RESET中止程序的運行。(4)學會用F4將程序運行到光標處。(即連續(xù)執(zhí)行幾條語句)
3.在上題的基礎上,進行三個數(shù)的排序,按從小到大的順序輸出。
通過觀察窗口,理解中間變量的作用,進一步理解C的變量在內存中的存儲及賦值方式。
4.某托兒所收2歲到6歲的孩子,2歲、3歲孩子進小班(Lower class);4歲孩子進中班(Middle class);5歲、6歲孩子進大班(Higher class)。編寫程序(用switch語句或IF語句),輸入孩子年齡,輸出年齡及進入的班號。
如:輸入:3,輸出:age:3,enter Lower class。5.簡單計算器。請編寫一個程序計算表達式:(選作題)
data1 op data2的值。其中op為運算符+、—、*、/。(例如:用戶輸入: 3.14*2 程序會顯示結果:3.14*2=6.280000)
6.菜單設計。在實驗一的基礎上,接收用戶輸入,用SWITCH()語句來控制程序的流向,只簡單顯示“你選擇作加法”等,查閱資料如何實現(xiàn)清屏(提高題)
7.繪圖初步。感興趣的同學可以借助校園網上的資料,查閱圖形函數(shù),掌握圖形方式的初始化、顏色(前景、背景)設置、畫線、畫圓、畫矩形等常用函數(shù),編程實踐。(興趣題)
實驗三 循環(huán)結構程序設計
一、實驗目的
1.學習循環(huán)語句for、while和do-while語句的使用方法。
2.學習用循環(huán)語句實現(xiàn)各種算法,例如窮舉法、迭代法等。
3.進一步熟悉TC集成環(huán)境的使用方法
二、實驗內容
1.下面程序的功能是計算n!。
main(){ int i,n,s=1;
printf(“Please enter n:”); scanf(“%d”,&n); for(i=1;i<=n;i++)s=s*i;
printf(“%d!= %d”,n,s); } 首次運行先輸入n=4,輸出結果為4!=24,這時正確的。為了檢驗程序的正確性,再輸入n=10,輸出為10!=24320,這顯然是錯誤的。為了找到程序的錯誤,可以通過單步執(zhí)行來觀察變量的變化。在for循環(huán)體中增加一條輸出語句,把變量s每次的運算結果顯示出來。找出錯誤原因,更正。
2.鍵盤輸入字符,分別統(tǒng)計字符(不分大小寫)、數(shù)字、空格和其它符號的個數(shù),遇!號結束。
3.用梯形法求sin x在0~180度間的定積分。
4.綜合題:小學生算術運算測試系統(tǒng)(提高題)
當選項不為“E”時,反復出題。并在某一個選項時,隨機產生100以內的算術題,根據(jù)用戶輸入,判斷對錯,并統(tǒng)計。按“ESC”時,給出總題數(shù),正確數(shù)和得分,退到主菜單。
5.動畫。在屏幕左側顯示圓、三角形和矩形,通過用戶選擇,在右側畫出相應的圖形,直到用戶按ESC退出。也可自己查閱資料,自己命題(提高題)
三、注意事項
1. 本實驗綜合性較強,要作好充分的預習和復習2. 在程序調試中,要事先準備充分的測試用例。
實驗四 數(shù)組
一、實驗目的
1. 掌握數(shù)組的定義、賦值和輸入輸出的方法。2. 掌握字符數(shù)組和字符串處理函數(shù)的使用
2.學習用數(shù)組實現(xiàn)相關的算法(如排序、求最大和最小值、對有序數(shù)組的插入等)。
2、熟悉TC集成環(huán)境的調試數(shù)組的方法。
二、實驗內容
1.調試下列程序,使之具有如下功能:輸入10個整數(shù),按每行3個數(shù)輸出這些整數(shù),最后輸出10個整數(shù)的平均值。寫出調試過程。
main(){ int i,n,a[10],av; for(i=0;i printf(“av=%fn”,av); } 上面給出的程序是完全可以運行的,但是運行結果是完全錯誤的。調試時請注意變量的初值問題、輸出格式問題等。請使用前面實驗所掌握的調試工具,判斷程序中的錯誤并改正。在程序運行過程中,可以使用 2.編寫程序,任意輸入10個整數(shù)的數(shù)列,先將整數(shù)按照從大到小的順序進行排序,然后輸入一個整數(shù)插入到數(shù)列中,使數(shù)列保持從大到小的順序。 3.調試下列程序,使之具有如下功能:任意輸入兩個字符串(如:“abc 123”和“china”),并存放在a,b兩個數(shù)組中。然后把較短的字符串放在a數(shù)組,較長的字符串放在b數(shù)組,并輸出。 main(){ char a[10],b[10]; int c,d,k; scanf(“%s”,&a); scanf(“%s”,&b); printf(“a=%s,b=%sn”,a,b); c=strlen(a); d=strlen(b); if(c>d)for(k=0;k 4.設某班最多20人,寫一程序錄入某門課的成績,當輸入成績?yōu)樨摃r,輸入結束,統(tǒng)計90~100,80~89,70~79,60~69及不及格的人數(shù)分布,以數(shù)字顯示,或以圖形方式顯示。 5.輸入4×4的數(shù)組,編寫程序實現(xiàn):(選做題)⑴ 求出對角線上各元素的和; ⑵ 求出對角線上行、列下標均為偶數(shù)的各元素的積; ⑶ 找出對角線上其值最大的元素和它在數(shù)組中的位置。 6.編寫程序,輸入字符串s1和s2以及插入位置f,在字符串s1?中的指定位置f處插入字符串s2。如:輸入“BEIJING”、“123”和位置3,則輸出 :“BEI123JING123”。(選做題) 實驗五 函數(shù) 一、實驗目的 1.學習C語言中函數(shù)的定義和調用方法。 2.掌握通過參數(shù)在函數(shù)間傳遞數(shù)據(jù)的方法。3.學習使用設置斷點的方法調試程序。 4.掌握含多個源文件的程序的編譯、連接和調試運行的方法 5.學習遞歸程序設計,掌握遞歸函數(shù)的編寫規(guī)律。 6.熟悉TC集成環(huán)境對包含函數(shù)調用的程序的調試方法。 二、實驗內容 1.調試下列程序,使之具有如下功能:fun函數(shù)是一個判斷整數(shù)是否為素數(shù)的函數(shù),使用該函數(shù)求1000以內的素數(shù)平均值。寫出調試過程。 #include “math.h” main(){ int a=0,k; /* a保存素數(shù)之和 */ float av; /* av保存1000以內素數(shù)的平均值 */ for(k=2;k<=1000;k++)if(fun(k))/* 判斷k是否為素數(shù) */ a+=k; av=a/1000; printf(“av=%fn”,av); } fun(int n)/* 判斷輸入的整數(shù)是否為素數(shù) */ { int i,y=0; for(i=2;i 對于一個大型程序,如果僅需要對程序中的某一部分單步執(zhí)行時,可設置一些斷點,用“Run”命令執(zhí)行程序到斷點處,然后再單步執(zhí)行程序。通過本例說明這樣調試程序的方法。在程序被運行前,將屏幕光標移到fun函數(shù)的for循環(huán)一句處,按 2.編寫一個求水仙花數(shù)的函數(shù),求3位正整數(shù)的全部水仙花數(shù)中的次大值。所謂水仙花數(shù)是指三位整數(shù)的各位上的數(shù)字的立方和等于該整數(shù)本身。例如:153就是一個水仙花數(shù): 153 = 13 + 53 + 33 3.編寫一個函數(shù),對輸入的整數(shù)k輸出它的全部素數(shù)因子。例如:當k=126時,素數(shù)因子為:2,3,3,7。要求按如下格式輸出:126 = 2 * 3 * 3 * 7。 4. 任意輸入一個4位自然數(shù),調用函數(shù)輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。(選做題) 5.用函數(shù)的方法重新規(guī)劃小學生算術測試系統(tǒng)(提高題) 6.漢諾塔編程(提高題) 實驗六 指針 一、實驗目的 1.掌握指針變量的定義與引用 2.掌握指針與變量、指針與數(shù)組的關系 3.掌握用數(shù)組指針作為函數(shù)參數(shù)的方法。 4.熟悉TC集成環(huán)境的調試指針程序的方法 二、實驗內容 以下均用指針方法編程: 1.調試下列程序,使之具有如下功能:用指針法輸入12個數(shù),然后按每行4個數(shù)輸出。寫出調試過程。 main(){ int j,k,a[12],*p; for(j=0;j<12;j++)scanf(“%d”,p++); for(j=0;j<12;j++){ printf(“%d”,*p++); if(j%4 == 0)printf(“n”); } } 調試此程序時將a設置為一個“watch”,數(shù)組a所有元素的值在一行顯示出來。調試時注意指針變量指向哪個目標變量。 2.調試下列程序,使之具有如下功能:任意輸入2個數(shù),調用兩個函數(shù)分別求: ⑴ 2個數(shù)的和,⑵ 2個數(shù)交換值。 要求用函數(shù)指針調用這兩個函數(shù),結果在主函數(shù)中輸出。 main(){ int a,b,c,(*p)(); scanf(“%d,%d”,&a,&b); p=sum; *p(a,b,c); p=swap; *p(a,b); printf(“sum=%dn”,c); printf(“a=%d,b=%dn”,a,b); } sum(int a,int b,int c){ c=a+b; } swap(int a;int b){ int t; t=a;a=b;b=t;} 調試程序時注意參數(shù)傳遞的是數(shù)值還是地址。 3.輸入一個3位數(shù),計算該數(shù)各位上的數(shù)字之和,如果在[1,12]之內,則輸出與和數(shù)相對應的月份的英文名稱,否則輸出***。例如:輸入:123 輸出:1+2+3=6→ June 輸入:139 輸出:1+3+9=13→ *** 用指針數(shù)組記錄各月份英文單詞的首地址。 4.任意輸入5個字符串,調用函數(shù)按從大到小順序對字符串進行排序,在主函數(shù)中輸出排序結果。 5.在主函數(shù)中任意輸入10個數(shù)存入一個數(shù)組,然后按照從小到大的順序輸出這10個數(shù),要求數(shù)組中元素按照輸入時的順序不能改變位置。 6.自己編寫一個比較兩個字符串s和t大小的函數(shù)strcomp(s,t),要求s小于t時返回-1,s等于t?時返回0,s大于t時返回1。在主函數(shù)中任意輸入4個字符串,利用該函數(shù)求最小字符串。(選做題0 7.在主函數(shù)中任意輸入9個數(shù),調用函數(shù)求最大值和最小值,在主函數(shù)中按每行3個數(shù)的形式輸出,其中最大值出現(xiàn)在第一行末尾,最小值出現(xiàn)在第3行的開頭。(選做題) 8.請編程讀入一個字符串,并檢查其是否為回文(即正讀和反讀都是一樣的)。例如: 讀入:MADA M I M ADAM.輸出:YES 讀入:ABCDBA.輸出:NO 15 實驗七 結構體 一、實驗目的 1.掌握C語言中結構體類型的定義和結構體變量的定義和引用。 2.掌握用結構指針傳遞結構數(shù)據(jù)的方法。 3.熟悉TC集成環(huán)境的調試結構程序的方法 二、實驗內容 1.設計一個保存學生情況的結構,學生情況包括姓名、學號、年齡。輸入5個學生的情況,輸出學生的平均年齡和年齡最小的學生的情況。要求輸入和輸出分別編寫獨立的輸入函數(shù)input()和輸出函數(shù)output()。 2.使用結構數(shù)組輸入10本書的名稱和單價,調用函數(shù)按照書名的字母順序序進行排序,在主函數(shù)輸出排序結果。 3.建立一個有5個結點的單向鏈表,每個結點包含姓名、年齡和工資。編寫兩個函數(shù),一個用于建立鏈表,另一個用來輸出鏈表。 選做題: 1.在上述第3題的基礎上,編寫插入結點的函數(shù),在指定位置插入一個新結點。 2.在上述第3題的基礎上,編寫刪除結點的函數(shù),在指定位置刪除一個結點。 實驗八 文件 一、實驗目的 1.掌握C語言中文件和文件指針的概念 2.掌握C語言中文件的打開與關閉及各種文件函數(shù)的使用方法。 3.熟悉TC集成環(huán)境的調試文件程序的方法 二、實驗內容 1.編寫程序,輸入一個文本文件名,輸出該文本文件中的每一個字符及其所對應的ASCII碼。例如文件的內容是Beijing,則輸出:B(66)e(101)i(105)j(106)i(105)n(110)g(103)。 2.編寫程序完成如下功能: ⑴ 輸入5個學生的信息:學號(6位整數(shù))、姓名(6個字符)、3門課的成績(3位整數(shù)1位小數(shù))。計算每個學生的平均成績(3位整數(shù)2位小數(shù)),將所有數(shù)據(jù)寫入文件STU1.DAT; ⑵ 從STU1.DAT文件中讀入學生數(shù)據(jù),按平均成績從高到低排序后寫入文件STU2.DAT; ⑶ 按照輸入學生的學號,在STU2.DAT文件中查找該學生,找到以后輸出該學生的所有數(shù)據(jù),如果文件中沒有輸入的學號,給出相應的提示信息.3.用編輯軟件建立一個名為“d1.txt”的文本文件存入磁盤,文件中有18個數(shù)。從磁盤上讀入該文件,并用文件中的前9個數(shù)和后9個數(shù)分別作為兩個3*3矩陣的元素。求這兩個矩陣的和,并把結果按每行3個數(shù)據(jù)寫入文本文件“d2.txt”。用DOS命令TYPE顯示d2.txt。 選做題: 1.建立兩個由有序的整數(shù)組成的二進制文件f1和f2,然后將它們合并為一個新的有序文件f3。 2.編寫程序,功能是從磁盤上讀入一個文本文件,將文件內容顯示在屏幕上,每一行的前面顯示行號。 1.ENIAC(Electronic Numerical Integrator 和 Computer): 第一臺真正意義上的數(shù)字電子計算機。 2.最早批量生產的大型主機是UNIVAC.3.ALGOL:第一個結構化程序設計語言, PDP-8:DEC公司推出第一臺小型計算機。4.1969 年4月7日: 第一個網絡協(xié)議標準RFC推出。 5.按應用層次劃分,服務器可分為入門級服務器、工作組級服務器、部門級服務器、企業(yè)級服務器。 入門級服務器特性: 1·有一些基本硬件的冗余,如硬盤、電源、風扇等,但不是必須的2·通常采用SCSI接口硬盤,現(xiàn)在也有采用SATA串行接口的3·部分部件支持熱插撥,如硬盤和內存等,這些也不是必須的4·通常只有一個CPU,但不是絕對,如Dell的入門級服務器內置了最新的四核英特爾(R)至強(R)處理器 5·內存容量最大支持16GB。 有部分人認為入門級服務器與“PC服務器”等同,當然可以提供E-mail服務。入門級服務器是最基礎的一類服務器,也是最低檔的服務器;工作組服務器是一個比入門級高一個層次的服務器,但仍屬于低檔服務器之類;部門級服務器是屬于中檔服務器之列,一般都是支持雙以CPU上的對稱處理器結構,具備比較完全的硬件配置;企業(yè)級服務器是屬于高檔服務器行列。 按照體系架構來區(qū)分,服務器主要分為三類: CISC、RISC、VLIM。 所謂刀片服務器(準確的說應叫做刀片式服務器)是指在標準高度的機架式機箱內可插裝多個卡式的服務器單元,實現(xiàn)高可用和高密度。 機架式服務器這種結構的多為功能型服務器。體積較大,空間利用率不高 6.數(shù)據(jù)壓縮一些機制是可逆的,這樣就可以恢復原始的數(shù)據(jù),這種機制稱為無損數(shù)據(jù)壓縮;另外一些機制為了實現(xiàn)更高的壓縮率允許一定程度的數(shù)據(jù)損失,這種機制稱為有損數(shù)據(jù)壓縮。數(shù)據(jù)壓縮能夠實現(xiàn)是因為多數(shù)現(xiàn)實世界的數(shù)據(jù)都有統(tǒng)計冗余http://exam.shangxueba.com/papertest_view.aspx?id=580695&date=#51305_itemPageIndex_2 《全國計算機等級考試二級教程——C語言程序設計》 課后題及參考答案 第一章 程序設計基本概念 1.1 在TRUBO C環(huán)境中用RUN命令運行一個C程序時,所運行的程序的后綴是______。答案:.exe 1.2 C語言源程序文件的后綴是_____,經過編譯后,生成文件的后綴是_____,經過連接后,生成文件的后綴是_____。 答案:.c.obj.exe 1.3 結構化程序由_____、_____、_____三種基本結構組成。答案:順序、選擇、循環(huán) 第二章 C程序設計的初步知識 一、選擇題 2.1 以下選項中正確的整型常量是 A)12.B)-20 C)1,000 D)4 5 6 答案:B 2.2 以下選項中正確的實型常量是 A)0 B)3.1415 C)0.329×10(2)(10的2次方) D).871 答案:D 2.3 以下選項中不正確的實型常量是 A)2.607E-1 B)0.8103e 2 C)-77.77 D)456e-2 答案:B 2.4 以下選項中不合法的用戶標識符是 A)abc.c B)file C)Main D)PRINTF 答案:A 2.5 以下選項中不合法的用戶標識符是 A)_123 B)printf C)A$ D)Dim 答案:C 2.6 C語言中運算對象必需是整型的運算符是 A)% B)/ C)! D)** 答案:A 2.7 可在C程序中用作用戶標識符的一組標識符是 A)void define WORD B)as_b3 _123 If C)For -abc case D)2c DO SIG 答案:B 2.8 若變量已正確定義并賦值,符合C語言語法的表達式是 A)a=a+7; B)a=7+b+c,a++ C)int(12.3%4) D)a=a+7=c+b 答案:B 2.9 以下敘述中正確的是 A)a是實型變量,C允許進行以下賦值a=10,因此可以這樣說:實型變量中允許存放整型值。 B)在賦值表達式中,賦值號右邊既可以是變量也可以是任意表達式。 C)執(zhí)行表達式a=b后,在內存中a和b存儲單元中的原有值都將被改變,a的值已由原值改變?yōu)閎的值,b的值由原值變?yōu)?。 D)已有a=3,b=5。當執(zhí)行了表達式a=b,b=a之后,已使a中的值為5,b中的值為3。 答案:B 2.10 以下敘述中正確的是 A)在C程序中無論是整數(shù)還是實數(shù),只要在允許的范圍內都能準確無誤的表示。 B)C程序由主函數(shù)組成。 C)C程序由函數(shù)組成。 D)C程序由函數(shù)和過程組成。 答案:C 2.11 TURBO C中int類型變量所占字節(jié)數(shù)是 A)1 B)2 C)3 D)4 答案:B 2.12 不合法的八進制數(shù)是 A)0 B)028 C)077 D)01 答案:B 2.13 不合法的十六進制數(shù)是 A)oxff B)0Xabc C)0x11 D)0x19 答案:A 二、填空題 2.14 若k為int整型變量且賦值11。請寫出運算k++后表達式的值A)_____和變量的值B)_____。 答案: 11、12 2.15 若x為double型變量,請寫出運算x=3.2,++x后表達式的值A)_____和變量的值B)_____。 答案:4.2、4.2 2.16 函數(shù)體由符號____開始,用符號____結束。函數(shù)體的前面是____部分,其后是____部分。 答案:{、}、定義、執(zhí)行 2.17 C語言中的標識符可分為____、____、和預定義標識符三類。 答案:關鍵字、用戶標識符 2.18 在C語言程序中,用關鍵字____定義基本整型量,用關鍵字____定義單精度實型變量,用關鍵字___定義雙精度實型變量。 答案:int、float、double 2.19 把a1、a2定義成單精度實型變量,并賦初值1的定義語句是____。 答案:float a1=1.0,a2=1.0; 2.20 C程序中定義的變量,代表內存中的一個____。 答案:存儲單元 2.21 表達式3.5+1/2的計算結果是____。 答案:3.5 2.22 對以下數(shù)學式,寫出三個等價的C語言表達式____、____、____。 a×b —— c 答案:a*b/c、a/c*b、b/c*a 2.23 表達式s=10應當讀做“____”。 答案:將10賦給變量s 2.24 計算機中內存儲器的最小存儲單位稱____,其中能容納的數(shù)是____。 答案:位、0或1 2.25 通常一個字節(jié)包含____個二進制位。在一個字節(jié)中能存放的最大(十進制)整數(shù)是____,它的二進制數(shù)的形式是____;最?。ㄊM制)整數(shù)是____,它的二進制數(shù)的形式是____。 答案:8、255、1111 1111、-128、1000 0000 2.26 當計算機用兩個字節(jié)存放一個整數(shù)時,其中能存放的最大(十進制)整數(shù)是____、最?。ㄊM制)整數(shù)是____,它的二進制數(shù)的形式是____。 答案:65535、-32768、1000 0000 0000 0000 2.27 在C語言中整數(shù)可用____進制數(shù)、____進制數(shù)和____進制數(shù)三種數(shù)制表示。 答案:十、八、十六 三、上機改錯題 2.24 【分析與解答】 第1行的錯誤: (1)include是一個程序行,因此在此行的最后不應當有分號(;)。 (2)include程序行中后面的stdio.h是一個文件名,按規(guī)定,文件名應當放在一對雙引號(″ ″)內,或放在一對尖括號(< >)內。 第2行的錯誤: (1)main()是主函數(shù)的起始行,不是語句,因此最后不應當有分號(;)。 (2)在同一行上的/ * main function * / 顯然是注釋;C語言規(guī)定:注釋由/*開頭,由*/結束,但在*號和/之間不得插入任何空格,而在此處“/ *”和“/ *”之間存在空格,因此,/ * main function * /的寫法式是錯誤的,而應寫成:/* main function */。 第3行的錯誤: (1)在主函數(shù)的起始行main()的后面是函數(shù)體,函數(shù)體由左花括號({)開始。但在函數(shù)體的第一行:float的前面缺少了左花括號({)。 (2)在同一行上的/* /*r is radius*/, /* s is area of circular*/ */ 顯然是注釋;C語言規(guī)定:注釋由/*開頭,由*/結束,并且開頭的/*將去找最近的*/去配對,因此在/* /*r is radius*/中,第一個/*與最后的那個*/配上了對,結果緊跟在后面的那個逗號(,)落在了注釋的外面,而構成了一個多余符號,為此,在編譯時將報告“語法錯”。 第6行的錯誤: (1)printf(″%f \[KG-*3]n″,s)應當是一條輸出語句,但在最后缺少了一個分號。 (2)printf(″%f \[KG-*3]n″,s);是程序的最后一條語句,程序應當結束;但缺少了程序體結束所需的右花括號(});此右花括號可以放在printf(″%f \[KG-*3]n″,s);的后面,也可以放在printf(″%f \[KG-*3]n″,s);的下一行上。 2.25 【分析與解答】 第1行的錯誤:在include行中的文件名應該是stdio.h,而不是stdio.a。 第2行的錯誤:在main的后面缺少一對圓括號。 第4行的錯誤:在c=40的后面缺少分號。 第6行的錯誤:在printf(″%f \〖KG-*3〗n″,v)的后面缺少分號。 第三章、順序結構 一、選擇題 3.1 若a、b、c、d都是int類型變量且初值為0,以下選項中不正確的賦值語句是 A)a=b=c=100; B)d++; C)c+b; D)d=(c=22)-(b++); 答案:C 3.2 以下選項中不是C語句的是 A){int i;i++;printf(“%d”, i);} B); C)a=5,c=10 D){;} 答案:C 3.3 以下合法的C語言賦值語句是 A)A=B=58 B)k=int(a+b); C)a=58,b=58 D)--i; 答案:D 3.4 以下程序的輸出結果是 A)0 B)1 C)3 D)不確定的值 main() { int x=10,y=3; printf(“%d”, y=x/y); } 答案:C 3.5 若變量已正確說明為int類型,要給a、b、c輸入數(shù)據(jù),以下不正確的輸入語句是 A)read(a,b,c); B)scanf(“%d%d%d”,a,b,c); C)scanf(“%D%D%D”,&a,&b,&c); D)scanf(“%d%d%d”,&a,&b,&c); 答案:D 3.6 若變量已正確說明為float類型,要通過以下賦值語句給a賦予 10、b賦予 22、c賦予33,以下不正確的輸入形式是 A)10 B)10.0,22.0,33.0 C)10.0 D)10 22 scanf(“%f %f %f”, &a, &b, &c); 答案:B 3.7 若變量以正確定義,要將a和b中的數(shù)進行交換,下面不正確的語句組是 A)a=a+b,b=a-b,a=a-b; B)t=a,a=b,b=t; C)a=t;t=b;b=a; D)t=b;b=a;a=t; 答案:C 3.8 若變量已正確定義,以下程序段的輸出結果是 A)輸出格式說明與輸出項不匹配,輸出無定值 B)5.17000 C)5.168000 D)5.169000 x=5.16894; printf(“%f”,(int)(x*1000+0.5)/(float)1000); 答案:D 3.9 若有以下程序段,c3中的值是 A)0 B)1/2 C)0.5 D)1 int c1=1,c2=2,c3; c3=c1/c2; 答案:A 3.10 若有以下程序段,其輸出結果是 A)0,0,-10 B)0,0,5 C)-10,3,-10 D)3,3,-10 int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf(“%d,%d,%d”,a,b,c); 答案:B 3.11 當運行以下程序時,在鍵盤上從第一列開始輸入9876543210 A)a=98,b=765,c=4321 B)a=10,b=432,c=8765 C)a=98,b=765.000000,c=4321.000000 D)a=98,b=765,c=4321.0 main(){ int a;float b,c; scanf(“%2d%3f%4f”,&a,&b,&c); printf(“a=%d,b=%f,c=%f”,a,b,c);} 答案:C 3.12 以下程序的輸出結果是 A)a=%2,b=%5 B)a=2,b=5 C)a=%%d,b=%%d D)a=%d,b=%d main(){ int a=2,b=5; printf(“a=%%d,b=%%d”,a,b);} 答案:D 3.13 若int類型占兩個字節(jié),則以下程序段的輸出是 A)-1,-1 B)-1,32767 C)-1,32768 D)-1,65535 int a=-1; printf(“%d,%u”,a,a); 答案:D 3.14 以下程序段的輸出是 A)*496 * B)* 496* C)*000496* D)輸出格式符不合法 int x=496; printf(“*%-06d*”,x); 答案:A 3.15 以下程序段的輸出是 A)|3.1415| B)| 3.0| C)| 3| D)| 3.| float a=3.1415; printf(“|%6.0f|”,a); 答案:C 3.16 以下程序段的輸出是 A)|2345.67800| B)|12345.6780| C)|12345.67800| D)|12345.678| printf(“|%10.5f|”,12345.678); 答案:C 3.17 以下程序段的輸出是 A)*0000057.66* B)* 57.66* C)*0000057.67* D)* 57.67* float a=57.666; printf(“*%010.2f*”,a); 答案:C 3.18 若從終端輸入以下數(shù)據(jù),要給變量C賦以283.19,則正確的輸入語句是 A)scanf(“%f”,c); B)scanf(“%8.4f”,&c); C)scanf(“%6.2f”,&c); D)scanf(“%8”,&c); 283.1900 答案:由于印刷錯誤,本題沒有正確答案。改正意見: 把選項A改為:scanf(“%f”,&c);或者把選項D改為:scanf(“%8f”,&c);則可分別選擇A或者D為正確答案。 3.19 若變量已正確說明,要求用以下語句給a賦予3.12、給b賦予9.0,則正確的輸入形式是(□代表空格) A)3.12□□9.0 B)a=□□3.12b=□□□9 C)a=3.12,b=9 D)a=3.12□□,b=9□□□□ scanf(“a=%f,b=%f”,&a,&b); 答案:C 3.20 以下程序的輸出結果是 A)9 8 B)8 9 C)6 6 D)以上三個都不對 #include “math.h” main(){ double a=-3.0, b=2; printf(“%3.0f %3.0f”,pow(b,fabs(a)),pow(fabs(a),b));} 答案:B 二、填空題 3.21 若有以下定義,請寫出以下程序段中輸出語句執(zhí)行后的輸出結果。(1)____(2)____(3)____ int i=-200,j=2500; printf(“(1)%d %d”,i,j); printf(“(2)i=%d, j=%d”,i,j); printf(“(3)i=%d j=%d”,i,j); 答案: -200 2500 i=-200, j=2500 i=-200 j=2500 3.22 變量i、j、k已定義為int類型并有初值0,用以下語句進行輸入時 scanf(“%d”,&i);scanf(“%d”,&j);scanf(“%d”,&k);當執(zhí)行第一個輸入語句,從鍵盤輸入: 12.3 則變量i、j、k的值分別是____、____、____。 答案:12、0、0 3.23 復合語句在語法上被認為是____。空語句的形式是____。 答案:一條語句、; 3.24 C語句的最后用____結束。 答案:; 3.25 以下程序段,要求通過scanf語句給變量賦值,然后輸出變量的值。寫出運行時給k輸入100,給a輸入25.81,給x輸入1.89234時的三種可能的輸入形式____、_____、____。 int k;float a;double x; scanf(“%d%f%lf”,&k,&a,&x); printf(“k=%d,a=%f,x=%f”,k,a,x); 答案: (1)100 25.81 1.89234 (2)100 25.81 (3)100 int x=0177; printf(“x=%3d,x=%6d,x=$%6o,x=%6x,x=%6u”,x,x,x,x,x); 答案:x=127,x= 127,x= 177,x= 7f,x= 127 3.27 以下程序段的輸出結果是____。 int x=0177; printf(“x=%-3d,x=%-6d,x=$%-06d,x=$%06d,x=%%06d”,x,x,x,x,x); 答案: 27、x=127,x=127,x=$127,x=$000127,x=%06d 3.28 以下程序段的輸出結果是____。 double a=513.789215; printf(“a=%8.6f,a=%8.2f,a=%14.8f,a=%14.8lf”,a,a,a,a);答案:a=513.789215,a= 513.79,a= 513.78921500,a= 513.78921500 三、編程題和改錯題 3.16 【分析與解答】 (1)主函數(shù)名main后應有一對圓括號。(2)變量定義語句中,v的前面缺逗號。 (3)第三行的printf語句用以提示輸入,但是原樣輸出的字符串沒有用雙引號括起來;另外,從輸入的形式看,輸入的數(shù)據(jù)緊跟在提示之后,因此,printf格式串中最后不應該有換行符——\n。 (4)因為輸入項a、b、c從定義和計算結果來看都是double類型,因此,第四行scanf語句格式串中的格式說明不應當用%d而應當用%lf;且每一個變量之前應該加地址運算符&。 (5)第七行的printf語句中應當把%d都改成%lf或%f;按輸出要求在格式串中應添加相應的原樣輸出的字符;因為下一個printf的輸出從新的一行開始,因此在本輸出語句的格式串的最后應當加換行符——\n。 (6)第八行的printf語句中應當把格式串整理合并放在輸出項的前面,輸出項放在后面,%d都改成%lf或%f;中間的\n刪去。 (7)請讀者自己寫出修改后的程序,并上機調試。 3.17【分析與解答】 (1)分析:可用算術式560÷60把分鐘換算成小時和分鐘,商數(shù)就是小時數(shù),余數(shù)就是分鐘數(shù)。 (2)確定變量的名字和定義變量的類型:在程序中把小時數(shù)放在變量h中,把分鐘數(shù)放在變量m中。這兩個變量的類型可以是整型(本題中采用整型),也可以是實型。 (3)確定所用算法:求〖SX()560〖〗60〖SX〗〗的商數(shù),在C語言中可以用整除的算法,語句是h=560/60。求余數(shù)可用求余運算符 %:560%60,其值放入變量m中的語句是:m=560%60。(4)設計輸出格式。若輸出的形式定為:小時:分鐘,則按此形式設計輸出語句。(5)把以上內容放在主函數(shù)的一對花括號中。(6)編寫程序如下: main() { int h, m; h=560/60; m=560%60; printf(″The result: %3d : %3d\n″, h,m); } 運行結果是: The result: : 20 3.18 【分析與解答】 (1)確定變量的名字和定義變量的類型。若用a存放1500,用b存放350;用q存放商數(shù),用r存放余數(shù),所有變量應定義成int類型。 (2)設計輸入語句從終端輸入1500和350;在輸入語句之前,應當設計一個輸出語句,用以提示輸入。(3)可用整除求商數(shù),結果放在變量q中??捎们笥噙\算符%求兩數(shù)之余數(shù),結果放在變量r中。(4)設計輸出語句。輸出a、b、q、r。 (5)把以上內容放在主函數(shù)的一對花括號中。 本題的程序與3.30相似,請讀者參考上題并根據(jù)本題的解釋自己編程,并上機調試。 3.19 【分析與解答】 (1)定義4個雙精度變量a、b、c和ave,變量a、b、c分別存放讀入的3個雙精度數(shù),ave存放它們的平均值。 (2)設計輸入語句,以及在此之前用于提示輸入的(printf)語句。(3)設計求平均值的算法,把所求得的平均值放入變量ave中。 (4)設計把變量ave中的數(shù),從小數(shù)點后第二位數(shù)進行四舍五入的算法?,F(xiàn)舉例說明:若ave中的數(shù)為123.4644,為了保留此值小數(shù)點后一位,可用表達式:(int)(123.4644*10)/10.0;依次推算,為了保留此值小數(shù)點后二位,可用表達式:(int)(123.4644*100)/100.0;其他依此類推。 (5)若要求對小數(shù)點后第二位數(shù)進行四舍五入,則可對原數(shù)加0.05后再進行以上運算。如要求保留123.4644小數(shù)點后一位且對第二位數(shù)進行四舍五入,可用表達式:(int)((123.467+0.05)*10)/10.0。注意:分母一定要用實數(shù)10.0而不能用整數(shù)10,否則就變成整除了;若要求保留123.4644小數(shù)點后兩位且對第三位數(shù)進行四舍五入,可用表達式:(int)((123.467+0.005)*100)/100.0;其他依此類推。(6)設計輸出語句。輸出a、b、c和ave。(7)把以上內容放在主函數(shù)的一對花括號中。(8)編寫程序如下: main() { double a,b,c,ave; printf(″Enter a ,b ,c : ″); scanf(″%lf%lf%lf″, &a, &b, &c); ave=(a+b+c)/3; printf(″ave=%f\n″, ave); /*用以比較四舍五入前后的數(shù)據(jù)*/ ave=(int)((ave+0.05)*10)/10.0; printf(″a=%f, b=%f, c=%f, ave=%f\n″, a,b,c,ave); } 3.20 【分析與解答】 (1)關于對變量中的數(shù)進行交換的算法請參考3.7題中的解釋和《教程》中有關的例題。 (2)定義4個整型變量a、b、c和t,變量a、b、c分別存放讀入的3個整數(shù),t用作臨時存儲單元。(3)設計輸入語句,以及在此之前用于提示輸入的(printf)語句。(4)輸出a、b、c中的值,以便于比較。(5)交換的步驟如下: ① 把c中的值賦給t。 ② 把b中的值賦給c。 ③ 把a中的值賦給b。 ④ 把t中的值賦給a。 經過以上步驟,已按要求進行了交換。(6)輸出a、b、c中的值。(7)編寫程序如下: main() { int a, b, c, t; printf(″Enter a, b, c :\n″); scanf(″%d%d%d″,&a,&b,&c); printf(″(1)a=%d,b=%d,c=%d\n″,a,b ,c); t=c;c=b;b=a;a=t; printf(″(2)a=%d,b=%d,c=%d\n″,a,b,c); } 第四章、選擇結構 一、選擇題 4.1 下列運算符中優(yōu)先級最高的運算符是 A)! B)% C)-= D)&& 答案:A 4.2 下列運算符中優(yōu)先級最低的運算符是 A)|| B)!= C)<= D)+ 答案:A 4.3 為表示關系x≥y≥z,應使用的C語言表達式是 A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 答案:A 4.4 設a、b和c都是int型變量,且a=3,b=4,c=5;則以下的表達式中,值為0的表達式是 A)a&&b B)a<=b C)a||b+c&&b-c |1) 答案:D 4.5 以下程序的輸出結果是 A)0 B)1 C)2 D)3 main() { int a=2,b=-1,c=2; if(a if(b<0)c=0; else c+=1; printf(“%d”,c); } D)!((a 答案:C 4.6 以下程序的輸出結果是 A)1 B)2 C)3 D)4 main(){ int w=4,x=3,y=2,z=1; printf(“%d”,(w 答案:A 4.7 若執(zhí)行以下程序時從鍵盤上輸入3和4,則輸出結果是 A)14 B)16 C)18 D)20 main(){ int a,b,s; scanf(“%d%d”,&a,&b); s=a; if(a s*=s; printf(“%d”,s);} 答案:B 4.8 下面的程序片段所表示的數(shù)學函數(shù)關系是 -1(x<0)A)y= 0(x=0) 1(x>0) 1(x<0)B)y=-1(x=0) 0(x>0) 0(x<0)C)y=-1(x=0) 1(x>0) -1(x<0)D)y= 1(x=0) 0(x>0) y=-1;if(x!=0)y=1; if(x>0)y=1;else y=0;答案:A 4.9 運行以下程序后,輸出 A)**** B)&&&& C)####&&&& D)有語法錯誤不能通過編譯 main(){ int k=-3; if(k<=0)printf(“****”) else printf(“&&&&”);} 答案:D 4.10 若a和b均是正整型變量,以下正確的switch語句是 A)switch(pow(a,2)+pow(b,2)) { case 1: case 3: y=a+b;break; case 0: case 5: y=a-b; } B)switch(a*a+b*b); { case 3: case 1: y=a+b;break; case 0: y=b-a;break; } C)switch a { default: x=a+b; case 10: y=a-b;break; case 11: x=a*d;break; } D)switch(a+b) { case10 : x=a+b;break; case11 : y=a-b;break; } 答案:沒有正確答案。如果C選項改為: switch(a){ default: x=a+b; case 10: y=a-b;break; case 11: x=a*b;break;} 則答案可以選擇C 二、填空題 4.11 C語言中用____表示邏輯值“真”,用____表示邏輯值“假”。 答案:非0、0 4.12 C語言中的關系運算符按優(yōu)先級別是____、____、____、____。 答案:>、<、>=、<=、==、!= 4.13 C語言中的邏輯運算符按優(yōu)先級別是____、____、____。 答案:!、&&、|| 4.14 C語言中的關系運算符和邏輯運算符的優(yōu)先級別是____、____、____、____、____、____、____。 答案:!、<、>、==、!=、&&、|| 4.15 C語言中邏輯運算符____的優(yōu)先級高于算術運算符。 答案:! 4.16 將下列數(shù)學式改寫成C語言的關系表達式或邏輯表達式A)____B)____。 A)a=b或a B)|x|>4 答案:A)a==b||a main(){ int a=100; if(a>100)printf(“%d”,a>100); else printf(“%d”,a<=100);} 答案:1 4.18 請寫出與以下表達式等價的表達式A)____B)____。A)!(x>0) B)!0 答案:A)x<=0 B)1 4.19 當a=1,b=2,c=3時,以下if語句執(zhí)行后,a、b、c中的值分別為____、____、____。 if(a>c) b=a;a=c;c=b; 答案:3、2、2 4.20 若變量已正確定義,以下語句段的輸出結果是____。 x=0;y=2;z=3; switch(x) { case 0: switch(y==2) { case 1: printf(“*”);break; case 2: printf(“%”);break; } case 1: switch(z) { case 1: printf(“$”); case 2: printf(“*”);break; default : printf(“#”); } } 答案:*# 三、編程題 4.21 【分析與解答】 相關內容請參考《教程》4.2節(jié)和4.4節(jié)。(1)改寫如下: switch(a/10) { default : m=5;break; case 0 : case 1 : case 2 : m=1;break; case 3 : m=2;break; case 4 : m=3;break; case 5 : m=4;break; }; (2)本題中對a的判斷條件有一定的規(guī)律可尋;關鍵是,在switch語句后的表達式中利用了a/10,從而簡化了case標號。 4.22 【分析與解答】 編寫本題的程序,首先要解決如何計算學生當前的年齡(設存放實足年齡的變量是age)。(1)如果當前的月份大于生日的月份,則學生的實足年齡age=y1-y0。 (2)如果當前的月份等于生日的月份,就要看日數(shù),當前的日數(shù)大于或等于生日的日數(shù),則學生的實足年齡age=y1-y0。 (3)如果不滿足以上的條件,就可斷定當前的日期沒有超過生日日期,就是說學生的年齡應當是age=y1-y0-1。 以上3條,用C語言可以描述如下: if((m1>m0)[JB>1|][JB>1|](m1==m0&&d1>=d0))age=y1-y0; else age=y1-y0-1; 讀者可以參考以上語句寫出程序,也可以根據(jù)分析寫出與此形式不同的語句和程序。 4.23【分析與解答】 (1)若輸入的整數(shù)a是奇數(shù),輸出 dd number,是偶數(shù)輸出:even number。 (2)若一個a是偶數(shù),它就能被2除盡,即a%2==0,輸出even number;若是奇數(shù),它就不能被2除盡,即a%2!〖KG-*2〗=0,輸出odd number。 讀者可以參考以上給出的算法,寫出相應的C語句,并編寫出完整的程序。 4.24 【分析與解答】 本題的主要算法是從3個數(shù)中找出最大的那個數(shù)。假定始終把最大的數(shù)放在變量max中。(1)假定a中的數(shù)最大,把a賦給max。 (2)用b去和max比較,若b大于max,則把b賦給max;若不大于max,則什么也不做。(3)用c去和max比較,若c大于max,則把c賦給max;若不大于max,則什么也不做。(4)經過以上操作,max中已放入了a、b、c三個數(shù)中的最大數(shù),輸出max即可。 讀者可以參考以上給出的算法,寫出相應的C語句,并編寫出完整的程序。 4.25 【分析與解答】 (1)本題已給出了非常明確的條件,只要寫出正確的條件判斷語句就可基本完成程序的編寫。 (2)由給出的函數(shù)可知,只有x的值在規(guī)定的范圍內時,才求出y的值,因此程序應當對輸入的x進行判斷,若超過范圍就不求y的值。 (3)現(xiàn)以使用if[CD#*2]else語句為例寫出程序供參考。 main() { int x,y;printf(″Enter x : ″);scanf(″%d″, &x); if(x>-5&&x<10) { if(x==0)y=x-1; else if(x<10 && x>0)y=x+1; else if(x<0 && x>-5)y=x; printf(″x=%d y=%d\n″, x,y); } printf(″***END***\n\n″); } 第五章、循環(huán)結構 一、選擇題 5.1 以下程序段的輸出結果是 A)9 B)1 C)11 int k,j,s; for(k=2;k<6;k++,k++) { s=1; for(j=k;j<6;j++)s+=j; } printf(“%d”, s); 答案:D 5.2 以下程序段的輸出結果是 A)12 B)15 C)20 int i,j,m=0; for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4)m++; printf(“%d”, m); 答案:C 5.3 以下程序段的輸出結果是 A)10 B)9 C)10 D)9 D)10 D)25 int n=10; while(n>7) { n--; printf(“%d”, n); } 答案:B 5.4 以下程序段的輸出結果是 A)1 B)3 0 C)1-2 int x=3; do { printf(“%3d”,x-=2);} while(!(--x)); 答案:C 5.5 以下程序段的輸出結果是 A)15 B)14 C)不確定 main() { int i,sum; for(i=1;i<6;i++)sum+=sum; printf(“%d”,sum); } 答案:C 5.6 以下程序段的輸出結果是 A)741 B)852 C)963 main() { int y=10; for(;y>0;y--) if(y%3==0) { printf(“%d”,--y);continue; } 答案:B 5.7 若x是int型變量,以下程序段的輸出結果是 A)**3 ##4 **5 B)##3 **4 ##5 C)##3 **4##5 D)**3##4 **5 for(x=3;x<6;x++) printf((x%2)?(“**%d”):(##%d“),x); D)死循環(huán) D)0 D)875421 } 答案:D 5.8 以下程序的輸出結果是 A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ main(){ int i; for(i=1;i<=5;i++) { if(i%2)printf(”*“); else contionue; printf(”#“); } printf(”$“);} 答案:A 5.9 以下敘述正確的是 A)do_while語句構成的循環(huán)不能用其它語句構成的循環(huán)來代替。 B)do_while語句構成的循環(huán)只能用break語句退出。 C)用do_while語句構成循環(huán)時,只有在while后的表達式為非零時結束循環(huán)。 D)用do_while語句構成循環(huán)時,只有在while后的表達式為零時結束循環(huán)。 答案:D 5.10 以下程序的輸出結果是 A)39 81 B)42 84 C)26 68 D)28 70 main(){ int x,i; for(i=1;i<=100;i++) { x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf(”%d “, x); } printf(”“);} 答案:D 二、填空題 5.11 當執(zhí)行以下程序段后,i的值是____、j的值是____、k的值是____。 int a,b,c,d,i,j,k;a=10;b=c=d=5;i=j=k=0;for(;a>b;++b)i++;while(a>++c)j++;do k++;while(a>d++); 答案:5、4、6 5.12 以下程序段的輸出結果是____。 int k,n,m;n=10;m=1;k=1;while(k<=n)m*=2;printf(”%d“,m); 答案:死循環(huán) 5.13 以下程序的輸出結果是____。 main(){ int x=2; while(x--); printf(”%d“,x);} 答案:-1 5.14 以下程序段的輸出結果是____。 int i=0,sum=1; do { sum+=i++;}while(i<5); printf(”%d“,sum); 答案:11 5.15 有以下程序段: s=1.0; for(k=1;k<=n;k++)s=s+1.0/(k*(k+1)); printf(”%f“,s);請?zhí)羁眨瓜旅娴某绦蚨蔚墓δ芡耆c之等同。 s=0.0; ____; k=0; do { s=s+d; ____; d=1.0/(k*(k+1)); } while(____); printf(”%f“,s); 答案:d=1.0、k++、k<=n 5.16 以下程序的功能是:從鍵盤上輸入若干個學生的成績,統(tǒng)計并輸出最高成績和最低成績,當輸入負數(shù)時結束輸入。請?zhí)羁铡?/p> main() { float x,amax,amin; scanf(”%f“,&x); amax=x;amin=x; while(____) { if(x>amax) amax=x; if(____) amin=x; scanf(”%f“,&x); } printf(”amax=%famin=%f“,amax,amin); } 答案:x>=0、x 三、編程題 5.17【分析與解答】 (1)本題的基本算法是求累加值。累加項的值有規(guī)律的遞增,每一項的絕對值比前一項增2,因此可以利用循環(huán)的控制變量的遞增來得到累加項的絕對值。例如: for(i=1;i<=101;i+=2)? (2)按所給的算式可以看到,累加項的符號是在交叉改變的,為此應當在循環(huán)體內設 置一個變量,使它的符號按此規(guī)律交叉改變,這可用:s=-s;來實現(xiàn),s的初值為1;當s的值為1時,賦值后s中新的值為-1,當s的值為-1時,賦值后s中新的值為1。用s去乘累加項,將使累加項的符號也隨之有規(guī)律地改變。(3)若累加和放在變量sum中,累加項放在變量t中,按照以上敘述,for循環(huán)體內的語句可以設計如下: s=-s;t=s*i;sum=sum+t;(4)sum的值是51。 (5)請讀者自己對變量做出正確的定義并賦初值,設計輸出語句,完善程序。 5.18 【分析與解答】 (1)本題的基本算法是求累加值。累加項的分子部分都是1;分母的值有規(guī)律的遞增,依次為1!、2!、?、n!,即,若第i-1項的累加項為 t(i-1),則第i項的累加項是 t(i-1)*i,在程序中可用表達式:t=t/i(i從1變化到n)來表示。(2)根據(jù)以上分析,若用變量t來存放累加項,當i的值從1變化到n時,可用以下語句來實現(xiàn)累加: t=t/i;e+=t; (3)為了實現(xiàn)累加過程,以上語句應當放在循環(huán)內,循環(huán)控制變量從1變化到n。 (4)若用for循環(huán),按題目要求已指定n的值是50。若用while循環(huán),并沒有指定n的值,但已指定了循環(huán)結束的條件,當t的值小于10-4結束循環(huán)。(5)現(xiàn)例示用while循環(huán)來求e值的部分程序: i=1;e=1.0;t=1.0; while(t>=1e-4) { t=t/i; e+=t; i++; } (6)請讀者自己對變量做出正確的定義,設計輸出語句,完善程序;也可以參考此程序段,按照自己的思路獨立地完成程序。(7)e的值應當是:2.71828。 (8)根據(jù)以上分析,讀者已不難用for循環(huán)來實現(xiàn)求e值的計算。 (9)注意:在完成此程序時,不要對分母中的階乘值進行單獨計算,因為17!的值已超過long類型的最大值,更無法求到50!。 5.19【分析與解答】 (1)從1880年至2000年的年數(shù)可用一個for循環(huán)來取得。 (2)對每一年,用以上指定的條件來進行判斷,若滿足條件即為閏年,進行輸出。 (3)按輸出的要求,需要設一個變量用于統(tǒng)計一行中輸出的個數(shù),若在一行上已連續(xù)輸出了5個年數(shù),就需輸出一個換行符,使下一個輸出項在新的一行上開始;若用變量n來做此統(tǒng)計,則當表達式n%5==0時就應輸出一個換行符,同時使n重新置0值。 (4)若變量y代表年數(shù),if語句的邏輯表達式可以寫成如下: (y%4==0 && y%100!=0[JB>1|][JB>1|]y%400==0)(5)以下程序段供參考: for(y=1880;y<=2000;y++) if(y%4==0 && y%100![KG-*2]=0[JB>1|][JB>1|]y%400==0) { printf(″%d ″,y); n++; if(n%5==0) { printf(″\n″);n=0;} } (6)請讀者自己對變量做出正確的定義并賦初值,完善程序;也可以參考此程序段,按照自己的思路獨立地完成程序。從1880年至2000年有30個閏年。 5.20 【分析與解答】 (1)不難理解利用以下的for循環(huán)可以在一行上連續(xù)輸出n個*號: for(i=1;i<=n;i++)printf(″*″); printf(″\n″); 若n的值是6,則連續(xù)輸出6個*號。 (2)以上圖形是在各行上輸出數(shù)目不等的*號,只是*號的數(shù)目依次有規(guī)律地變化。在上半部分各行依次是1、3、5、7個,因此可以用以下的程序段來實現(xiàn)這樣的輸出: for(k=1;k<=7;k++,k++) { for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } 在下半部依次是5、3、1個;因此可以用以下的程序段來實現(xiàn)這樣的輸出: for(k=5;k>=1;k--,k--) { for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } 以上程序段從第一列起輸出的結果如下: * *** ***** ******* ***** *** * 現(xiàn)在我們已完成了在每行輸出指定數(shù)目的*號。 (3)輸出結果與題目要求不同,它們的區(qū)別是:按題目每一行之前有不同的空格,而這里則是所有的行都在第一列上開始輸出*號;所以接著就應當解決這一問題。(4)分析題目要求,每行第一個*號位置的縮進是有規(guī)律的,假定中間這一行第一個*號位置是在第一列,則可看出,第一至第三行的縮進分別是3、2、1個空格;而圖形下半部的縮進數(shù)則剛好相反。這可在以上循環(huán)中添加輸出連續(xù)空格的for循環(huán)來實現(xiàn),對于上半部程序如下: b=3; for(k=1;k<=7;k++,k++) { for(j=1;j<=b;j++)printf(″ ″);b--; for(i=1;i<=k;i++)printf(″*″); printf(″\n″); } (5)請讀者在理解以上給出的示例的基礎上,自己添加下半部空格的輸出。 第六章、字符型數(shù)據(jù) 一、選擇題 6.1 C語言中的簡單數(shù)據(jù)類型有 A)整型、實型、邏輯型 B)整型、實型、字符型 C)整型、字符型、邏輯型 D)整型、實型、邏輯型、字符型 答案:B 6.2 C語言中,字符(char)型數(shù)據(jù)在微機內存中的存儲形式是 A)反碼 B)補碼 C)EBCDIC碼 D)ASCII碼 答案:D 6.3 設有語句char a=''72'';,則變量a A)包含1個字符 B)包含2個字符 C)包含3個字符 D)說明不合法 答案:A 6.4 C語言中不合法的字符常量是 A)''
第三篇:計算機c語言
第四篇:《全國計算機等級考試二級教程C語言程序設計》