C程序設計實驗報告
實驗項目:______部分基本的程序語句和程序簡單算法設計實驗_______________________________________
姓名:___伍臣林_________實驗地點:__514物聯網實驗室_______實驗時間____2019.3.19_______
一、實驗目的與要求
1、字符與ASCII碼
● 了解字符在計算機中以ASCII碼方式表示;
● 了解字符的類型,字長其數的表示范圍;
● 熟練使用scanf()輸入用戶提供的數據;
● 熟練使用printf()輸出變量。
2、運算符與表達式的應用
●掌握算術運算符的使用;
●正確定義程序的變量;
● 熟練使用scanf()輸入用戶提供的數據;
● 熟練使用printf()輸出變量。
3、順序結構應用程序
●掌握算術運算符的使用;
●正確定義程序的變量;
● 熟練使用scanf()輸入用戶提供的數據;
● 熟練使用printf()輸出變量。
4、數學函數的算法描述
●用IF語句根據條件的真假進行判斷
●掌握運算符的運算規則
5、雞兔同籠的算法描述
●用IF語句根據條件的真假進行判斷
●掌握運算符的運算規則
6、確定坐標的算法描述
●用IF語句根據條件的真假進行判斷;
●掌握運算符的運算規則。
二、實驗內容
1、實驗練習:
1問題的簡單描述:任意輸入一個大寫字母,要求轉換成小寫字母輸出,並輸出這個小寫字母相鄰的兩個字母以及它們的ASICC碼。
2實驗代碼:
1 #include<stdio.h> 2 main() 3 { 4 char a,b,c,d; 5 printf("請輸入一個大寫字母"); 6 scanf("%c",&a); 7 b=a+31; 8 c=a+32; 9 d=a+33; 10 printf("輸出小寫字母:%c,%c,%c\n",b,c,d); 11 printf("輸出ASCII碼:%d,%d,%d\n",b,c,d); 12 13 }
3問題分析:對於輸出格式字符的選擇還比較模糊,實驗時,主要卡在最后兩個輸出語句。根據同學提醒,我區分出%d和%c的差別了。
2、實驗練習:
1問題的簡單描述:從鍵盤輸入一個三位整數,將輸出該數的逆序數。例如、輸入123,輸出321.
2實驗代碼:
#include<stdio.h>
int main()
{
int a,b,c,x,y;
printf("請輸入一個三位的正整數:\n");
scanf("%d",&x);
a=x/100;
b=(x%100)/10;
c=x%10;
y=c*100+b*10+a;
printf("%d: %d\n",x,y);
}
3問題分析:逆序數,主要問題是將百分位變為個位。經過老師講解,可以利用 % / 分別對輸入數據整除取整或是取余數 經過y=c*100+b*10+a; 來實現逆序數的輸出。
3、實驗練習
1問題的簡單描述:編輯一個程序,用於醫院收費處出納結算。要求輸入所在醫院費用(西葯費,檢查費,材料費,床位費,觀察費和護理費),打印出應付錢數,再輸入病人所付款數,打印出應找的錢數(已知某病人,西葯費268.2元,檢查費600元,材料費206研,床位費120元,觀察費360元和護理費220元)。
2實驗代碼:
1 #include<stdio.h> 2 int main() 3 { 4 float x,j,c,hj,fk,zh,cw,g,f; 5 printf("輸入西葯費,檢查費,材料費,床位費,觀察費,護理費:\n"); 6 scanf("%f,%f,%f,%f,%f,%f,",&x,&j,&c,&cw,&g,&f); 7 hj=x+j+c+cw+g+f; 8 printf("應付款:%.2f",hj); 9 printf("病人付款:"); 10 scanf("%f",&fk); 11 zh=fk-hj; 12 printf("計算結果:\n"); 13 printf("病人付款=%6.2f元\n應收款=%6.2f元應找回=%6.2f元\n",fk,hj,zh); 14 15 }
3問題分析: 變量多步驟復雜,操作過程中有漏掉百分號和分號情況;一一比對排查 最后成功運行!
3、實驗練習
1問題的簡單描述:有一函數: y=x(x<1);y=2x-1(1<=x<10);y=3x-1(x>=10),請用c語言編寫程序進行檢查。
2實驗代碼:
1 #include<stdio.h> 2 main() 3 { 4 float x,y; 5 printf("請輸入x的值:"); 6 scanf("%f",&x); 7 if(x<1) y=x; 8 else 9 if(x<10) y=2*x-1; 10 else y=3*x-1; 11 printf("y的值為%.2f\n",y); 12 13 }
3問題分析:簡單的條件語句 此題在操作過程中沒遇見什么困難!
3、實驗練習
1問題的簡單描述:已知雞兔的總頭數為h,總腳數為f,求雞兔各有多少只?請用c語言編寫程序進行檢查。
2實驗代碼:
1 #include<stdio.h> 2 main() 3 { 4 int h,f,x,y; 5 printf("雞兔總數,雞兔總腳數:"); 6 scanf("%d,%d",&h,&f); 7 if(h>0&&f>0) 8 { 9 x=(4*h-f)/2; 10 y=(f-2*h)/2; 11 printf("雞:%d 兔:%d\n",x,y); 12 13 } 14 else 15 printf("輸入錯誤!\n"); 16 }
3問題分析:這個問題的難點就是計算雞兔數量的表達式,但是由於流程圖已經給出我們表達式,所以這個題目簡直在調侃我們!稍稍注意一下c中的乘號以及大括號的用法情況。
3、實驗練習
1問題的簡單描述:根據平面坐標,輸出圓塔的高度。有4個圓塔,圓心分別為(2,2)、(-2,2)、(2,-2),(-2,-2),圓半徑為1。這四個塔的高度均為10m,塔以外無建築物。現輸入任一點坐標,若該點坐標在任一圓塔內,則輸出圓塔的高度;若該點不在圓塔內,則輸出0。
2實驗代碼:
1 #include<stdio.h> 2 #include<math.h> 3 main() 4 { int h=10; 5 float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4; 6 printf ("請輸入一個點(x,y)"); 7 scanf("%f,%f",&x,&y); 8 d1=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)); 9 d2=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2)); 10 d3=sqrt((x-x3)*(x-x3)+(y-y3)*(y-y3)); 11 d4=sqrt((x-x4)*(x-x4)+(y-y4)*(y-y4)); 12 if(d1>1&&d2>1&&d3>1&&d4>1) 13 printf("該點高度為:0"); 14 else 15 printf("該點高度為:10"); 16 }
3問題分析:這個問題主要是操作過程中的平方問題。數學函數頭文件一定要有 才可以使用根號的:sqrt