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

下載本文檔

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

文檔簡介

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

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

3、符串的輸出。調試及編譯過程:試驗中出現的不足及修改:無。調試:實現對王字的輸出。(二)編程將華氏溫度轉換為攝氏溫度源程序如下: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;編輯步驟:步驟一:定義兩個浮點型變量,分別用來存放華氏溫度和攝氏溫度步驟二:用輸入函數輸入一

4、個華氏溫度值并存入命名為x的單元中。 步驟三:進行華氏溫度與攝氏溫度之間的轉換,將得到的攝氏溫度值存入命名為y的單元中。步驟四:輸出得到的攝氏溫度值。調試及編譯過程:輸入數據100進行測試 出現的不足及修改:調試時發現輸出為0 ,經推斷得出原因為5/9為整型得出的結果為0 將5/9*(x-32)改為(5*(x-32)/9,于是得出正確結果。 (三)分別用三種方法實現對兩個數據的轉換源程序如下: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;實驗步驟(實驗一): 步驟一:定義三個變量,其中兩個用來存放將要進行轉換的數據。 步驟二:將其中一個變量的值賦給中間變量,再將另一個變量的值賦給這個變量,最后將中間變量的值賦給另一個變量。實驗步驟(

7、實驗二): 步驟一:通過單純的計算關系,得知a=a+b;b=a-b;a=a-b可以得出最后的結果。 步驟二:定義變量,進行計算,輸出結果。實驗步驟(實驗三): 步驟一:查資料得知通過位運算也可以完成要求。 步驟二:通過位運算計算得出需進行的計算過程,上機完成并輸出。調試及編譯過程:測試數據:12,23(第一個比第二個小)測試數據:12,12(第一個和第二個一樣大)測試數據:23,12(第一個數據比第二個大)出現的不足及修改:無 調試結果:出現預期的結果。(四)將輸入的數反向輸出。源程序如下: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;實驗步驟:步驟一:畫出流程圖,首先輸入一個數,選擇將它的各位數以字符的形式輸出。 步驟二:實現輸出它的個位數字,即可取此數除以10后的余數。 步驟三:將其余各位數字按這種方式進行輸出。并控制循環條件為除以10后的余數為0時退出循環,循環過程中將該數已輸出的位數上的數字拋去,即令x=x/10. 步驟四:循環結束

9、后,由輸出的字符組成的數字即為所求。調試及編輯過程:測試數據:12(兩位數)測試數據:123(三位數)測試數據:1234(四位數)出現的不足及修改:本來將x=x/10寫在循環過程中且用while循環 ,后來改成do while,使得第一次的輸出更方便簡潔,并且將控制x/=10寫進控制循環的括號中,既完成了循環的控制,又實現了對x值的修改,是程序簡潔易懂。(五)用兩種方法輸出三個數中的最大者程序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;實驗步驟(實驗一): 步驟一:首先用條件語句判斷出其中兩個數的大小。 步驟二:在條件語句的選擇結果中再嵌套地用另外兩個條件語句分別表示出前面兩個數中較大的那個于第三個數的比較結果。實驗步驟(實驗二): 步驟一:準備用兩層if語句實現實驗一中的過程。 步驟二:將實驗一中的條件語句轉換為if語句。調試及編譯過程:測試數據:1,2,3(按從小到大順序)測試數據:1,3,2(第二種順序

12、)測試數據:2,1,3測試數據:2,3,1測試數據:3,1,2測試數據:3,2,1出現的不足及修改:無 運行結果:輸出預期的結果。(六)輸出三個數中的居中的數源程序如下: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;居中的數為:%d",b); else if(b>=a)&&(a>=c)|(c>=a)&&(a>=b) printf("居中的數為:%d",a); else printf("居中ta的數為:%d",c); return 0;實驗步驟: 步驟一:輸入三個數,選擇劃分的類型。 步驟二:判斷處在中間的數需要滿足的條件,來運用條件語句完成對所有情況的劃分,判斷輸入的三個數屬于哪一種類型,進而得出居中的數為多少。調試及編譯過程:測試數據:1,2,3(第一種排列順序)測試數據:1,3,2(第二種

14、排列順序)測試數據:2,1,3(第三種排列順序)測試數據:2,3,1(第四種排列順序)測試數據:3,1,2(第五種排列順序)測試數據:3,2,1(第六種排列順序)出現的不足及改正:一:剛開始出現了a>=b>=c的寫法,是很典型的沒有弄清楚數學符號和機器語言之間差別的錯誤,報錯后改為(a>=b)&&(b>=c) 二:之前沒有把等于號包括進去,導致條件語句不能涵蓋所有的情況,導致錯誤。(七)輸入一元二次方程的三個系數,輸出方程的根。源程序如下: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、個系數以后可能出現的兩個根,無實根的情況 步驟二:將每種情況出現的條件及結果寫出,其中二次項系數不為0時情況較復雜,要用到math中的函數,可定義一個變量用來存放特征根。 步驟三:將各種情況的結果輸出,驗證。調試及編譯過程:測試數據:1,-2,2(無實根的情況)測試數據:1,-2,1(兩相同實根的情況)測試數據:1,-5,6(兩不同實根的情況)出現的不足及修改:無 運行的結果:出現預期的結果。(八)輸入三角形三邊的邊長,通過海倫公式計算三角形的面積并輸出。源程序如下: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、邊的邊長,判斷能否圍成三角形,若不能,提示錯誤。 步驟二:若可以圍成,則設置一個中間變量用來存放周長的一半,以更方便地使用海倫公式。 步驟三:計算并輸出面積值。調試及編譯過程:測試數據:3,4,5(比較好計算正確答案)測試數據:1,2,3(不能圍成三角形)出現的不足及修改:剛開始的時候沒有考慮到可能不能圍成三角形的情況,但這是不科學的,因為在某些輸入錯誤的情況下,或是調試者沒有考慮充分的情況,有可能輸入三個不能圍成三角形的數。 因此在計算前加上了檢驗的過程并對不滿足條件的過程進行報錯。(九)課程設計教材41面第二題輸入十個整數計算其和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;實驗步驟: 步驟一:定義一個字函數,其中一個形式參數為數組,另一個為該數組中包含的數的個數,此子函數用來計算數組中所有數的和。 步驟二:在主函數中,采用循環控制的方式分別給實際參數數組中的每個變量進行賦值。調用子函數計算所有數的值,并輸出。調試及翻譯過程:測試數據:1到10 出現的不足及修改:無 運行的結果:輸出預期的結果。(十)課程設計教材51面第一小題輸入一個字符,若為大寫字母則轉換為相應的小寫字母,否則不變,輸出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,并通過輸入端給它賦值。 步驟二:判斷它是不是大寫字母,是則轉換為小寫字母對應的ASCII碼值,否則不改變c的值。輸出c。調試及編譯過程:測試數據:A(大寫字母)測試數據:t(不是大寫字母)出現的不足及修改:無 運行結果:輸出預期的結果。(十一)課程設計教材51面第二小題 輸入無符號短型整數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;實驗步驟: 步驟一:定義短整數x,m,n用位運算達到要求的數。調試及編譯過程:測試數據:5,3,2出現的不足及修改: 無 運行結果:輸出預期的結果。(十二)課程設計教材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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論