1. 程式人生 > >C程序設計實驗報告

C程序設計實驗報告

模運算 printf scanf strong 類型 分析 建築物 without scan

C程序設計實驗報告
試驗項目:基本的程序語句實驗、程序的簡單算法設計實驗
姓名:陳福洲 實驗地點:物聯網工程實驗室 實驗時間: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、實驗代碼:
 #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>
    #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語句的判斷結構。但是也不能說完全掌握了,實驗大部分都是講評後才能寫出來的,而且有些運行沒有問題,但是得不出結果,而且打字速度較慢,容易出錯,只要程序中有一個是中文符號,那麽程序就是錯誤的,所以嚴謹很重要。

C程序設計實驗報告