C語言程序設計-實驗第一次上機實驗報告_第1頁
C語言程序設計-實驗第一次上機實驗報告_第2頁
C語言程序設計-實驗第一次上機實驗報告_第3頁
C語言程序設計-實驗第一次上機實驗報告_第4頁
C語言程序設計-實驗第一次上機實驗報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、.2.第一次實驗C語言程序設計 實驗報告專業(yè) 計算機科學與技術(shù) 班級 信安1302班 日期 2014.3.22 成績 實驗組別 第 1 次實驗 表達式和標準輸入與輸出實驗 指導教師 周時陽 學生姓名 學號 同組人姓名 實驗名稱 表達式和標準輸入與輸出實驗 2.1實驗目的1.熟練掌握各種運算符的運算功能,操作數(shù)的類型,運算結(jié)果的類型及運算過程中的類型轉(zhuǎn)換,重點是C語言特有的運算符,例如位運算符,問號運算符,逗號運算符等;熟記運算符的優(yōu)先級和結(jié)合性。2.掌握getchar, putchar, scanf和printf等函數(shù)的用法。3.掌握簡單的C程序(順序結(jié)構(gòu)程序)的編寫方法。4.完成老師布置的習

2、題及課程設計上的題目。2.2實驗內(nèi)容(一)輸出“王”字源程序如下:shangji1chengxu1#include <stdio.h>int main() puts("*"); puts(" * "); puts(" * "); puts("*"); puts(" * "); puts(" * "); puts("*"); return 0;實驗步驟:步驟一:計算輸出過程中應控制的空格數(shù),選擇星號作為輸出的標記。步驟二:采用puts函數(shù)實現(xiàn)對字

3、符串的輸出。調(diào)試及編譯過程:試驗中出現(xiàn)的不足及修改:無。調(diào)試:實現(xiàn)對王字的輸出。(二)編程將華氏溫度轉(zhuǎn)換為攝氏溫度源程序如下:shangji1chengxu2#include <stdio.h>int main() double x,y; printf("請輸入華氏溫度:"); scanf("%lf",&x); y=(5*(x-32)/9; printf("%.2lf(F)=%.2lf(C)",x,y); return 0;編輯步驟:步驟一:定義兩個浮點型變量,分別用來存放華氏溫度和攝氏溫度步驟二:用輸入函數(shù)輸入一

4、個華氏溫度值并存入命名為x的單元中。 步驟三:進行華氏溫度與攝氏溫度之間的轉(zhuǎn)換,將得到的攝氏溫度值存入命名為y的單元中。步驟四:輸出得到的攝氏溫度值。調(diào)試及編譯過程:輸入數(shù)據(jù)100進行測試 出現(xiàn)的不足及修改:調(diào)試時發(fā)現(xiàn)輸出為0 ,經(jīng)推斷得出原因為5/9為整型得出的結(jié)果為0 將5/9*(x-32)改為(5*(x-32)/9,于是得出正確結(jié)果。 (三)分別用三種方法實現(xiàn)對兩個數(shù)據(jù)的轉(zhuǎn)換源程序如下:shangji1chengxu3.1shangji1chengxu3.2shangji1chengxu3.3#include <stdio.h>int main() int a,b,t; pr

5、intf("enter numbers:"); scanf("%d%d",&a,&b); t=a;a=b;b=t; printf("a=%d,b=%d",a,b); return 0;程序3 2#include <stdio.h>int main() int a,b; printf("enter numbers:"); scanf("%d%d",&a,&b); a=a+b;b=a-b;a=a-b; printf("a=%d,b=%d"

6、;,a,b); return 0;程序3.3#include <stdio.h>int main() int a,b; printf("enter numbers:"); scanf("%d%d",&a,&b); a=ab;b=ab;a=ab; printf("a=%d,b=%d",a,b); return 0;實驗步驟(實驗一): 步驟一:定義三個變量,其中兩個用來存放將要進行轉(zhuǎn)換的數(shù)據(jù)。 步驟二:將其中一個變量的值賦給中間變量,再將另一個變量的值賦給這個變量,最后將中間變量的值賦給另一個變量。實驗步驟(

7、實驗二): 步驟一:通過單純的計算關(guān)系,得知a=a+b;b=a-b;a=a-b可以得出最后的結(jié)果。 步驟二:定義變量,進行計算,輸出結(jié)果。實驗步驟(實驗三): 步驟一:查資料得知通過位運算也可以完成要求。 步驟二:通過位運算計算得出需進行的計算過程,上機完成并輸出。調(diào)試及編譯過程:測試數(shù)據(jù):12,23(第一個比第二個小)測試數(shù)據(jù):12,12(第一個和第二個一樣大)測試數(shù)據(jù):23,12(第一個數(shù)據(jù)比第二個大)出現(xiàn)的不足及修改:無 調(diào)試結(jié)果:出現(xiàn)預期的結(jié)果。(四)將輸入的數(shù)反向輸出。源程序如下:shangji1chengxu4#include <stdio.h>int main() i

8、nt x; printf("input :"); scanf("%d",&x); do putchar(x%10+'0'); while(x/=10)!=0); printf("n"); return 0;實驗步驟:步驟一:畫出流程圖,首先輸入一個數(shù),選擇將它的各位數(shù)以字符的形式輸出。 步驟二:實現(xiàn)輸出它的個位數(shù)字,即可取此數(shù)除以10后的余數(shù)。 步驟三:將其余各位數(shù)字按這種方式進行輸出。并控制循環(huán)條件為除以10后的余數(shù)為0時退出循環(huán),循環(huán)過程中將該數(shù)已輸出的位數(shù)上的數(shù)字拋去,即令x=x/10. 步驟四:循環(huán)結(jié)束

9、后,由輸出的字符組成的數(shù)字即為所求。調(diào)試及編輯過程:測試數(shù)據(jù):12(兩位數(shù))測試數(shù)據(jù):123(三位數(shù))測試數(shù)據(jù):1234(四位數(shù))出現(xiàn)的不足及修改:本來將x=x/10寫在循環(huán)過程中且用while循環(huán) ,后來改成do while,使得第一次的輸出更方便簡潔,并且將控制x/=10寫進控制循環(huán)的括號中,既完成了循環(huán)的控制,又實現(xiàn)了對x值的修改,是程序簡潔易懂。(五)用兩種方法輸出三個數(shù)中的最大者程序5.1shangji1chengxu5.1shangji1chengxu5.2#include <stdio.h>int main() int a,b,c,max; printf("

10、inter numbers:"); scanf("%d%d%d",&a,&b,&c); max=(a>b)?(a>c)?a:c):(b>c)?b:c); printf("max=%d",max); return 0;程序5.2include <stdio.h>int main() int a,b,c,max; printf("enter numbers:"); scanf("%d%d%d",&a,&b,&c); if(a>

11、=b) if(a>=c)max=a; else max=c; else if(b>=c)max=b; else max=c; printf("max=%d",max); return 0;實驗步驟(實驗一): 步驟一:首先用條件語句判斷出其中兩個數(shù)的大小。 步驟二:在條件語句的選擇結(jié)果中再嵌套地用另外兩個條件語句分別表示出前面兩個數(shù)中較大的那個于第三個數(shù)的比較結(jié)果。實驗步驟(實驗二): 步驟一:準備用兩層if語句實現(xiàn)實驗一中的過程。 步驟二:將實驗一中的條件語句轉(zhuǎn)換為if語句。調(diào)試及編譯過程:測試數(shù)據(jù):1,2,3(按從小到大順序)測試數(shù)據(jù):1,3,2(第二種順序

12、)測試數(shù)據(jù):2,1,3測試數(shù)據(jù):2,3,1測試數(shù)據(jù):3,1,2測試數(shù)據(jù):3,2,1出現(xiàn)的不足及修改:無 運行結(jié)果:輸出預期的結(jié)果。(六)輸出三個數(shù)中的居中的數(shù)源程序如下:shangji1chengxu6#include <stdio.h>int main() int a,b,c; printf("enter numbers:"); scanf("%d%d%d",&a,&b,&c); if(a>=b)&&(b>=c)|(b>=a)&&(c>=b) printf(&q

13、uot;居中的數(shù)為:%d",b); else if(b>=a)&&(a>=c)|(c>=a)&&(a>=b) printf("居中的數(shù)為:%d",a); else printf("居中ta的數(shù)為:%d",c); return 0;實驗步驟: 步驟一:輸入三個數(shù),選擇劃分的類型。 步驟二:判斷處在中間的數(shù)需要滿足的條件,來運用條件語句完成對所有情況的劃分,判斷輸入的三個數(shù)屬于哪一種類型,進而得出居中的數(shù)為多少。調(diào)試及編譯過程:測試數(shù)據(jù):1,2,3(第一種排列順序)測試數(shù)據(jù):1,3,2(第二種

14、排列順序)測試數(shù)據(jù):2,1,3(第三種排列順序)測試數(shù)據(jù):2,3,1(第四種排列順序)測試數(shù)據(jù):3,1,2(第五種排列順序)測試數(shù)據(jù):3,2,1(第六種排列順序)出現(xiàn)的不足及改正:一:剛開始出現(xiàn)了a>=b>=c的寫法,是很典型的沒有弄清楚數(shù)學符號和機器語言之間差別的錯誤,報錯后改為(a>=b)&&(b>=c) 二:之前沒有把等于號包括進去,導致條件語句不能涵蓋所有的情況,導致錯誤。(七)輸入一元二次方程的三個系數(shù),輸出方程的根。源程序如下:shangji1chengxu7#include <stdio.h>#include <math.

15、h>int main() int a,b,c; float t,x1,x2; printf("enter numbers:"); scanf("%d%d%d",&a,&b,&c); if(b*b-4*a*c)<0) printf("該方程無實根"); else t=sqrt(b*b-4*a*c); x1=(t-b)/(2*a); x2=(-t-b)/(2*a); printf("x1=%.2lf,x2=%.2lf",x1,x2); return 0;實驗步驟: 步驟一:分析輸入三

16、個系數(shù)以后可能出現(xiàn)的兩個根,無實根的情況 步驟二:將每種情況出現(xiàn)的條件及結(jié)果寫出,其中二次項系數(shù)不為0時情況較復雜,要用到math中的函數(shù),可定義一個變量用來存放特征根。 步驟三:將各種情況的結(jié)果輸出,驗證。調(diào)試及編譯過程:測試數(shù)據(jù):1,-2,2(無實根的情況)測試數(shù)據(jù):1,-2,1(兩相同實根的情況)測試數(shù)據(jù):1,-5,6(兩不同實根的情況)出現(xiàn)的不足及修改:無 運行的結(jié)果:出現(xiàn)預期的結(jié)果。(八)輸入三角形三邊的邊長,通過海倫公式計算三角形的面積并輸出。源程序如下:shangji1chengxu8#include <stdio.h>#include <math.h>i

17、nt main() double a,b,c,t,s; printf("enter 3 numbers:"); scanf("%lf%lf%lf",&a,&b,&c); if(a+b)>c)&&(a+c)>b)&&(b+c)>a) t=(a+b+c)/2; s=sqrt(t*(t-a)*(t-b)*(t-c); printf("s=%.2lf",s); else printf("error!"); return 0;實驗步驟: 步驟一:輸入三

18、邊的邊長,判斷能否圍成三角形,若不能,提示錯誤。 步驟二:若可以圍成,則設置一個中間變量用來存放周長的一半,以更方便地使用海倫公式。 步驟三:計算并輸出面積值。調(diào)試及編譯過程:測試數(shù)據(jù):3,4,5(比較好計算正確答案)測試數(shù)據(jù):1,2,3(不能圍成三角形)出現(xiàn)的不足及修改:剛開始的時候沒有考慮到可能不能圍成三角形的情況,但這是不科學的,因為在某些輸入錯誤的情況下,或是調(diào)試者沒有考慮充分的情況,有可能輸入三個不能圍成三角形的數(shù)。 因此在計算前加上了檢驗的過程并對不滿足條件的過程進行報錯。(九)課程設計教材41面第二題輸入十個整數(shù)計算其和shangji1jiaocai41(2)#include &

19、lt;stdio.h>#define N 10int main() int sum(int x,int n); int aN,i,total; printf("input %d numbers:n",N); for(i=0;i<=N-1;i+) scanf("%d",&ai); total=sum(a,N); printf("the total is %d",total); return 0;int sum(int x,int n) int i,s; for(i=0;i<=n-1;i+) s+=xi; ret

20、urn s;實驗步驟: 步驟一:定義一個字函數(shù),其中一個形式參數(shù)為數(shù)組,另一個為該數(shù)組中包含的數(shù)的個數(shù),此子函數(shù)用來計算數(shù)組中所有數(shù)的和。 步驟二:在主函數(shù)中,采用循環(huán)控制的方式分別給實際參數(shù)數(shù)組中的每個變量進行賦值。調(diào)用子函數(shù)計算所有數(shù)的值,并輸出。調(diào)試及翻譯過程:測試數(shù)據(jù):1到10 出現(xiàn)的不足及修改:無 運行的結(jié)果:輸出預期的結(jié)果。(十)課程設計教材51面第一小題輸入一個字符,若為大寫字母則轉(zhuǎn)換為相應的小寫字母,否則不變,輸出shangji1jiaocai51(1)#include <stdio.h>int main() char c; c=getchar(); if(c>

21、;='A'&&c<='Z') putchar(c-'A'+'a'); else putchar(c); return 0;實驗步驟: 步驟一:定義整型變量c,并通過輸入端給它賦值。 步驟二:判斷它是不是大寫字母,是則轉(zhuǎn)換為小寫字母對應的ASCII碼值,否則不改變c的值。輸出c。調(diào)試及編譯過程:測試數(shù)據(jù):A(大寫字母)測試數(shù)據(jù):t(不是大寫字母)出現(xiàn)的不足及修改:無 運行結(jié)果:輸出預期的結(jié)果。(十一)課程設計教材51面第二小題 輸入無符號短型整數(shù)x,m,n,取出它從m位開始向左的n位 shangji1jiaoc

22、ai51(2)#include <stdio.h>int main() unsigned short x,m,n,f; printf("input numbers:"); scanf("%hd%hd%hd",&x,&m,&n); f=x>>(m-n+1)<<(15-n+1); printf("%d",f); return 0;實驗步驟: 步驟一:定義短整數(shù)x,m,n用位運算達到要求的數(shù)。調(diào)試及編譯過程:測試數(shù)據(jù):5,3,2出現(xiàn)的不足及修改: 無 運行結(jié)果:輸出預期的結(jié)果。(十二)課程設計教材51面第三小題(處理IP地址的輸出)#include <stdio.h>shangji1jioacai51(3)int main() long unsigned int x; int x1,x2,x3,x4; printf("input"); scanf("%lu",&x); x1=x&0x000000ff; x2=(x&0x0000ff00)>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論