Coursera课程笔记----计算导论与C语言基础----Week 6

理性认识C程序 导论(Week 6)

明确学习进度

讲课内容 感性➡️理性➡️函数➡️指针等

作业练习 初级阶段 ➡️正常作业练习

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)——UNIX

1972-1973——Dennis Ritchie& Ken Thompson——C语言(完善发展B语言)——重写UNIX

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;
}
posted @ 2020-04-26 23:18  maimai_d  阅读(243)  评论(0编辑  收藏  举报