Coursera课程笔记----计算导论与C语言基础----Week 4
感性认识计算机程序(Week 4)
引入
编程序 = 给计算机设计好运行步骤
程序 = 人们用来告诉计算机应该做什么的东西
问题➡️该告诉计算机什么?用什么形式告诉?
如果要创造一门“程序设计语言“
问题1: 是不是无论什么”单词“,计算机都能明白
问题2: 是不是我们无论在程序里写什么“数”和“计算符号”,计算机都能明白?
问题3: 我们需要多少“句式”才够描述各种逻辑
答案1:NO。定义一些有特定含义的“关键字”,计算机只能明白这些字的意义。
可以通过少量词定义更多词(30+关键字)
答案2:NO。定义一些“数据的类型”和相应的“操作符号”,计算机只能明白这些类型。(10+基本数据类型,30+运算符号)
答案3:顺序、分支、循环,只需要3种。
程序中的套话
#include <iostream>
using namespace std;
int main()
{
//Type your code in here
retuen 0;
}
简单的程序
定义变量,输出数据:
int a = 0;
cout<<a<<endl;
定义变量,输入数据:
int a = 0;
cout<<"请输入一个数"<<endl;
cin>>a;
cout<<"我刚刚输入的a:"<<a<<endl;
实型变量,顺序语句:
float a = 0,b = 0,temp = 0;
cout<<"Input a and b:"<<endl;
cin>>a>>b;
cout<<"a = "<<a<<",b = "<<b<<endl;
temp = a; a = b; b = temp;
cout<<"a = "<<a<<",b = "<<b<<endl;
分支语句(if语句)
int x = 0,y = 0;
cin>>x>>y;
if(x>y)
cout<<"Max number is:"<<x<<endl;
else
cout<<"Max number is:"<<y<<endl;
循环语句(for语句)
int i = 0;
cout<<"20以内的奇数: "<<endl;
for(i = 0;i < 20;i++)
{
if(i%2!=0)
cout<<i<<endl;
}
循环语句,数组
int i = 0;
char a[10] = {'a','b','c','d','e','f','g','h','i','j'}
cout<<"字母表中序号为奇数的前五个字母:"<<endl;
for(i = 0; i < 10; i=i+2)
{
cout<<a[i]<<endl;
}
综合程序,注释和缩进增加可读性
char a='';//用于存放用户输入的字母
cout<<"猜我是哪个字母,最多5次:" <<endl;
int i = 0;//用于记录猜过多少次
for(i = 0;i < 5;i++)
{
cin>>a;
if(a=='G')//如果猜中
{
cout<<"Good Job!"<<endl;
break;//终止循环
}
else //如果没有被猜中
cout<<"Wrong! Try it again!"
}
好程序的特点
- 结果运行正确
- 程序易于被他人看懂
- 程序结构清楚
作业
Quiz1
实现冒泡排序
#include <iostream>
using namespace std;
int main() {
int n, a[1000];//一共n个数,n不超过1000,a用来保存这些数
cin>>n;//输入n个数
for (int i = 0; i < n; i++) {
cin>>a[i];
}
//冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
for (int i = 0; i < n; i++) {
for (int j = 1; j < n-i; j++) {
if(a[j-1]>a[j])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
// 依次输出
for (int i = 0; i < n; i++) {
cout<<a[i]<<endl;
}
return 0;
}
Quiz2
奇偶排序(一)
#include "iostream"
using namespace std;
int main(){
int a[10];
for (int i = 0; i < 10; i++) {
cin >> a[i];
}
//首先,我们把奇数放到数组左边,偶数放到数组右边
int l = 0, r = 9;//用左手和右手分别指向数组两端
while (l <= r){
bool leftIsOdd = a[l] % 2 == 1;
bool rightIsEven = a[r] % 2 == 0;
if (leftIsOdd){
l++;
} else if (rightIsEven){
r--;
} else if (!leftIsOdd && !rightIsEven){
int temp = a[l];
a[l] = a[r];
a[r] = temp;
}
}
//对l左边(奇数部分)进行冒泡排序
int start = 0, end = l;
for (int i = start; i < end-1; i++) {
for (int j = start+1; j <start + end - i ; j++) {
if(a[j-1] > a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
//对l右边(偶数部分)进行冒泡排序
start = l, end = 10;
for (int i = start; i < end - 1; i++) {
for(int j = start + 1; j < start + end - i;j++){
if(a[j-1] > a[j]){
int temp = a[j-1];
a[j-1] = a[j];
a[j] = temp;
}
}
}
for (int i = 0; i < 10; i++) {
cout<<a[i]<<' ';
}
return 0;
}
Quiz3
奇偶排序(二)
#include <iostream>
using namespace std;
int main(){
int a[10];
for (int i = 0; i < 10; i++) {
cin>>a[i];
}
//冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
for (int i = 0; i < 9; i++) {
for (int j = 1; j < 10-i; j++) {
//与刚才的冒泡排序不同,我们不只是通过比较数字大小决定顺序
//如果左边的为偶数,右边的为奇数,顺序也是需要颠倒的
bool leftIsEven = a[j - 1] % 2 == 0;
bool rightIsEven = a[j] % 2 == 0;
if((leftIsEven && !rightIsEven) ||
(leftIsEven == rightIsEven && a[j-1]>a[j])){
int temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
}
}
for (int i = 0; i < 10; i++) {
cout<<a[i]<<' ';
}
return 0;
}
Coursera课程笔记----计算导论与C语言基础----Week 4的更多相关文章
- Coursera课程笔记----计算导论与C语言基础----Week 6
理性认识C程序 导论(Week 6) 明确学习进度 讲课内容 感性➡️理性➡️函数➡️指针等 作业练习 初级阶段 ➡️正常作业练习 C语言的由来 程序设计语言的分类 低级语言之机器语言 0010101 ...
- Coursera课程笔记----计算导论与C语言基础----Week 8
C语言中的运算成分(Week 8) 赋值运算符 "="赋值运算符 给赋值号左边的变量赋予数值 在变量定义的同时可以为变量赋初值 要点一:两面类型不同 若=两边的类型不一致,赋值时要 ...
- Coursera课程笔记----计算导论与C语言基础----Week 7
C语言中的数据成分(Week7) 内存 把内存想象成长带,带子上有许多方格,每个方格有8位(8bit) 2^10 = 1024 1B = 8 b 1KB = 1024Byte MB.GB.TB.PB- ...
- Coursera课程笔记----计算导论与C语言基础----Week 2
计算机的历史与未来(Week 2) 计算机历史 早期计算机:手工计算器➡️机械计算器➡️计算机原型 现代计算机:电子管计算机➡️晶体管计算机➡️集成电路计算机➡️超大规模集成电路 早期的手工计算辅助工 ...
- Coursera课程笔记----计算导论与C语言基础----Week 9
C语言中的控制成分(Week 9) 计算机程序的基本结构 任何具有单入口单出口的程序,都可以用顺序结构.分支结构.循环结构来表达 分支语句 在执行if语句前,先对表达式求解 if()内可以是任意的数值 ...
- Coursera课程笔记----计算导论与C语言基础----Week 3
存储程序式计算机 冯·诺伊曼式计算机 "关于EDVAC的报告草案" 组成:控制器(协调工作).运算器(算数&逻辑运算).存储器(存储操作信息和中间结果).输入设备.输出设备 ...
- Coursera课程笔记----计算导论与C语言基础----Week 1
计算机的基本原理(Week 1) 第一次数学危机 公元前500年,毕达哥拉斯学派,他们相信数是万物的本源:一切数均可表示成整数或者整数之比 然而毕达哥拉斯证明了勾股定理,某些直角三角形的三边比不能用整 ...
- Coursera课程笔记----计算导论与C语言基础----Week 12
期末编程测试(Week 12) Quiz1 判断闰年 #include <iostream> using namespace std; int main() { int year; cin ...
- Coursera课程笔记----计算导论与C语言基础----Week 11
C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...
随机推荐
- [总结]最小生成树之Kruskal算法
目录 一.最小生成树的相关知识 1. 树的性质 2. 生成树 3. 最小生成树 4. 最小生成树的性质 二.Kruskal算法求最小生成树 1. 核心思想 2. 具体流程 3. 图示 4. 代码实施 ...
- Web三维编程入门总结之二:面向对象的基础Web3D框架
本篇主要通过分析Tony Parisi的sim.js库(原版代码托管于:https://github.com/tparisi/WebGLBook/tree/master/sim),总结基础Web3D框 ...
- Python基础:按位异或 ^ ,按位或 | ,按位与 &
前言文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http: ...
- 百度智能云虚拟主机 Typecho 分类功能失效 | 开启伪静态地址
出现的问题 $this->is() 方法失效,无法正确判断 archive.category.tags 页面类型. 点击分类页面.归档页面时,虽然 URL 是正确的,但网页内容却是 index. ...
- SpringCloud-Config 配置中心
概述 分布式系统面临的问题 微服务意味着要将单体应用中的业务拆分成一个个的子服务,这些服务都需要必要的配置信息才能运行,如果有上百个微服务,上百个配置文件,管理起来是非常困难的,这时候,一套集中式的. ...
- curl的$post传递多维数组
php curl传数组的话只能传一维数组,如果想传多维数组:两个方法: 1.转换成json在传输 2. //通过curl模拟post的请求: function SendDataByCurl($url, ...
- 作业九——DFA最小化,语法分析初步
- [Qt] 默认的槽函数 例如 on_pushButton_clicked()
在 setupUI 函数里有一句: QMetaObject::connectSlotsByName(QWDialog); 它假设槽函数的名称是 void on_<object name>_ ...
- Docker网络与存储(三)
Docker的网络和存储 1.1 Docker的4种网络模式 host模式,使用--net=host指定. container模式,使用--net=container:NAME_or_ID指定. no ...
- 微软开放 Build 2020 免费注册
微软已经开放 Build 2020 线上开发者会议注册,https://mybuild.microsoft.com/.Build 2020 会议将于 5 月 19 日至 20 日召开,核心内容都是围绕 ...