第一次試驗報告

C程序設計實驗報告算法

實驗項目:函數

一、字符與ASCII碼spa

二、運算符與表達式的應用設計

三、順序結構應用程序code

四、數學函數的算法描述blog

五、雞兔同籠的算法描述數學

六、肯定座標的算法描述io

姓名:徐溢璠        實驗地點教學樓514        實驗時間:3月19日編譯

1、實驗目的與要求程序設計

一、字符與ASCII碼

目的:

  • 瞭解字符在計算機中以ASCII碼方式表示;

  • 瞭解字符的類型、字長其數的表示範圍;

  • 熟練使用scanf()輸入用戶提供的數據;

  • 熟練使用printf()輸出變量。

要求:

  • 從鍵盤輸入任意字符,且在輸入前要求有提示信息。

  • 輸出兩行:第一行是字符形式輸出三個字符,三個字符以逗號隔開,第二行是輸出字符對應的ASCII碼。

二、運算符與表達式的應用

 

  • 掌握算數運算符的使用;

  • 正肯定義程序中的變量;

  • 熟練使用scanf()輸入用戶提供的數據;

  • 熟練使用printf()輸出變量。

 

三、順序結構應用程序

 

  • 掌握算數運算符的使用;

  • 正肯定義程序中的變量;

  • 熟練使用scanf()輸入用戶提供的數據;

  • 熟練使用printf()輸出變量。

 

四、數學函數的算法描述

 

  • 用if語句根據條件的真假進行判斷;

  • 掌握運算符的運算規則。

 

五、雞兔同籠的算法描述

 

  • 用if語句根據條件的真假進行判斷;

  • 掌握運算符的運算規則。

 

六、肯定座標的算法描述

 

  • 用if語句根據條件的真假進行判斷;

  • 掌握運算符的運算規則。

 2、實驗內容

一、實驗練習:2.3.3  字符與ASCII碼

(1)簡單的問題描述:

從鍵盤輸入一個大寫字母,要求轉換成小寫字母輸出,並輸出這個小寫字母相鄰的兩個字母,以及它們的ASCII碼值。

(2)實驗代碼:

#include<stdio.h>
int main()
{
    char ch ,ch1 ,ch2;
    int a ,b ,c;
    printf("請輸入一個大寫字母:\n");
    scanf("%c",&ch);
    ch=ch+32;
    ch1=ch-1;
    ch2=ch+1;
    a=ch;
    b=ch1;
    c=ch2;
    printf("小寫字母爲:%c,%c,%c\n",ch,ch1,ch2);
    printf("ASCII碼爲:%d,%d,%d\n",a,b,c); 
}

(3)問題分析:

問題:第一次完成後,點擊編譯並運行,沒法運行,紅色光標停留在第4、五行,因而我查看編譯結果,發現本身沒有在變量之間加上逗號。

解決方法:加上逗號,運行成功。

二、實驗練習:2.3.4   運算符與表達式的應用

(1)簡單的問題描述:

從鍵盤輸入一個3位整數,將輸出該數的逆序數。例如,輸入123,輸出321。

(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);
}

(3)問題分析:

#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);
}

 問題:最早開始我寫出的代碼是這樣的(如上所示),發現輸入123,輸出得倒是1221。

解決辦法:我結合老師的提示,發現百位上的數應該是除10取餘。改正後,代碼運行正確。

三、實驗練習:2.3.5  順序結構應用程序

(1)簡單問題描述:

編寫一個程序,用於醫藥收費處納算帳。要求輸入所在醫院費用(西藥費、檢查費、材料費、牀位費、觀察費和護理費),打印出應付錢款,再輸入病人所付款數,打印出應找錢數(已知某病人,西藥費268.2元,檢查費600元,注射用材料費206元,牀位費120元,觀察費360元,護理費220元)。

(2)實驗代碼:

#include<stdio.h>
int main()
{
    float x,j,c,hj,fk,zh,cw,g,f;/*x表明西藥費,j表明檢查費,c表明材料費,cw表明牀位費,g表明觀察費,f表明護理費,hj表明應付款,fk表明病人付款,zh表明應找回的金額*/
    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("病人付款=%.2f元\n應收款=%.2f元應找回=%.2f元\n",fk,hj,zh); 

}

(3)問題分析:

問題:變量太多,老是分不清,影響寫代碼的速度。

解決方法:在賦值時,加上註釋,標明每一個變量的含義。

四、實驗練習:3.3.1  數學函數的算法描述

(1)簡單問題描述:

有一函數 

請用流程圖表示該函數的算法。輸入x值,輸出知足函數關係的y值。並用c語言編寫程序進行檢驗。

(2)實驗代碼

#include<stdio.h>
main()
{
    float x,y;
    printf("請輸入x的值:");
    scanf("%f",&x);
    if(x<1){
        y=x;
}/*判斷變量x的值是否小於1*/
    else if(1<=x<10){
        y=2*x-1;
    }/*判斷變量x的值是否小於10*/
 if(x>=10){
        y=3*x-1;
    }/*其餘*/ 
        printf("y的值爲%.1f\n",y);
}

(3)問題分析:

問題:剛開始不知道怎樣用if語句。

解決辦法:看了同窗的代碼演示和老師的分析,而後本身寫。

五、實驗練習:3.3.2  雞兔同籠的算法描述

(1)簡單問題描述:

將雞和兔子關在同一個籠子裏,假如知道雞和兔子的總頭數h,雞和兔的總腳數f,能計算出雞和兔分別有多少隻。

(2)實驗代碼:

#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"); 
}

(3)問題分析:

問題:不管輸入什麼數值,結果都是輸入錯誤。

解決辦法:從新整理思路,發現if語句中應該是h>0&&f>0,而不是x>0&&y>0。

六、實驗練習:3.3.3   肯定座標的算法描述

(1)簡單問題描述:

有4個圓塔,圓心分別爲(2,2)、(-2,2)、(2,-2),(-2,-2),圓半徑爲1。這四個塔的高度均爲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(pow((x-2),2)+pow((y-2),2));
    d2=sqrt(pow((x+2),2)+pow((y-2),2));
    d3=sqrt(pow((x+2),2)+pow((y+2),2));
    d4=sqrt(pow((x-2),2)+pow((y+2),2));
    if(d1>1&&d2>1&&d3>1&&d4>1)
    h=0;
    printf("%d",h);
}

(3)問題分析:

問題:在寫代碼的時候不知道平方怎樣表示,而後漏掉了<math.h>。

解決辦法:百度了平方的表示方法,而後詢問同窗知道了該代碼用到了函數,因此要加上<math.h>,不然沒法運行。

3、實驗小結

本次實驗課一共寫了六個代碼,實驗課後,回想所學,發現本身有很多的收穫,可是也有不足。

收穫:

一、從第一個實驗我牢記一個字母的大小寫之間,ASCII碼值相差32。而且經過寫這個程序,我對變量和賦值瞭解得更加詳細。

二、從第二個實驗中,我學會了「%」在C語言中的含義是取餘;明白瞭如何求一個數的百位數,十位數,個位數,由此也能夠推出更高位的求法。

三、第三個實驗因爲變量過多,原本不是多麼困難的代碼也浪費了很多時間,我吸收教訓,日後還有更加複雜的代碼,要養成寫註釋的習慣。

四、對if語句的運用更加熟練。

五、書上的代碼不必定是對的,遇到問題時,確定本身沒有問題後,要敢於質疑權威。

六、百度真的是很是有用,遇到問題找度娘。有函數的時候必定要記住<math.h>,平方可使用pow。

七、算法很重要,學會算法,纔有清晰地思路,遇到更復雜的問題纔不會成一團亂麻。

八、一千個讀者有一千個哈姆萊特。每一個人因爲思惟方式不一樣,看問題的角度不一樣,寫出來的代碼也是不同的,不少時候,別人可以用極其簡單的代碼就實現咱們沒法實現的程序。要多與他人討論交流。

不足:

一、上完實驗課回想,這六個代碼不是多麼困難,可是仍然耗費了不少時間,甚至下課尚未完成。主要是對於基本語句還不熟練。

二、課前沒有認真預習,沒有將代碼在本身電腦上運行,致使對課程內容不熟練。

三、粗枝大葉,有時會輸入中文符號,或者輸錯代碼。

四、仍是沒有思考問題,過於依賴老師,老師不提示,就感受無從下手。

相關文章
相關標籤/搜索