第一次實驗報告
C程序設計實驗報
實驗項目:基本的程序語句以及程序的簡單算法設計實驗
姓名:謝麗萍 實驗地點:514教室 實驗時間:3月12日
一、實驗目的與要求
1、(1)掌握c語言幾種基本數據類型。(2)掌握c語言的運算符和表達式的正確使用。(3)掌握自增和自減運算符的正確使用。(4)掌握基本輸入輸出函數的基本功能、調用方法,輸入輸出格式控制規定等。(5)能獨立編寫順序結構程序並調試通過。(6)用表達式語句,輸入輸出語句結局簡單的應用問題並上機實現。
2、(1)掌握結構化程序的算法描述方法。(2)了解c語言的基本語法要素,能熟悉地將算法描述轉化為c語言程序。(3)熟練掌握c語言的運算符,即運算符的優先級和結核性,運算規則、運算對象類型。
二、實驗內容
1、實驗練習:
①問題描述:從鍵盤輸入UI個大寫字母,要求轉化成小寫字母輸出,並輸出這個小寫字母相鄰的兩個字母,以及它們的ASCII碼值。
②實驗代碼:
#include<stdio.h> void main() { char a,b,c; printf("請輸入一個大寫字母:\n"); scanf("%c",&a); b=a+31; c=a+33; a=a+32; printf("小寫字母為:%c,%c,%c\n",a,b,c); printf("ASCII碼值為:%d,%d,%d\n",a,b,c); }
③問題分析:在這個敲代碼時遇到了一個變量a,b,c變換後放置的順序問題,一開始因為放置順序不同從而一直運行不了,其次是在輸出ASCII碼值時輸出格式符弄錯了。後來問了一下同學,幫我解決了這些問題。
2、實驗練習:
①問題描述:從鍵盤輸入一個三位數,將輸出該數的逆序數。
②實驗代碼:
#include<stdio.h> int main () { int a,b,c,x,y; printf("請輸入一個3位的正整數:\n"); scanf("%d",&x); c=x%10; b=(x%100)/10; a=x/100; y=c*100+b*10+a; printf("%d: %d\n",x,y); return 0; }
③問題分析:在這道題上我遇到了兩個問題。首先是變量b的值一開始沒怎麽想出來怎樣計算得到它,後面在老師的提醒下計算出來了b的值;最後是一個低級錯誤,就是在敲代碼中英文替換時,把中文的分號當成英文的分號使用,從而使得代碼運行不出來。經過仔細的檢查後面發現了這個問題並及時改正了過來。
3、實驗分析:
①問題描述:編寫一個程序,用於醫院收費處出納算賬。要求輸入所在醫院費用,打印出應付錢數,打印出應找的錢數。
②實驗代碼:
#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; }
③問題分析:這道題可能變量有點多,雖說如此但這道題比較順利的就完成了,可能因為書上的提示比較多就稍微簡單一點,所以也沒遇到什麽問題。
4、實驗分析:
①問題描述:用流程圖表示一個指定函數的算法。輸入x值,輸出函數關系的y值。並用c語言編寫程序進行檢驗。
②實驗代碼:
#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); }
③問題分析:這道題我遇到兩個問題。第一個是剛開始用到if/else的語句,還不熟,不知道怎樣用,後來在老師的提示下以及結合書上的例題後面這個問題就得到了解決。第二個是乘號在使用過程中用錯了,之前使用的那個乘法符號這個軟件無法識別。後面在同學的提醒下這個問題得到了解決。
5、實驗分析:
①問題描述:用流程圖描述求解雞兔同籠問題的算法:已知雞兔的總頭數為h,總腳數為f,求雞兔各有多少只?
②實驗代碼:
#include<stdio.h> main() { int h,f,x,y; printf("雞兔總數,雞兔腳總數:"); 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"); }
③問題分析:這道題由於書上給出了太多的提示,所以直接按照書上的來就可以了。所以沒怎麽遇到問題。
6、實驗分析:
①問題描述:有四個圓塔,圓心分別為(2,2)、(-2,2)、(2,-2)、(-2,-2),圓半徑為1,這四個塔的高度均為10cm,塔以外無建築物。先輸入任一點的坐標,若該點坐標在任一圓塔內,則輸出圓塔的高度;若該店不在圓塔內,則輸出0.
②實驗代碼:
#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) printf("該點的高度為:0"); else printf("該點的高度為:10"); }
③問題分析:這道題比較難的是在各點到中心的距離比較難用代碼敲出來,比較復雜吧。我認為是這六道題裏面最難的一題。後面有同學提前做出來了,老師叫他們上臺演示了一遍,聽後就大概懂了。
三、實驗小結:
在此次實驗中的收獲:1、見識並掌握了更多的c語言程序代碼。2、對c語言程序的編寫有了更深的了解。3、認識了if/else語句的運用。
不足:1、沒有提前預習實驗內容,從而使得完成速度比較慢。2、對c語言程序的熟悉度還是不夠,連最基本的符號還是錯了,所以這方面有待提高。
第一次實驗報告