理性认识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;
}

Coursera课程笔记----计算导论与C语言基础----Week 6的更多相关文章

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

    C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...

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

    C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...

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

    感性认识计算机程序(Week 4) 引入 编程序 = 给计算机设计好运行步骤 程序 = 人们用来告诉计算机应该做什么的东西 问题➡️该告诉计算机什么?用什么形式告诉? 如果要创造一门"程序设 ...

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

    计算机的历史与未来(Week 2) 计算机历史 早期计算机:手工计算器➡️机械计算器➡️计算机原型 现代计算机:电子管计算机➡️晶体管计算机➡️集成电路计算机➡️超大规模集成电路 早期的手工计算辅助工 ...

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

    C语言中的控制成分(Week 9) 计算机程序的基本结构 任何具有单入口单出口的程序,都可以用顺序结构.分支结构.循环结构来表达 分支语句 在执行if语句前,先对表达式求解 if()内可以是任意的数值 ...

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

    存储程序式计算机 冯·诺伊曼式计算机 "关于EDVAC的报告草案" 组成:控制器(协调工作).运算器(算数&逻辑运算).存储器(存储操作信息和中间结果).输入设备.输出设备 ...

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

    计算机的基本原理(Week 1) 第一次数学危机 公元前500年,毕达哥拉斯学派,他们相信数是万物的本源:一切数均可表示成整数或者整数之比 然而毕达哥拉斯证明了勾股定理,某些直角三角形的三边比不能用整 ...

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

    期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...

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

    C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...

随机推荐

  1. 从CentOS 7.0升级到7.7版本

    我平时都在VirtualBox上装虚拟机,方法是导入ova镜像文件,比如导入从网上下载的CentOS7-base.ova,该ova为CentOS 7.0版本,而现在最新版本为7.7,为此进入系统后第一 ...

  2. 【Java】【常用类】Object 基类 源码学习

    源码总览: 有好些都是native本地方法,背后是C++写的 没有关于构造器的描述,默认编译器提供的无参构造 https://blog.csdn.net/dmw412724/article/detai ...

  3. 天天在用Redis,持久化方案你又知道哪些?

    前言 文章首发于微信公众号[码猿技术专栏]:天天用Redis,持久化方案有哪些你知道吗? Redis目前已经成为主流的内存数据库了,但是大部分人仅仅是停留在会用的阶段,你真的了解Redis内部的工作原 ...

  4. python脚本如何同时运行多个

    当我们想一次运行多个py脚本的时候你想到了什么应用场景了吗?当你想同时并行的处理一些对象时你有什么好方法吗?下面我就简单的总结一些这方面的小技巧,方便大家根据情况灵活处理. 1 用一个py脚本运行多个 ...

  5. BUUOJ [WUSTCTF2020]朴实无华

    [WUSTCTF2020]朴实无华 复现了武科大的一道题/// 进入界面 一个hack me 好吧,直接看看有没有robot.txt 哦豁,还真有 好吧 fAke_f1agggg.php 看了里面,然 ...

  6. ubuntu16.04-交叉编译opencv3.4.6

    0.前言 在要移植opecv和SeetaFaceEngine-master到ARM板子上运行的所有步骤之前,有几点需要注意的: 查看板子运行的Kernel版本 交叉编译工具链的gcc版本,关键就是工具 ...

  7. SpringBoot系列(十一)拦截器与拦截器链的配置与使用详解,你知道多少?

    往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件详解 SpringBoot系列(四)web静 ...

  8. 数据挖掘入门系列教程(十点五)之DNN介绍及公式推导

    深度神经网络(DNN,Deep Neural Networks)简介 首先让我们先回想起在之前博客(数据挖掘入门系列教程(七点五)之神经网络介绍)中介绍的神经网络:为了解决M-P模型中无法处理XOR等 ...

  9. thinkphp--create()的使用方法(个人感悟)

    M方法和D方法的区别 ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类. 使用M方法 如果是如下情况,请考虑使用 ...

  10. DZ注册登录流程梳理

    用户注册流程第一步:/source/class/class_member.php: on_register注册入口 if(!$activation) {//不为空,说明用户已经注册过 //将用户注册到 ...