![C語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/eed8b962-56ab-4bbb-a45a-81551d19a22a/eed8b962-56ab-4bbb-a45a-81551d19a22a1.gif)
![C語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/eed8b962-56ab-4bbb-a45a-81551d19a22a/eed8b962-56ab-4bbb-a45a-81551d19a22a2.gif)
![C語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/eed8b962-56ab-4bbb-a45a-81551d19a22a/eed8b962-56ab-4bbb-a45a-81551d19a22a3.gif)
![C語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/eed8b962-56ab-4bbb-a45a-81551d19a22a/eed8b962-56ab-4bbb-a45a-81551d19a22a4.gif)
![C語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/15/eed8b962-56ab-4bbb-a45a-81551d19a22a/eed8b962-56ab-4bbb-a45a-81551d19a22a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C 語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書(內(nèi)部使用)主講教師編寫前言C 語言是一種編程靈活、特色鮮明的程序設(shè)計(jì)語言,是計(jì)算機(jī)專業(yè)學(xué)生的基礎(chǔ)課程,學(xué)好這種語言可以為后續(xù)的面向?qū)ο蟮恼Z言打好堅(jiān)實(shí)的基礎(chǔ),C 語言除了學(xué)習(xí)必須的基本知識:如概念、方法和語法規(guī)則之外,更重要的是進(jìn)行實(shí)訓(xùn),以提高學(xué)習(xí)者的動手和編程能力,這才是學(xué)習(xí)語言的最終目的,結(jié)合多年來的教學(xué)經(jīng)驗(yàn),根據(jù)學(xué)生的學(xué)習(xí)情況,為配合教學(xué)過程,使“項(xiàng)目教學(xué)法”能在本質(zhì)上促使學(xué)生有更大進(jìn)步, 特編寫了該 C 語言程序設(shè)計(jì)實(shí)訓(xùn)指導(dǎo)書,以在實(shí)訓(xùn)過程中給學(xué)生提供幫助。本書分為三個部分:實(shí)訓(xùn)總要求、實(shí)訓(xùn)模塊和項(xiàng)目拓展實(shí)例。第一部分為實(shí)訓(xùn)總要求,目的是為了讓學(xué)生編寫規(guī)范的代
2、碼,從開始程序設(shè)計(jì)就進(jìn)行規(guī)范練習(xí),為以后工作打下良好的基礎(chǔ)。第二部分為實(shí)訓(xùn)模塊,有三個:( 1)基礎(chǔ)部分,為隨堂實(shí)訓(xùn),在分析案例的基礎(chǔ)上,使學(xué)生掌握該部分內(nèi)容的知識要點(diǎn),并能靈活運(yùn)行在實(shí)訓(xùn)中,為使學(xué)生目標(biāo)明確,在實(shí)訓(xùn)開始給學(xué)生提出實(shí)訓(xùn)目的及要求;( 2)深化部分,為綜合實(shí)訓(xùn),為提高學(xué)生的學(xué)習(xí)積極性,同時為培養(yǎng)軟件開發(fā)的合作精神,在隨堂實(shí)訓(xùn)完成的基礎(chǔ)上,給學(xué)生設(shè)計(jì)相對該內(nèi)容綜合運(yùn)用的實(shí)例,組織學(xué)生進(jìn)行分組討論,把每組的討論結(jié)果同大家分享,由學(xué)生和老師共同給出評價,該方法可以豐富學(xué)生解決問題的方法,拓寬思路;( 3)課程設(shè)計(jì),為期末的課程設(shè)計(jì),是對整個內(nèi)容的一個綜合設(shè)計(jì),可以使學(xué)生從軟件開發(fā)的角度
3、開始思考問題、解決問題,形式仍然為分組設(shè)計(jì),各小組設(shè)定項(xiàng)目經(jīng)理、技術(shù)經(jīng)理和成員,一般為5 人一組,由項(xiàng)目經(jīng)理組織人員、進(jìn)行分工和協(xié)調(diào)工作,技術(shù)經(jīng)理負(fù)責(zé)開發(fā)過程中遇到的疑難問題的解決,并進(jìn)行開發(fā)的全程控制。第三部分為案例拓展實(shí)例:學(xué)生成績管理系統(tǒng)。通過該實(shí)例從一個簡單的順序結(jié)構(gòu)實(shí)例,根據(jù)內(nèi)容逐步進(jìn)行擴(kuò)充,由小到大,由淺入深,使設(shè)計(jì)的功能越來越完善,完成了分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、數(shù)組、函數(shù)、指針、結(jié)構(gòu)體和文件內(nèi)容的應(yīng)用,最后成為一個完整的設(shè)計(jì)。本書具有基礎(chǔ)性、實(shí)用性和系統(tǒng)性,可以指導(dǎo)學(xué)生按照從淺入深,從低到高的訓(xùn)練過程,逐步提高他們的編程和動手能力。編者2007 年 10 月實(shí)訓(xùn)要求及說明C 語言程序
4、設(shè)計(jì)的實(shí)訓(xùn)是學(xué)生重要的實(shí)習(xí)環(huán)節(jié)。上機(jī)實(shí)訓(xùn)不僅要求學(xué)生掌握C 語言程序設(shè)計(jì)的基本知識,更重要的是培養(yǎng)學(xué)生掌握程序設(shè)計(jì)開發(fā)的基本素質(zhì)、思維方法和技能,為學(xué)生綜合素質(zhì)的培養(yǎng)打下堅(jiān)實(shí)基礎(chǔ)。實(shí)訓(xùn)的形式為教師制定出難易適中的設(shè)計(jì)題目,學(xué)生通過分組討論進(jìn)行設(shè)計(jì),實(shí)訓(xùn)重點(diǎn)放在程序設(shè)計(jì)開發(fā)的全過程上。、總要求根據(jù)所選題目首先進(jìn)行年算法分析,根據(jù)實(shí)現(xiàn)的功能進(jìn)行數(shù)據(jù)分析,設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),同時為貫徹“程序設(shè)計(jì) =算法+數(shù)據(jù)結(jié)構(gòu)”的思想,要求學(xué)生在課下完成流程圖的設(shè)計(jì),然后根據(jù)流程圖寫出實(shí)訓(xùn)代碼。二、代碼書寫要求為保證開發(fā)團(tuán)隊(duì)的協(xié)作和后期修改能有效進(jìn)行,使學(xué)生遵照統(tǒng)一的排版風(fēng)格、注釋標(biāo)準(zhǔn)、命名規(guī)則及編碼諸原則進(jìn)行C
5、 語言編程,特提出以下規(guī)范要求??s進(jìn):1)程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)以 4個空格(Spaced為單位,不使用"TAB鍵"。2)函數(shù)體、結(jié)構(gòu)體、循環(huán)體以及分支結(jié)構(gòu)中的語句行都須采用縮進(jìn)風(fēng)格。3)所有的if、 while、 for、 do 結(jié)構(gòu)中的語句即使只有一行也須用括號括起來。3) if、while、for、do語句單獨(dú)占一行,左、右花括號也各占一行且不縮進(jìn)。例:if (superHero = theTick)printl("Spoon!");間隔:所有的標(biāo)識符都必須被空白字符包圍。例如:int theTick = 5;if (theTick = 5
6、)空行:代碼段之間須以一個空行進(jìn)行間隔;空格的位置:1 )在一個關(guān)鍵字和左括號“(”之間。注意:不要在函數(shù)名和左括號之間加空格;2)在參數(shù)列表的每個逗號“, ”之后;3)二元操作符前后。注意:一元操作符前后都不加空格。例如:int a = 10; a = a + 1; a+ ;4) for語句的每個表達(dá)式之間。例如: for (int i = 0; i < 20; i+)。代碼行:1 )不允許把多個短語句寫在一行中,即一行只寫一條語句;2)長語句、參數(shù)、表達(dá)式(超過80 個 ASCII 字符)應(yīng)分行書寫,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀。示例:# 0
7、01 perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN# 002+ STAT_SIZE_PER_FRAM ;# 003 act_task_tableSTAT_TASK_CHECK_NUMBER + index.occupied# 004= stat_poiindex.occupied;命名規(guī)則:所有的標(biāo)識符只能用字母(A-Z或a-z)和數(shù)字(0-9)。不得包含貨幣符號或其它非 AS-CII字符。1 )變量的命名應(yīng)盡可能采用有意義的名詞,力求可顧名思義。2)可以采用一個單詞或多個單詞的縮寫作為名字,縮寫單詞的每個字母都要大寫。3)對于難以使
8、用英文的情況,可以參考相關(guān)行業(yè)標(biāo)準(zhǔn),比如使用國標(biāo)。4)采用約定俗成的習(xí)慣用法。常見的習(xí)慣用法:循環(huán)變量:i、 j、 k、 m、 n長度:length數(shù)量:count位置:pos 或position下標(biāo)或索引:i 或 index設(shè)置/獲?。簊et/get大?。?size注釋:1) 為確保程序易讀性,注釋語句不得小于全部代碼行的30%。2) 說明性文件(如頭文件.h 文件、 .inc 文件、 .def 文件、編譯說明文件.cfg 等)頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說明、版本號、生成日期、作者、內(nèi)容、功能、與其它文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡要說明。3) 源文件頭部應(yīng)進(jìn)行
9、注釋,列出:版權(quán)說明、版本號、生成日期、作者、模塊目的/功能、主要函數(shù)及其功能、修改日志等。4) 函數(shù)頭部應(yīng)進(jìn)行注釋,列出:函數(shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返回值、調(diào)用關(guān)系(函數(shù)、表)等。5) 邊寫代碼邊注釋,修改代碼同時修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要刪除。6) 注釋的內(nèi)容要清楚、明了,含義準(zhǔn)確,防止注釋二義性。7) 避免在注釋中使用縮寫,特別是非常用縮寫。8) 注釋應(yīng)與其描述的代碼相近,對代碼的注釋應(yīng)放在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。9) 對于所有有物理含義的變量、常量, 如果其命名不是充分自
10、注釋的,在聲明時都必須加以注釋,說明其物理含義。變量、常量、宏的注釋應(yīng)放在其上方相鄰位置或右方。10) 數(shù)據(jù)結(jié)構(gòu)聲明(包括數(shù)組、結(jié)構(gòu)、類、枚舉等),如果其命名不是充分自注釋的,必須加以注釋。對結(jié)構(gòu)中的每個域的注釋放在此域的右方。11) 全局變量要有較詳細(xì)的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時注意 事項(xiàng)等的說明。12) 注釋與所描述內(nèi)容進(jìn)行同樣的縮排。13) 將注釋與其上面的代碼用空行隔開。14) 對變量的定義和分支語句(條件分支、循環(huán)語句等)必須編寫注釋。15)對于switch語句下的case語句,如果因?yàn)樘厥馇闆r需要處理完一個case后進(jìn)入下一個case處理,必須在該
11、case語句處理完、下一個 case語句前加上明確的注釋。三、編碼原則15) )注意運(yùn)算符的優(yōu)先級,并用括號明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級。16) 避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代。涉及物理狀態(tài)或者含有物理意義的常量,不應(yīng)直接使用數(shù)字,必須用有意義的枚舉或宏來代替。17) 去掉沒必要的公共變量。18) 仔細(xì)定義并明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。19) 明確公共變量與操作此公共變量的函數(shù)或過程的關(guān)系,如訪問、修改及創(chuàng)建等。20) 當(dāng)向公共變量傳遞數(shù)據(jù)時,要十分小心,防止賦予不合理的值或越界等現(xiàn)象發(fā)生。21) 防止局部變量與公共變量同名。22) 嚴(yán)禁使用
12、未經(jīng)初始化的變量。23) 對所調(diào)用函數(shù)的錯誤返回碼要仔細(xì)、全面地處理。24) 明確函數(shù)功能,精確(而不是近似)地實(shí)現(xiàn)函數(shù)設(shè)計(jì)。模塊一:基礎(chǔ)部分第一部分c語百的基本認(rèn)識 實(shí)訓(xùn)目的及要求 通過本次實(shí)訓(xùn)內(nèi)容,使學(xué)生對C 語言程序有一個簡單的認(rèn)識,熟悉 VC+6.0的運(yùn)行環(huán)境,掌握C 程序的執(zhí)行方法,了解程序的結(jié)構(gòu)和輸出函數(shù)等。程序 1:#include “stdio.h”main( )printf(各位同學(xué)好!很高興和大家一起學(xué)習(xí)C語言! n");運(yùn)行結(jié)果:各位同學(xué)好!很高興和大家一起學(xué)習(xí)C 語言!其中,#include stdio.h”為一編譯預(yù)處理命令,含義是文件包含,stdio.h”
13、是一頭文件,標(biāo)準(zhǔn)輸入和輸出頭文件,用來控制數(shù)據(jù)的輸入或輸出。main 是主函數(shù)的函數(shù)名,表示這是一個主函數(shù)。每一個 C 源程序都必須有,且只能有一個主函數(shù)(main 函數(shù))。 printf 的功能是把要輸出的內(nèi)容送到顯示器去顯示,本質(zhì)上也是一個函數(shù),是一個由系統(tǒng)定義的標(biāo)準(zhǔn)函數(shù)。程序2:#include “stdio.h”main( )printf(“$”n);printf( *This is a C program*n");printf( $r);)運(yùn)行結(jié)果:$*This is a C program*$程序3:任給一半徑,輸出圓的周長.#include<math.h>
14、/* include 稱為文件包含命令 */#include<stdio.h> /*擴(kuò)展名為.h的文件稱為頭文件*/main()(int r,l;/*定義兩個整數(shù)變量r和l*/printf("input r:n");/* 輸出提示信息*/scanf( "d ,&r);/*接收數(shù)據(jù)給變量r*/l=2*3.14*r;/*進(jìn)行數(shù)學(xué)運(yùn)算把面積賦值給變量s*/printf( "circle of %d is%i,l);/*輸出變量 r,l 的值*/)實(shí)訓(xùn)題目1、編一個小程序?qū)崿F(xiàn)在屏幕上輸出以下內(nèi)容:*學(xué)生成績管理系統(tǒng)*2、根據(jù)剛才的例題編寫程序
15、,通過鍵盤輸入一個三角形的三邊長,求三角形的面積(求一個 非負(fù)數(shù)算術(shù)平方根的函數(shù)為sqrt(x)。第二部分c程序分析實(shí)訓(xùn)I目的及要求通過本次實(shí)訓(xùn)內(nèi)容,使學(xué)生對 C語言程序有一個系統(tǒng)的認(rèn)識,并在此基礎(chǔ) 上掌握三種基本數(shù)據(jù)類型、部分運(yùn)算符號和常用函數(shù)的應(yīng)用,體現(xiàn)在自己動手編寫的小程序 中。程序1:求三個整數(shù)的和。#include stdio.h"/* 文件包含命令 */main( )/* 主函數(shù)*/ float f1,f2,f3,s;/*定義四個實(shí)型變量*/printf( input three floats:")/* 顯示提示信息*/scanf( %f%f%f ”,&
16、f1,&f2,&f3);/*接收三個整型變量 */s=f1+f2+f3;/*求三個變量之和,存入變量 s*/printf( sum of f1,f2,f3 is %.2f",s);/*輸出求出的和*/)運(yùn)行結(jié)果:input three floats:3 4 5sum of f1,f2,f3 is 6.00程序2:把輸入的大寫字母轉(zhuǎn)換為小寫字母。#include “stdio.h”/*文件包含命令*/main( )/* 主函數(shù) */ char ch1,ch2;/*定義兩個字符型變量*/printf( “input an upper letter:”)/*顯示提示信息*/
17、scanf(“%c”,&ch1);/*接收一個大寫字母*/ch2=ch1+32;/*把大寫字母轉(zhuǎn)換為小寫字母*/printf( “ lower of letter %c is %c”,ch1,ch2); /*輸出 */運(yùn)行結(jié)果:input an upper letter:S lower of letter S is s#include “stdio.h”main( ) int num,bit1,bit2,bit3,bit4;printf( “input a number:”) scanf(“%d”,&num);bit1=num%10;bit2=num/10%10;bit3=nu
18、m/100%10;bit4=num/1000 ;程序3:求一個四位整數(shù)的各個數(shù)據(jù)位。/*文件包含命令*/*主函數(shù) */* 定義四個實(shí)型變量*/*顯示提示信息*/*接收一個整型數(shù)據(jù)*/* 求個位數(shù)字*/*求十位數(shù)字*/*求百位數(shù)字*/*求千位數(shù)字*/printf( %d 個位:d,十位:d,百位:d,千位:d”,num,bit1,bit2,bit3,bit4); /* 輸出整數(shù)和各數(shù) 據(jù)位 */ 運(yùn)行結(jié)果:input a number:23452345 個位:5,十位:4,百位:3,千位 :2程序4:交換兩個變量的值。#include “stdio.h”main( ) int a,b,t;pri
19、ntf( “input two numbers:”)scanf(“ %d%d” ,&a,&b);printf( “a=%d,b=%d”,a,b);/*輸出交換之前變量的值*/t=a;a=b;b=t;/*交換處理*/printf( “a=%d,b=%d”,a,b);/*輸出交換之后變量的值*/運(yùn)行結(jié)果:input two numbers:34 56a=34,b=56a=56,c=34程序5:求一元二次方程的根。#include “ stdio.h ”# include “ math.h ”/*數(shù)學(xué)函數(shù)的頭文件*/main( )float a,b,c,disc,x1,x2,p,q;
20、scanf( “ a=%f,b=%f,c=%f ” ,&a,&b,&c);disc=b*b-4*a*c;p= -b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf( “ x1=%5.2f; x2=%5n.”2f,x1,x2);運(yùn)行結(jié)果:a=1,b=5,c=3x1=-0.70; x2=-4.30實(shí)訓(xùn)題目1、編程求兩個實(shí)數(shù)之差, 保留兩位小數(shù)。2、編程把小寫字母轉(zhuǎn)換為大寫字母。3、編程把一個三位數(shù)倒序輸出,如輸入是123,輸出為321。第三部分結(jié)構(gòu)化程序設(shè)計(jì)與算法認(rèn)識(分支結(jié)構(gòu)程序設(shè)計(jì)) 實(shí)訓(xùn)目的及要求 通過本次實(shí)訓(xùn),掌握if 語
21、句的使用和switch 多分支選擇結(jié)構(gòu)的實(shí)現(xiàn),并能熟練的進(jìn)行應(yīng)用。程序 1、任意輸入一個年份,判斷是否是閏年。閏年的條件是符合下面條件之一:( 1)能被 4 整除,但不能被100 整除;( 2)能被4 整除,又能被400 整除。算法思路:(1)輸入年份(如:2007) ;(2)判斷是否為閏年;判斷閏年的表達(dá)式:條件一:能被 4 整除: year%4= =0不能被 100整除: year%100!=0組合: ( year%4= =0 && year%100!=0)條件二:能被 4 整除: year%4= =0能被 400整除: year%400=0組合: ( year%4= =0
22、 && year%400=0)總條件式:( year%4= =0 && year%100!=0)|( year%4= =0 && year%400=0)可改寫為:(year%4= =0) && (year%100!=0) | (year%400=0)(3)若是,輸出“ 2007是閏年”信息;若不是,則輸出“ 2007不是閏年”。#include “stdio.h”main()int year;printf(請輸入年份:”);scanf(“%d”,&year);if(year%4= =0) && (year%
23、100!=0) | (year%400=0)printf(“%d 是閏年n”,year);else printf(“%d 不是閏年n”,year);程序2、輸入三角形的三邊長,求三角形的面積。算法思路:( 1)通過鍵盤輸入三邊長的值a, b, c;( 2)判斷是否構(gòu)成三角形;條件式 : ( a+b>c)&&(b+c>a)&&(a+c>b)( 3)若能構(gòu)成,計(jì)算三角形的面積并輸出;若不能構(gòu)成則輸出錯誤提示信息。#include “stdio.h”#include “math.h”main()float a,b,c,l,s;printf(請輸入三角
24、形的三個邊長:");scanf(“%f%f%f”,&a,&b,&c);if( a+b>c)&&(b+c>a)&&(a+c>b)l=(a+b+c)/2;s=sqrt(l*(l-a)*(l-b)*(l-c)printf(面積 S=%.2f”,s);else printf(構(gòu)不成三角形! n");程序3、任意輸入一個成績,給出評語:90-100:優(yōu)秀; 80-89:良好; 60-79:及格; 0-59:不及格。算法思路:( 1)輸入一個成績數(shù),存入變量score;(2)判斷score在哪個分?jǐn)?shù)段中;( 3)
25、根據(jù)所在分?jǐn)?shù)段輸出對應(yīng)的評語。#include “ stdio.h ”main()int score;printf( “ inpuytour score: ” );scanf( “ %d” ,&score);if(score>100|score<0) printf( “ input ernro” r.);else if(score>=90) printf( 優(yōu)秀n”“ );else if(score>=80) printf( 良好 “ n” );else if(score>=60) printf( 及格n”“ );else printf( 不及格 “n”
26、);實(shí)訓(xùn)題目1、用 if 語句實(shí)現(xiàn)菜單功能。*1-成績輸入2 成績插入3-成績查詢4-成績排序 5-成績刪除 6-成績輸出0-退出*請輸入你的選擇(0-6) :2、任意輸入三個數(shù)據(jù)按從大到小的順序輸出。3、編程實(shí)現(xiàn):讀入兩個整型數(shù)據(jù)及一個運(yùn)算符(+ - * /) ,計(jì)算表達(dá)式的值。4、用switch 語句實(shí)現(xiàn)菜單功能。5、用switch 語句編程實(shí)現(xiàn):讀入兩個整型數(shù)據(jù)及一個運(yùn)算符(+ - * /),計(jì)算表達(dá)式的值。6、用switch 開關(guān)語句實(shí)現(xiàn)猜詞游戲。第三部分結(jié)構(gòu)化程序設(shè)計(jì)與算法認(rèn)識( C 循環(huán)結(jié)構(gòu)程序設(shè)計(jì))實(shí)訓(xùn)目的及要求通過本次實(shí)訓(xùn),掌握循環(huán)語句for、while和do-while的使用
27、和break和continue 的功能,并能熟練的進(jìn)行應(yīng)用。程序1、編程求1+2+3+100的和。算法思路:1、用變量sum作為累加器,存放和;2、用變量i表示累加變量,分別存放1,2,3,。;3、當(dāng) i0100 時,執(zhí)行 sum=sum+i;(等價于 sum+=i;);4、當(dāng)i 的值超過100 的時候,不再執(zhí)行sum=sum+i; 輸出 sum 的值。方法一( while 結(jié)構(gòu))#include “ stdio.h ”main( )int sum=0, i=1;/* 變量初始化*/while (i<=100)sum=sum+i;i+;printf("sum is %dn&qu
28、ot;,sum);方法二(do-while 結(jié)構(gòu))#include “ stdio.h ”main( )int sum=0, i=0;dosum=sum+i;i+; while (i<=100)printf("sum is %dn",sum);方法三( for 結(jié)構(gòu))#include “ stdio.h ”int i,sum=0;for(i=0;i<=100;i+)sum=sum+i;printf( “ sum=n%” d,sum);程序2、求1 到 100 之間的奇數(shù)之和,偶數(shù)之積。思路:1、用變量sum存放奇數(shù)之和,用變量 mul存放和;2、用變量i表示累加
29、變量,分別存放1,2,3,。3、當(dāng)i0100時,若i是奇數(shù)執(zhí)行sum=sum+i;是偶數(shù)執(zhí)行mul=mul*i;輸出sum和mul的值。4、當(dāng)i 的值超過100 的時候,不再執(zhí)行求和和求積操作方法一( while 結(jié)構(gòu))#include “ stdio.h ”main( ) double mul=1; /* 雙精度類型*/int i=1,sum=0;while (i<=100)if (i%2!=0) sum=sum+i;else mul=mul*i;i+;printf("sum=%dn",sum);printf( “ mul=n%” e ,mul); /*科學(xué)計(jì)數(shù)法輸
30、出*/方法二( for 結(jié)構(gòu))#include “ stdio.h ”main( )int i,sum=0;double mul=1;for(i=1;i<=100;i+)if(i%2= =1) sum=sum+i;else mul=mul*i;printf( “ sum=%d,mul=n%” e,sum,mul);程序3、把輸入的一行字符原樣輸出,若是大寫字母需要轉(zhuǎn)換成小寫的。思路:1、通過鍵盤接收一個字符;2、判斷該字符是否為回車符;是轉(zhuǎn)第4 步,不是轉(zhuǎn)到第3 步;3、判斷接收的字符是否為大寫字母,是轉(zhuǎn)換為小寫字母并輸出,不是則直接輸出,程序轉(zhuǎn)回到第 1 步;4、程序結(jié)束。#inclu
31、de “ stdio.h ”main()char ch;while(ch=getchar( )!= n) if(ch>= A &&ch<= Z)ch=ch+32;putchar(ch);程序4、編寫程序求20+21+22+2 3+ , , +263 的和。算法思路:變量設(shè)定:s:存放累加和;t:存放每項(xiàng)的值;i :為循環(huán)次數(shù);算法分析:1、循環(huán)累加,用s=s+t; 或 s+=t;2、每項(xiàng)可遞推計(jì)算,t=t*2; 或 t*=2;3、初值s=1,t=1,循環(huán)63次。#include “ stdio.h ”main( )int i;float s=1,t=1;for (i
32、=1;i<=63;i+)t*=2;s+=t;printf( “ s=n%” e,s);程序5、從鍵盤上任意輸入一個正整數(shù),判斷其是否為素?cái)?shù)。素?cái)?shù):除了1 和它本身之外沒有其他因子的數(shù)。換句話說只要有因子(除了1 和它本身之外) 則該數(shù)一定不是素?cái)?shù)算法思路:1、從鍵盤輸入一正整數(shù),存入變量m 中;2、測定m 是否有約數(shù),利用變量i=2-m-1 ,逐個驗(yàn)證m%i 是否等于0;3、如果m%i=0,說明m有約數(shù),不符合素?cái)?shù)的條件,后續(xù)的i不必驗(yàn)證,退出驗(yàn)證過程;4、根據(jù)退出的條件判定 m是否有約數(shù),若非正常退出說明 m有約數(shù)i,否則沒有約 數(shù),即為素?cái)?shù)。#include “ stdio.h ”m
33、ain( )int m,i;scanf("%d",&m);for(i=2;i<=m-1;i+)if(m%i=0) break;if(i>m-1) printf("%d is a prime",m);else printf("%d is not a prime",m);實(shí)訓(xùn)題目1、任意輸入兩個整數(shù),求它們的最大公約數(shù)。2、打印形狀為直角三角形的乘法口訣。3、輸入一個包含有三個數(shù)字字符的字符串,把該字符串轉(zhuǎn)換為整形數(shù)據(jù)輸出。(如:輸入字符串123,則輸出整形數(shù)據(jù)123)第三部分結(jié)構(gòu)化程序設(shè)計(jì)與算法認(rèn)識(結(jié)構(gòu)化程序設(shè)計(jì)與
34、算法基本知識) 實(shí)訓(xùn)目的及要求 簡單掌握算法的概念,并在編程中進(jìn)行具體算法的應(yīng)用。窮舉法:程序 1:找出 100之內(nèi)的所有素?cái)?shù)并輸出。算法分析:這是一個窮舉問題,通過對2-100 之內(nèi)的數(shù)據(jù)逐一進(jìn)行驗(yàn)證是否是素?cái)?shù),從而解決該問題。1、設(shè)定變量n:2-100;2、判斷n是否為素?cái)?shù),是則輸出當(dāng)前的n,否則不輸出;3、更新n 值,返回第1 步;4、以上3 步重復(fù)執(zhí)行,直到n 的值超過100。#include “ stdio.h ”main( )int m,i;for(m=2;m<=100;m+) for(i=2;i<=m-1;i+)if(m%i=0) break;if(i>m-1)
35、 printf("%5d",m);程序2:搬磚問題:36 塊磚, 36 人搬,男搬4,女搬3,兩個小孩抬1 磚,要求一次搬完,問男、女和小孩各若干?算法分析:這是一個多重窮舉問題,根據(jù)題意,可知:1、男人(men)的可能取值范圍為:0-9;2、女人(women)的可能取值范圍為:0-12;3、孩子(children)的可能取值范圍為:0-36;要求這三個數(shù)的組合符合以下條件:men*4+women*3+children/2=36要求 children 為偶數(shù)。采用窮舉法,首先考慮men分別取0-8中的各值時,找符合題意的 women和children,得至U: for(me
36、n=0;men<=9;men+)找符合條件的women 和children;進(jìn)一步細(xì)化:for(women=0;women<=12;women+)找符合條件的children;#include “ stdio.h ” main()int men,women,children;men=0;while(men<=8)women=0;while(women<=11)children=36-men-women;if(men*4+women*3+children/2= =36)&&children%2= =0)printf( “ men=%d,women=%d,c
37、hildren=n%” ,men,women,children); women+;men+; 程序3:要登上n 階樓梯,每一步允許跨1 階或 2 階,問共有多少種登樓梯的方法?算法分析:設(shè)每步 1 階走了 m1 步,每步2 階走了 m2 步,則有方程:m1+2*m2=n能夠滿足上述方程式的m1 和 m2 的一對組合就為一種方法,所有滿足該方程式的組合數(shù)就是方法總數(shù)。#include “ stdio.h ” main()int m1,m2,count=0,n;for(m1=0;m<=n;m1+)for(m2=0;m2<=n/2;m2+)if (m1+2*m2= =n) count+;
38、printf(count=n%” d,count);程序4:計(jì)算和統(tǒng)計(jì)旅客運(yùn)費(fèi)程序。由鍵盤輸入旅客行李重量(w) ,按公式:若 ( w<=50kg )f=1.5*w , 若( w>50kg) f=1.5*50 + 2.8*(w-50) ( w>50kg )計(jì)算運(yùn)費(fèi),要求:( 1)打印每位旅客的順序號,行李重量,應(yīng)付運(yùn)費(fèi);下班時打印出全(2)假定每天最多辦理100人的行李托運(yùn)手續(xù)或當(dāng) w00時循環(huán)結(jié)束, 天的運(yùn)費(fèi)總收入和辦理的總?cè)藬?shù)。思路分析:(1) 輸入行李重量(w);若w<=0,轉(zhuǎn)(5)(2) 計(jì)算運(yùn)費(fèi)(f);(3) 確定順序號(num);(4) 打印 num , w
39、 , f; 若 num<=100 轉(zhuǎn)( 1) ;(5) 累加運(yùn)費(fèi)收入total=total + f;方法一( while 結(jié)構(gòu))#include “ stdio.h ”main( )int num=0;float w,f,total=0;scanf("%f ",&w);while (w>0&&num<100 ) if (w<=50) f=1.5*w;else f=1.5*50+2.8*(w-50);num+;printf ( "%d,%6.0f,%8.2fn",num,w,f);total+=f; scan
40、f ("%f",&w);printf ("Customers=%d TotalIncome=%10.2fn",num,total);方法二(do-while 結(jié)構(gòu))#include “ stdio.h ”main( )int num=0;float w,f,total=0;do scanf("%f ",&w);if (w<=0) break;if (w<=50) f=1.5*w;else f=1.5*50+2.8*(w-50);num+;printf ( "%d %6.0f %8.2fn"
41、;,num,w,f);total+=f; while (num<100);printf ("Customers=%d TotalIncome=%10.2fn",num,total);方法三( for 結(jié)構(gòu))#include “ stdio.h main( )int num;float w,f,total=0;scanf("%f",&w);for (num=1;w>0&&num<=100;num+)if (w<=50) f=1.5*w;else f=1.5*50+2.8*(w-50);printf ( &qu
42、ot;%d %6.0f %8.2fn",num,w,f);total+=f; scanf("%f",&w);printf ("Customers=%d TotalIncome=%10.2fn",num,total); 實(shí)訓(xùn)題目1、任意輸入一行字符,分別統(tǒng)計(jì)字母、數(shù)字、空格和其它字符的個數(shù)。2、打印1000之內(nèi)的所有完數(shù)。一個數(shù)如果正好等于它的因子之和,這個數(shù)就稱之為完數(shù)。3、實(shí)現(xiàn)菜單功能,當(dāng)輸入為“退出 ”的控制時結(jié)束。*1-input2-search 3-sort4-delete 0-exit*please input your ch
43、oice(0-4): );4、編程實(shí)現(xiàn)10 道 +、 -、 *、 /的運(yùn)算。第四部分?jǐn)?shù)據(jù)類型構(gòu)造與模塊化程序設(shè)計(jì)(數(shù)組的構(gòu)造與應(yīng)用) 實(shí)訓(xùn)目的及要求 數(shù)組是一種構(gòu)造類型,在解決問題中使用非常普遍,通過本次實(shí)訓(xùn)內(nèi)容,使學(xué)生對數(shù)組類型有一個系統(tǒng)的認(rèn)識,并能靈活的在具體問題中進(jìn)行應(yīng)用。程序 1:一個班有30 個同學(xué),通過鍵盤輸入成績,并打印輸出,每行輸出10個同學(xué)的成績。算法分析:(1)定義一個數(shù)組用來存放30 個成績數(shù)據(jù),int score30;(2)用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)成績輸入;for(i=0;i<30;i+)scanf( “ %d” ,&scorei);(3)用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)成績輸出,并
44、控制換行;for(i=0;i<30;i+)printf( “ %5d” ,scorei);if(i+1)%10=0) prin tf( “n” );#include “ stdio.h ”main()int i;int score30;/* 成績數(shù)組的定義*/for(i=0;i<30;i+)/*輸入成績*/scanf( “ %d” ,&scorei);for(i=0;i<30;i+)/*輸出成績*/printf( “ %5d” ,scorei);if(i+1)%10=0) printf(n” )“;/*輸出10個數(shù)據(jù)換行*/程序2:一個班有n 個同學(xué),通過鍵盤輸入成績
45、,并進(jìn)行以下處理:(1)求平均成績;(數(shù)組求和)算法分析:1 .輸入n 的值及 n 個成績;2 .對成績進(jìn)行匯總求和,存入變量s中;3 .求平均數(shù):average=s/n;4 .輸出平均分average。#include “ stdio.h ”main()int n,i,s=0;int score30;float average;printf(請輸入學(xué)生的人數(shù):”);scanf(“%d”,&n);printf(請輸入d學(xué)生的成績:n”,n);for(i=0;i<n;i+) scanf( “ %d” ,&scorei);s=s+scorei;average=(float)s
46、/n;printf(“%.1f”, average);(2)添加 m 個同學(xué)的成績;(數(shù)組添加)算法分析:1 .當(dāng)前成績個數(shù)設(shè)為n 個;2 .輸入m 的值;3 .從第n 個元素開始輸入m 個成績;4 .更新數(shù)組元素的個數(shù): n=m+n;5 .輸出添加完后的成績。(3)把不及格同學(xué)的成績更新為60 分; (數(shù)組更新)算法分析:1 .當(dāng)前成績個數(shù)設(shè)為n 個;2 .從第0個元素開始逐個元素進(jìn)行測試:if(scorei<60) scorei=60;直到最后一個元素;3 .輸出修改完后的成績元素。(4)求成績的最高分和最低分,并記住對應(yīng)元素的下標(biāo);(數(shù)組求極值)算法分析:1 .當(dāng)前成績個數(shù)設(shè)為n個
47、,定義變量max和min分別用來存放最大數(shù)和最小數(shù);2 .為 max 和 min 賦初始值:max=min=score0;3 .從第 1 個元素開始逐個元素進(jìn)行測試:if(scorei>max) max=scorei;if(scorei<min) min=scorei;直到最后一個元素;4 .輸出 max 和 min。(5)對成績進(jìn)行排序。(數(shù)組排序)兩種基本算法:1 .起泡法:將相鄰兩個數(shù)比較,小的調(diào)到前面。2 .選擇法:將前面的數(shù)和后面的所有數(shù)依次進(jìn)行比較,記住小數(shù)的下標(biāo),當(dāng)比較完一遍,用前面的數(shù)和該小數(shù)進(jìn)行交換。起泡法排序:#include “ stdio.h ”main()
48、int score10, i,j,k,n=10;printf( 輸入成績: “n” );for(i=0;i<n;i+)scanf( “ %d” ,&scorei);for(i=0;i<n-1;i+)for(j=0;j<n-i-1;j+)if(scorej > scorej+1 )k= scorej;scorej = scorej+1;scorej+1 =k;for(i=0;i<n;i+)printf("%5d", scorei );printf("n");選擇法排序:#include “ stdio.h ”main(
49、)int i,j,k,m,score10,n=10;for(i=0;i<n;i+)scanf( “ %d” ,&scorei);for(i=0;i<n-1;i+) k=i;for(j=i+1;j<n;j+)if (scorek> scorej) k=j;m=scorei; scorei=scorek; scorek=m;for(i=0;i<n;i+)printf("%5d", scorei);printf("n");程序3:對已經(jīng)排好序的成績數(shù)組進(jìn)行以下操作:把一個新成績按照順序插入到數(shù)組的合適位置。(提高)。算法分
50、析:1. 從鍵盤接收一個數(shù)據(jù),存入變量m;2. 根據(jù)變量m 的大小進(jìn)行定位,其對應(yīng)下標(biāo)為k;3. 把score9到scorek的元素依次后移,為新數(shù)據(jù)騰出空間;4. 把 m 存入下標(biāo)為k 的空間中:scorek=m;5. 輸出處理完后的新數(shù)組。程序4:編程實(shí)現(xiàn)求一個3 行 4 列整型數(shù)組的平均數(shù)。算法分析:1 .定義一個二維數(shù)組a34;2 .為數(shù)組賦值;3 .累加元素的和,存入變量s中;4 .求平均數(shù)ave=s/12;5 .輸出平均數(shù)ave。#include “ stdio.h ”main()int a34,i,j,s=0;for(i=0;i<3;i+)for(j=0;j<4;j+
51、)scanf( “ %d” ,&aij);for(i=0;i<3;i+)for(j=0;j<4;j+)s+=aij;ave=s/12;printf( “ average=%n” 5d,ave);程序4:編程實(shí)現(xiàn)把一個三行三列的二維數(shù)組轉(zhuǎn)置輸出。算法分析:1 .定義一個二維數(shù)組a33;2 .為數(shù)組賦值;3 .交換aij 與 aji 的值;4 .輸出交換后的數(shù)組a。#include “ stdio.h ”main()int a33,i,j,s=0;for(i=0;i<3;i+)for(j=0;j<3;j+)scanf( “ %d” ,&aij);for(i=
52、0;i<3;i+)for(j=0;j<i;j+)t=aij;aij=aji;aji=t;for(i=0;i<3;i+) for(j=0;j<3;j+)printf( “ %n5” d,aij);printf( n“” );程序5:某學(xué)習(xí)小組有4 名同學(xué),學(xué)習(xí)了5 門課程,求每個同學(xué)的平均分和每門課程的平均分。算法分析:1 .定義一個二維數(shù)組score56( 最后一行和最后一列存放平均數(shù));2 .為數(shù)組賦值;3 .求行平均數(shù),把平均數(shù)存入 scorei5中(i=0-3);4 .求列平均數(shù),把平均數(shù)存入 score4用中(j=0-4);5 .輸出整個數(shù)組。程序6:從鍵盤輸入
53、一行字符,要求刪除第一次出現(xiàn)的某個字符(要刪除的字符也由鍵盤輸入) 。算法分析:1 .定義存放字符串的字符數(shù)組str和存放單個字符的字符變量ch;2 .輸入字符串str和要刪除的字符ch;3 .對要刪除的ch 定位;4 .從該位置開始,開始把后續(xù)字符依次前移;5 .檢查字符串的結(jié)束標(biāo)記。程序7:編一程序,將兩個字符串連接起來。算法分析:1 .定位:第一個字符串的 0的位置;2 .從 0開始把第二個字符串的字符依次放入第一個字符串的后端,直至第二個字符串的 0;3 .檢驗(yàn)第一個字符串的末端是否有結(jié)束符 0,若沒有,修正所得的字符串,在它的末端加上 0。#include “ stdio.h ”main( )char s180,s280;int i=0,j=0;gets(s1); gets(s2);while(s1i!='0')i+;while(s2j!='
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《大學(xué)物理(上冊)》課件-第1章
- 2025-2030全球車輛燃油油位計(jì)行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2030全球電積銅行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國直接空氣捕獲和儲存(DACS)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球多層土壤傳感器行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國阻燃塑料薄膜和片材行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球醫(yī)用手指康復(fù)訓(xùn)練儀行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2030全球化學(xué)谷物熏蒸劑行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國智慧教育公共服務(wù)平臺行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025年全球及中國工業(yè)膠囊填充設(shè)備行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025年度院感管理工作計(jì)劃(后附表格版)
- 勵志課件-如何做好本職工作
- 化肥銷售工作計(jì)劃
- 2024浙江華數(shù)廣電網(wǎng)絡(luò)股份限公司招聘精英18人易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年山東省濟(jì)南市中考英語試題卷(含答案解析)
- 2024年社區(qū)警務(wù)規(guī)范考試題庫
- 2025中考英語作文預(yù)測:19個熱點(diǎn)話題及范文
- 第10講 牛頓運(yùn)動定律的綜合應(yīng)用(一)(講義)(解析版)-2025年高考物理一輪復(fù)習(xí)講練測(新教材新高考)
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)(2023版)解讀 2
- 2024年全國各地中考試題分類匯編(一):現(xiàn)代文閱讀含答案
- GB/T 30306-2024家用和類似用途飲用水處理濾芯
評論
0/150
提交評論