感性认识计算机程序(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;
}

最新文章

  1. ACCEPTANCE CRITERIA FOR USER STORIES
  2. C#+OpenGL+FreeType显示3D文字(2) - 用GLSL+VBO绘制文字
  3. Oracle自定义数据类型 1
  4. 浅析CSS中的haslayout
  5. 领域驱动设计(DDD)的实际应用
  6. Android如何调用第三方SO库(转)
  7. Unity 碰撞器和触发器的理解
  8. java自加和自减
  9. Centos 6.5下mysql 8.0.11的rpm包的安装方式
  10. 百度分享到修改url
  11. 2018-2019-2 网络对抗技术 20165225 Exp3 免杀原理与实践
  12. MongoDB Redis
  13. day052-53 django框架
  14. 读vue-0.6-observer.js源码
  15. Sql 正确删除用户过期的数据
  16. PHP面试准备
  17. MPI 环境搭建问题-运行程序闪退
  18. ubuntu下IDEA配置tomcat报错Warning the selected directory is not a valid tomcat home
  19. [16] 螺旋面(Spire)图形的生成算法
  20. WebService 与 Socket 区别

热门文章

  1. [算法]素数筛法(埃氏筛法&amp;线性筛法)
  2. 使用Docker快速搭建PHP开发环境
  3. 别人用钱,而我用python爬虫爬取了一年的4K高清壁纸
  4. python实现双向链表的操作
  5. stand up meeting 1-4
  6. mysql创建存储过程及调用
  7. System类的两个静态方法currentTimeMillis 和 arraycopy
  8. pytorch中的前项计算和反向传播
  9. Nginx安装、多域名访问
  10. Python开发基础之Python常用的数据类型