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"; 不能用赋值语句将一个字符串常量 ...
随机推荐
- Linux终端命令格式
01.终端命令格式 command [-options] [parameter] 说明: command:命令名,响应功能的英文单词或单词的缩写 [-options]:选项,可用来对命令进行控制,也可 ...
- python基础:如何使用python pandas将DataFrame转换为dict
之前在知乎上看到有网友提问,如何将DataFrame转换为dict,专门研究了一下,pandas在0.21.0版本中是提供了这个方法的.下面一起学习一下,通过调用help方法,该方法只需传入一个参数, ...
- Mysql大厂高频面试题
前言 前几天有读者找到我,说想要一套全面的Mysql面试题,今天陈某特地为她写了一篇. 文章的目录如下: Mysql面试题 什么是SQL? 结构化查询语言(Structured Query Langu ...
- element-ui修改自定义主题
官方文档:https://element.eleme.cn/#/zh-CN/component/custom-theme 简单更换主题色 打开:在线主题编辑器,仅修改主题色,点击右上角[切换主题色], ...
- python调用word2vec工具包安装和使用指南
python调用word2vec工具包安装和使用指南 word2vec python-toolkit installation and use tutorial 本文选译自英文版,代码注释均摘自本文, ...
- Springboot:修改默认端口以及Logo(三)
端口修改 在application.yml文件中增加端口的配置: server: port: 8081 Logo修改 Logo生成网址: https://www.bootschool.net/asci ...
- LeetCode466. Count The Repetitions
题目链接 传送门 题意 定义一个特殊的串, 现在给出串S1和S2的参数, 问: S2最多可以多少个连接起来扔是S1的子序列, 求出这个最大值 解题思路 注意s1与S1的区别, 可以去看题目描述, 预处 ...
- web--ajax--json
案例: 其中,用eval()解析的话,如果json有一些代码,如:{"age":"alert(你好)"},他也会帮你实行,而JOSN.parse();则会自动报 ...
- tp5--开启与关闭调试模式
https://www.cnblogs.com/finalanddistance/p/8906000.html TP5 显示错误信息 在TP5中,我们运行的代码有错误无法执行时,只显示页面错误,而 ...
- 文件上传漏洞(pikachu)
文件上传漏洞 文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像,附件等等.当用户点击上传按钮后,后台会对上传的文件进行判断,比如是否是指定的类型.后缀名.大小等等,然后将其按照设 ...