zoukankan      html  css  js  c++  java
  • 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<<"
    "<<b<<"
    "<<c<<endl;
    }
    
  • 相关阅读:
    git指令累计
    vue里函数相互调用,包括watch监听事件调用methods里面的函数
    FPGA实战操作(2) -- PCIe总线(例程设计分析)
    FPGA实战操作(2) -- PCIe总线(协议简述)
    干掉Vivado幺蛾子(2)-- 快速替换debug probes
    FPGA基础学习(9) -- 复位设计
    UltraFast设计法实践(1) -- 初始设计检查
    《UltraFast设计法实践》系列目录
    干掉Vivado幺蛾子(1)-- Xilinx Tcl Store
    FPGA基础学习(8) --内部结构之存储单元
  • 原文地址:https://www.cnblogs.com/maimai-d/p/12783301.html
Copyright © 2011-2022 走看看