zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    android测试点汇总
    Java Web应用调优线程池
    大型网站架构技术一览
    如何用消息系统避免分布式事务
    VMware Tools安装
    Git
    构架分布式队列编程
    排序算法概述
    ThreadLocal使用和原理
    JVM常用参数配置
  • 原文地址:https://www.cnblogs.com/maimai-d/p/12757715.html
Copyright © 2011-2022 走看看