计算机和编程语言初见

学习程序设计的目的是什么呢?

不一定要做出一个软件或系统出来,更重要的是理解计算机是如何工作的以及它的长处和短处。

计算机本身是无意识的,因此我们要求它为我们做事时:应该将步骤细化、“直”化(规律化);其实计算机什么也不会,我们必须手把手地教他一步一步的做。而计算机的某个优点也正是如此——听话,你叫它往东它绝不往西。然后我们还得教计算机哪些步骤串成一个功能,而此种联系、规范就是程序!而我们通过编程语言来交流、认识计算机。

int u = 32;
int v = 26;
while(v != 0){int temp = u%v;u = v;v = temp;
}
printf("%d", u);

(“程序画”一览)

  • 计算机做的所有事情都叫 计算(万物皆数)
  • 计算的步骤就是算法

计算机的思维方式:重复

人类最讨厌做重复的事情了,而计算机恰恰相反——它最喜欢做重复的事情。在计算机的世界里当你造出第一个轮子时,那么距离造出成千上万的轮子就不远了。

编程语言单以执行方式分类:

  1. 解释:同声传译
  2. 编译:翻译出书

C 语言

C 是一种比较基础的编程语言,其后的语言几乎都是”C-like“语言。(语言的能力/适用领域主要由其函数库决定的)

变量(缓冲数据)

将一个数据用变量缓冲下来,这就能确保它能参与到后面的计算中。格式如下:

<类型名称> <变量名称>;

C 的保留字一览:

auto,break,case,char,const,continue,default,do,double,else,enum,extern,float,for,goto,ifint,long,registerreturn,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile,while,inline.restrict

所谓赋值和初始化

“=”可用作赋值,即把右边的值赋值给左边:<——

初始化:在定义的同时就已经赋值了

注意!C 是一种有类型的语言,所有变量在使用前必须定义或声明(即所有变量都应有确定的数据类型)。数据类型表明在变量可以存储什么样的数据(是一种指定规范)

 读值

scanf("%d", &price);

其中“&”是取地址符,自己可以 try 一 try!

常量(固定不变的数)

在运算过程中值不变的数就是常量(直接量 literal),以下是定义示例:

const int AMOUNT = 100;

运行逻辑

if...else

1.
if(逻辑表达式) {}2.
if(逻辑表达式) {}else {}3.
if(逻辑表达式) {}else if(逻辑表达式){...}...
逻辑表达式(条件)
运算符意义
=相等
!=不相等
>大于
>=大于或等于
<小于
<=小于或等于

循环*

  • while:不确定循环次数多用此
  • do...while:至少执行一次的循环
  • for:已确定循环次数多用此

(数据类型就不全说了,上网查吧!)

数组

数据可以存放在变量里,每一个变量有一个名字,有一个类型,还有它的生存空间。如果我们需要保存一些相同类型、相似含义、相同生存空间的数据,我们可以用数组来保存这些数据,而不是用很多个独立的变量。数组是长度固定的数据结构,用来存放指定的类型的数据。一个数组里可以有很多个数据,所有的数据的类型都是相同的。(引用一手)

const int number = 10;
int x;
int count[number];
int i;
for(i=0; i<number; i++) {count[i] = 0;
}
scanf("%d", &x);
while(x!=-1) {if(x>=0 && x<=9) {count[x]++;}scanf("%d", &x);
}
for(i=0; i<number; i++) {printf("%d:%d\n", i, count[i]);
}

函数(一块代码)y=f(x)

main() 函数是 C 语言程序的正式入口!

函数的好处:提高了代码复用性和可读性及更方便的调用调试。

函数接收0/若干个参数,做个事情并返回0/若干个值

函数原型:就是提前写出函数头而未有函数体,目的是先告诉编辑器这个函数的基本信息(参数列表定义等等)

每个函数都有自己的变量空间,其参数也位于这个独立的空间中,与其它函数无关(一般叫函数参数表中的参数为“形式参数”,而实际调用函数时给的值称作“实际参数”)

扩展:

  1. 变量的生存期和作用域
  2. 二维数组 如 int a[3][5];(通常理解为一个3行5列的矩阵)

注意!C 语言不允许函数嵌套定义

井字棋(第一个 C语言程序)

#include <stdio.h>int main() {int board[3][3] = {{0,0,0},{0,0,0},{0,0,0}};int i = 0,x,y;int result = 0; //0:没人赢,1:X赢,2:O赢int round = 0; //回合数    while (i < 50){printf("\n第%d回合开始:\n\n", ++round);show(board);printf("\nX方请选择您的横纵坐标:(中间用空格隔开)");scanf("%d %d", &x, &y);board[y][x] = 1;printf("O方请选择您的横纵坐标:(中间用空格隔开)");scanf("%d %d", &x, &y);board[y][x] = 2;if (judge(board) == 0){continue;}else if (judge(board) == 1){show(board);printf("恭喜X方胜利!");break;}else if (judge(board) == 2){show(board);printf("恭喜O方胜利!");break;}i++;}return 0;
}
int show(int board[3][3]) {for (int i = 0; i < 3; i++){for (int j = 0; j < 3; j++){if (board[i][j] == 1){printf("X    ");continue;}else if (board[i][j] == 2){printf("O    ");continue;}else {printf("_    ");continue;}}printf("\n\n");}return 0;
}
int judge(int board[3][3]){int row_numOfX = 0;int row_numOfO = 0;int col_numOfX = 0;int col_numOfO = 0;int i,j;for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){if (board[i][j] == 1){row_numOfX ++;}else if (board[i][j] == 2){row_numOfO ++;}}if (board[j][i] == 1){col_numOfX ++;}else if (board[j][i] == 2){col_numOfO ++;}if (row_numOfX == 3 || col_numOfX == 3){return 1;}else if (row_numOfO == 3 || col_numOfO == 3){return 2;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day51: QTday4,绘制事件、QT连接TCP网络通信

一、绘制时钟 widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QRectF> #include <QTimer> #include <QTime> #include <QTimerEvent> #include <QLabe…

Spring Authorization Server入门 (十八) Vue项目使用PKCE模式对接认证服务

Vue单页面项目使用授权码模式对接流程说明 以下流程摘抄自官网 在本例中为授权代码流程。 授权码流程的步骤如下&#xff1a; 客户端通过重定向到授权端点来发起 OAuth2 请求。 对于公共客户端&#xff0c;此步骤包括生成code_verifier 并计算code_challenge&#xff0c;然后…

mysql数据库备份(mysqldump)

mysqldump命令备份数据 mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sqlmysqldump常用操作示例 1. 备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlbackup/mydb.sql2. 备份全部数据库的结构&#xff08;加 -d 参数&#xff09; …

【音视频】ffplay解析-音视频同步

音视频同步 主要解析&#xff1a;以音频为基准&#xff0c;让视频合成音频 思路 视频慢了则丢掉部分视频帧&#xff08;视觉->画⾯跳帧&#xff09; 视频快了则继续渲染上⼀帧 具体实现 一个国际标准&#xff1a;音频帧-视频帧时间戳的差值在-100ms~25ms内流畅 1.差值音频…

菜鸟教程《Python 3 教程》笔记(20):面向对象

菜鸟教程《Python 3 教程》笔记&#xff08;20&#xff09; 20 面向对象20.1 面向对象技术简介20.2 创建类20.2.1 类定义20.2.2 实例化20.2.3 初始化20.2.4 类变量、实例变量20.2.5 类方法、实例方法、静态方法 20.3 访问可见性20.3.1 property装饰器 20.4 动态性20.4.1 __slot…

wpf资源Resources探究性学习(一)

测试环境&#xff1a; vistual studio 2017 .net framework 3.5 window 10 新建WPF应用(.net framework)&#xff0c;项目名称为&#xff1a;WpfDemo&#xff0c;如下图&#xff1a; 新建完项目后&#xff0c;默认带有一个名为MainWindow.xaml的代码 一 简单使用字符串资源…

js常用的数组处理方法

some 方法 用于检查数组中是否至少有一个元素满足指定条件。如果有满足条件的元素&#xff0c;返回值为 true&#xff0c;否则返回 false。 const numbers [1, 2, 3, 4, 5];const hasEvenNumber numbers.some((number) > number % 2 0); console.log(hasEvenNumber); /…

1_图神经网络GNN基础知识学习

文章目录 安装PyTorch Geometric安装工具包 在KarateClub数据集上使用图卷积网络 (GCN) 进行节点分类两个画图函数Graph Neural Networks数据集&#xff1a;Zacharys karate club network.PyTorch Geometric数据集介绍 edge_index使用networkx可视化展示 Graph Neural Networks…

H3C 6520X版本U盘升级

1.软件下载链接&#xff1a; 核心交换机-以太网交换机-工业交换机-新华三集团-H3C 账号&#xff1a;yx800 密码&#xff1a;01230123 2.将升级包放进U盘 3.登录交换机&#xff0c;给交换机插上U盘 >copy usba0:/S6520X-CMW710-R6628P40.ipe S6520X-CMW710-R6628P40.ip…

(并查集) 1971. 寻找图中是否存在路径 ——【Leetcode每日一题】

❓ 1971. 寻找图中是否存在路径 难度&#xff1a;简单 有一个具有 n 个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 …

Flash的学习

Flash的学习 1 概述 2 特性 STM32 的内部FLASH 包含主存储器、系统存储器以及选项字节区域。 2.1 主存储器 主存储器分为256 页&#xff0c;每页大小为2KB&#xff0c;共512KB。这个分页的概念&#xff0c;实质就是FLASH 存储器 的扇区&#xff0c;与其它FLASH 一样&…

UWB定位模块

UWB定位模组是华星智控自研的小尺寸高集成度模组&#xff0c;模组长宽厚为30.1513.955.62毫米&#xff0c;天线采用IPEX接口分体式设计&#xff0c;方便集成于您的产品中&#xff0c;产品采用本安设计&#xff0c;可以用于煤矿等井下场景&#xff0c;通信距离>100米&#xf…

统计十进制数的二进制表示中1的个数 ← 清华 邓俊辉

【题目描述】 统计十进制数的二进制表示中1的个数。【算法分析】 虽然曾在 https://blog.csdn.net/hnjzsyjyj/article/details/110148954 发过一篇关于“统计十进制数的二进制表示中1的个数”的博客&#xff0c;但本文实现了一种新的思路。此思路来源于清华大学邓俊辉版《数据结…

什么是API接口?API接口的类型,如何调用API接口?

当今互联网技术的发展越来越快&#xff0c;越来越多的网站和应用程序需要获取外部数据来提供更好的服务和用户体验&#xff0c;这就需要使用API接口。本文将会对API接口的概念、类型以及如何调用API接口进行简要介绍。 一、什么是API接口&#xff1f; API&#xff08;Applica…

不可忽视的PG表膨胀优化

我是一个目录 案例1. 什么是表膨胀&#xff1f;2. 表膨胀危害是什么&#xff1f;3. 表膨胀是怎么产生的&#xff1f;4. 如何优化膨胀表&#xff1f; 案例 先来看一例公有云服务登录web页面端卡住案例&#xff1a; 故障现象&#xff1a;WEB端登录非常缓慢&#xff0c;需要耗时5…

前馈神经网络(FFNN)和多层感知机(MLP)

多层感知器&#xff08;MLP, Multi-Layer Perceptron&#xff09;和前馈神经网络&#xff08;Feed-Forward Neural Network, FFNN&#xff09;是深度学习中两个经常被使用的术语&#xff0c;它们经常被互换使用。让我们详细地了解这两个术语&#xff1a; 多层感知器 (MLP): M…

刷题统计(蓝桥杯)

刷题统计 问题描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天 做 a 道题目, 周六和周日每天做 b 道题目。请你帮小明计算, 按照计划他将在 第几天实现做题数大于等于 n 题? 输入格式 输入一行包含三个整数 a,b 和 n. 输出格式 输出一个整数代表…

leetcode做题笔记146. LRU 缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

【AD】【PCB封装规范计划】 -CON排针类

像这种CON&#xff0c;排针的。画PCB封装的时候&#xff0c;要把数字用丝印标出来&#xff01;&#xff01;&#xff01;

如何使用 Node.js和Express搭建服务器?

如何使用NodeJs搭建服务器 1. 准备工作1.1 安装Node.js 2. 安装express2.1 初始化package.json2.2 安装express2.3 Express 应用程序生成器 1. 准备工作 1.1 安装Node.js Node.js 是一个开源、跨平台的 JavaScript 运行时环境。 下载链接&#xff1a;Node.js官网下载 建议下…