Coursera課程筆記----計算導論與C語言基礎----Week 6

理性認識C程序 導論(Week 6)

明確學習進度

講課內容 感性➡️理性➡️函數➡️指針等ios

做業練習 初級階段 ➡️正常做業練習c++

C語言的由來

程序設計語言的分類

  • 低級語言之機器語言 001010101001……
  • 低級語言之彙編語言 load 0 a 數據裝入寄存器0……
  • 高級語言之C語言 d = a * b + c 頂機器語言一連串10101010……

高級程序設計語言

1954-1956——John Backus——FORTRAN(FORmula TRANslation)——數學計算領域編程

1960——Alan J. Perlis——A語言(Algol 60)——計算科學裏程碑編程語言

1963——劍橋大學——CPL(Combined Programming Language)——規模太大難以實現函數

1967——Matin Pichards——BCPL(Basic CPL)學習

1970——貝爾實驗室 Ken Thompson——B語言(簡化BCPL)——UNIXui

1972-1973——Dennis Ritchie& Ken Thompson——C語言(完善發展B語言)——重寫UNIXspa

C語言的版本

  • K&R C——初版——1978
  • ANSI C 和 ISO C——1989ANSI——1009ISO——二者標準化組織
  • C99——1999
  • C11——2011

特別狀況

  • C語言規範定義的很是寬泛
    • long型數據長度不短於int型
    • short型不長於int型
  • 致使了:
    • 相同程序在不一樣編譯器上具備不一樣解釋
    • 相同的程序在不一樣平臺上運行結果不一樣
      • 例如,整形變量定義;對++、--的解釋;輸入輸出賦值順序的不一樣;浮點數計算精度不一樣……

From C to C++

1979——貝爾實驗室 Bjarne Stroustrup——給C加入面向對象的特性——C with Classes——C++設計

1985——The C++ Programming Language 初版指針

1998——C++國際標準

2011——C++2011標準

C or C++

C++語言支持了C語言全部的特性,咱們要在C++環境中學習C語言的部分。

如何學習一門編程語言(語法知識)

  • 語言的種類千差萬別,可是基本成分不外乎四種
    • 數據成分:有哪些數據類型?如何使用?
    • 運算成分:有哪些運算符號?如何使用?
    • 控制成分:三種類型的控制語句是如何寫的?
    • 傳輸成分:在程序中如何輸入和輸出數據?

做業題

Quiz 1 細菌實驗分組

#include <iostream>
using namespace std;
int main()
{
    int n;//n爲細菌的數量
    int id[100];//細菌的編號
    double rate[100];//細菌的繁殖率

    cin>>n;
    for(int i = 0; i < n; i++)
    {
        int initial,final;
        cin >> id[i] >> initial >> final;
        rate[i] = (double)final / initial;
    }

    //排序
    for (int i = 0; i < n; i++)
    {
        for(int j = 0; j < n - i - 1; j++)
        {
            if(rate[j+1] > rate[j])
            {
                int tmpID = id[j];
                id[j] = id[j+1];
                id[j+1] = tmpID;
                double temRate = rate[j];
                rate[j] = rate[j+1];
                rate[j+1] = temRate;
            }
        }
    }

    //記錄最大的差和最大差的下標
    double maxDiff = 0;
    int maxDiffIndex = 0;
    for (int i = 0; i < n - 1; i++) {
        double diff = rate[i] - rate[i + 1];
        if(maxDiff < diff)
        {
            maxDiff = diff;
            maxDiffIndex = i;
        }
    }

    //輸出繁殖率較大的那組細菌
    cout<< maxDiffIndex + 1 <<endl;
    for (int i = maxDiffIndex; i >=0 ; i--) {
        cout<<id[i]<<endl;
    }

    cout<< n - maxDiffIndex - 1 << endl;
    for (int i = n - 1; i >= maxDiffIndex + 1 ; i--) {
        cout<<id[i]<<endl;

    }
    return 0;
}

Quiz 2 蘋果和蟲子

#include <iostream>
using namespace std;
int main()
{
    int numApple, bugSpeed, hour;
    cin>>numApple>>bugSpeed>>hour;

    int numEat = hour / bugSpeed;
    if(numEat - numApple > 0)
        cout<<"0"<<endl;
    else if (hour % bugSpeed == 0)
        cout<< numApple - numEat << endl;
    else
        cout<<numApple - numEat - 1 <<endl;

    return 0;
}

Quiz 3 大象喝水

#include <iostream>
using namespace std;
int main()
{
    int height, radius;
    cin>>height>>radius;

    double volume = 3.1415926*radius*radius*height;
    int num = 20*1000 / volume;
    cout<<num + 1 << endl;
    return 0;
}

Quiz 4 最高的分數

#include <iostream>
using namespace std;
int main()
{
    int numStu, stu[100];
    cin>>numStu;
    for (int i = 0; i <numStu ; i++) {
        cin>>stu[i];
        if(i != 0 && stu[i] > stu[0])
            stu[0] = stu[i];
    }
    cout<<stu[0]<<endl;
}

Quiz 5 最大奇數與最小偶數之差的絕對值

#include <iostream>
using namespace std;
int main()
{
    int num[6], maxOdd = 1, numAbs, minEven = 101;
    for (int i = 0; i < 6; i++)
        cin>>num[i];

    for (int i = 0; i < 6; i++) {
        if(num[i] % 2 == 0 && num[i] < minEven)
            minEven = num[i];
        if(num[i] % 2 == 1 && num[i] > maxOdd)
            maxOdd = num[i];
    }

    if(maxOdd - minEven < 0)
        numAbs = minEven - maxOdd;
    else numAbs = maxOdd - minEven;
    cout << numAbs << endl;
    return 0;
}

Quiz 6 分離整數的各個數位

#include <iostream>
using namespace std;
int main()
{
    int num,a,b,c;
    cin>>num;

    a = num / 100;
    b = (num - a * 100) / 10;
    c = num % 10;

    cout<<a<<"\n"<<b<<"\n"<<c<<endl;
}
相關文章
相關標籤/搜索