C程序設計實驗報告
試驗項目:基本的程序語句實驗、程序的簡單算法設計實驗
姓名:陳福洲 實驗地點:物聯網工程實驗室 實驗時間:2019.03.19
一、實驗目的與要求
1、了解字符在計算機中以ASCII碼方式表示,了解字符的類型、字長其數的表示范圍。
2、掌握C語言數據類型,熟練掌握變量定義;
3、使用scanf()輸入變量的值,使用printf()輸出變量;
4、掌握運算符與表達式的使用方法及其優先級和結合性規律。
5、鞏固對算法概念的理解,掌握運算符的運算規則。
二、實驗內容
(1)、實驗練習:字符與ASCII碼
1、問題的簡單描述:從鍵盤輸入一個大寫字母,要求轉換成小寫字母輸出,並輸出這個小寫字母相鄰的兩個字母,以及它們的ASCII碼值。
2、實驗代碼:
(2)、實驗練習:運算符與表達式的運用
1、問題的簡單描述:從鍵盤輸入一個三位數,將輸出該數的逆序數。例如,輸入123,輸出321.
2、實驗代碼:
試驗項目:基本的程序語句實驗、程序的簡單算法設計實驗
姓名:陳福洲 實驗地點:物聯網工程實驗室 實驗時間:2019.03.19
一、實驗目的與要求
1、了解字符在計算機中以ASCII碼方式表示,了解字符的類型、字長其數的表示范圍。
2、掌握C語言數據類型,熟練掌握變量定義;
3、使用scanf()輸入變量的值,使用printf()輸出變量;
4、掌握運算符與表達式的使用方法及其優先級和結合性規律。
5、鞏固對算法概念的理解,掌握運算符的運算規則。
二、實驗內容
(1)、實驗練習:字符與ASCII碼
1、問題的簡單描述:從鍵盤輸入一個大寫字母,要求轉換成小寫字母輸出,並輸出這個小寫字母相鄰的兩個字母,以及它們的ASCII碼值。
2、實驗代碼:
#include <stdio.h> main() { char a,b,c; printf("請輸入一個大寫字母:\n"); scanf("%c",&a); b=a+31; c=a+33; a=a+32; printf("小寫字母為:%c,%c,%c:\n",b,a,c); printf("ASCII碼的值為:%d,%d,%d",b,a,c); }
3、問題分析:不了解字符與ASCII碼的對應關系,所以對這個簡單的程序完全沒有頭緒,最后在老師講評后才完成這個實驗。
(2)、實驗練習:運算符與表達式的運用
1、問題的簡單描述:從鍵盤輸入一個三位數,將輸出該數的逆序數。例如,輸入123,輸出321.
2、實驗代碼:
#include <stdio.h> int main() { int a,b,c,x,y; printf("請輸入一個3位數:\n"); scanf("%d",&x); a=x/100; b=(x-a*100)/10; c=x%10; y=c*100+b*10+a; printf("%d:%d\n",x,y); return 0; }
3、問題分析:這個程序的關鍵是求出這個三位數的個、十、百位,剛開始百位沒有計算出,在老師的提醒下使用了模運算(%),很快得出了結果,程序運行無誤。
(3)、實驗練習:順序結構運用程序
1、問題的簡單描述:編寫一個程序,用於醫院收費處出納算賬。要求所在醫院費用(西葯費、檢查費、材料費、床位費、觀察費和護理費),打印出應付錢數,再輸入病人所付款數,打印出應找錢數。
2、實驗代碼:
(4)、實驗練習:數學函數的算法描述
1、問題的簡單描述:有一函數:y=x(x<1);y=2*x-1(1<=x<10);y=3x-1(x>=10) 請用流程圖表示該函數的算法。輸入x的值,輸出滿足函數關系的y值。
2、實驗代碼:
(5) 、雞兔同籠的算法描述
1、問題的簡單描述:用流程圖描述求解雞兔同籠問題的算法:已知雞兔的總頭數為h,總腳數為f,求雞兔各有多少只?
2、實驗代碼:
(3)、實驗練習:順序結構運用程序
1、問題的簡單描述:編寫一個程序,用於醫院收費處出納算賬。要求所在醫院費用(西葯費、檢查費、材料費、床位費、觀察費和護理費),打印出應付錢數,再輸入病人所付款數,打印出應找錢數。
2、實驗代碼:
#include<stdio.h> int main() { float x,j,c,hj,fk,zh,cw,g,f; printf("輸入醫葯費,檢查費,材料費,床位費,觀察費,護理費:\n"); scanf("f%,%f,%f,%f,%f,%f",&x,&j,&c,&cw,&g,&f); hj=x+j+c+cw+g+f; printf("應付款(元):%.2f",hj); printf("病人付款(元):"); scanf("%f",&fk); zh=fk-hj; printf("計算結果:\n"); printf("病人付款=%6.2f元\n應收款=%6.2f元應找回=%6.2f元\n",fk,hj,zh); return 0; }
3、問題分析:對照了同學的代碼,這個程序編譯無誤,但運行不出結果。
(4)、實驗練習:數學函數的算法描述
1、問題的簡單描述:有一函數:y=x(x<1);y=2*x-1(1<=x<10);y=3x-1(x>=10) 請用流程圖表示該函數的算法。輸入x的值,輸出滿足函數關系的y值。
2、實驗代碼:
#include<stdio.h> main() { float x,y; printf("請輸入x的值:"); scanf("%f",&x); if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-1; printf("Y的值為%.2f\n",y); }
3、問題分析:這個程序關鍵是有兩個連續的判斷結構,嵌套格式很重要。剛開始我還用了“Then”,“Else”的“E”用了大寫,然后一直顯示if和else搭配錯誤:'else' without a previous 'if'.
(5) 、雞兔同籠的算法描述
1、問題的簡單描述:用流程圖描述求解雞兔同籠問題的算法:已知雞兔的總頭數為h,總腳數為f,求雞兔各有多少只?
2、實驗代碼:
#include<stdio.h> main() { int h,f,x,y; printf("雞兔總數,雞兔總腳數:\n"); scanf("%d,%d",&h,&f); if(h>0&&f >0) { x=(4*h-f)/2; y=(f-2*h)/2; printf("雞:%d 兔:%d\n",x,y); } else printf("輸入錯誤!\n"); }
3、問題分析:這個實驗的關鍵是理清雞和兔數學關系,列出方程,補充程序模板。
(6)、確定坐標的算法描述
1、問題的簡單描述:有個4圓塔,圓心分別為(2,2)、(-2,2)、(2,-2)、(-2,-2),圓半徑為1,這4個塔的高度為10m,塔外無建築物。現輸入任一點坐標,若該點坐標在任一圓塔內,則輸出圓塔的高度;若該點不在圓塔內,則輸出0.
2、實驗代碼:
#include<stdio.h>
三、實驗小結
這次實驗中,我對C語言中的printf和scanf函數有了進一步的了解,學到了多種功能簡單的程序的編寫,還有第3章的if語句的判斷結構。但是也不能說完全掌握了,實驗大部分都是講評后才能寫出來的,而且有些運行沒有問題,但是得不出結果,而且打字速度較慢,容易出錯,只要程序中有一個是中文符號,那么程序就是錯誤的,所以嚴謹很重要。
1、問題的簡單描述:有個4圓塔,圓心分別為(2,2)、(-2,2)、(2,-2)、(-2,-2),圓半徑為1,這4個塔的高度為10m,塔外無建築物。現輸入任一點坐標,若該點坐標在任一圓塔內,則輸出圓塔的高度;若該點不在圓塔內,則輸出0.
2、實驗代碼:
#include<stdio.h>
#include<math.h> main() { int h=10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4; printf("請輸入一個點(x,y):"); scanf("%f,%f",&x,&y); d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)); d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2)); d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3)); d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4)); if(d1>1&&d2>1&&d3>1&&d4>1) h=0; printf("該點高度為%d",h); }
3、問題分析:這個程序也是編譯沒有問題,但運行有問題。
三、實驗小結
這次實驗中,我對C語言中的printf和scanf函數有了進一步的了解,學到了多種功能簡單的程序的編寫,還有第3章的if語句的判斷結構。但是也不能說完全掌握了,實驗大部分都是講評后才能寫出來的,而且有些運行沒有問題,但是得不出結果,而且打字速度較慢,容易出錯,只要程序中有一個是中文符號,那么程序就是錯誤的,所以嚴謹很重要。