计算机导论——C语言001

news2024/11/24 13:35:38

前言
学习一门语言不是要记住所有这些函数,而是要懂得在哪里找到解决问题的答案
学习英语不是要记住所有单词,而是要懂得查字典(因为这样就可以理解单词,并会用单词造句子了)

以下侧重于了解输出(side effects),即显示在屏幕上的。
由可视化的拼图对应上实际的代码。
在这里插入图片描述

一、理解概念:

1.1 常识

1.源代码(人编写的),更高级的机器
机器代码(只用01编写),更低级的机器

将一种语言(源代码)转化成另一种语言(机器代码),需要一个程序转换,这个机器就是编译器(compiler)
So compiler is a program that translate one language to another.

2.Prompt=terminal
3.printf的f表示【格式化】。如何理解格式化呢,举个例子:
printf(“hello, %s”, David);
在这条语句中,把David放到%s位置就是格式化。简言之,按照我事先想到的格式来输出。这个函数最大的作用是方便我们理解计算机,对其进行一定程度上的可视化。
4.双引号“”,结束用;
5.头文件.h是
6.\n的出现是为了避免终端输出时系统带出来的$提示符(也可能是其它提示符,$是传统的提示符)
7.返回值就像外界送来的信息,你想怎么用都可以,可以存储也可以改变。它不能像printf那样显示在屏幕上,但是在某个block里存储着等着调用,打个比方他像别人给递来的“小抄”
8.启发式方法是相对于“对用户友好的方法”而言的。启发式原则就是按照我想的方式输出什么(也叫格式化,给了模板的),但可以从上面的例子看到,%s有点烦人,这能帮助计算机理解但是对用户不友好,所以是人启发计算机,叫启发式方法。

9.函数->函数顶部的东西(介绍顺序)
为什么要包含<studio.h>的东西。C语言中有很多内置功能,它们被储存在不同文件中。当我们需要某种功能时(使用函数),需要对该函数进行一个声明,声明是教会编译器如何执行该功能(就是别人事先写好的底层实现)。打个比方,我买了一个破壁机(C语言),对我而言需要豆浆时(函数),对机器而言需要告诉它如何打豆浆(制造商事先设置电路)。函数是带着出厂设置来的,方便在用函数出错的时候找到源头进行沟通。也就是直接用别人的东西,知道给东西在哪。

#include 就是告诉编译器,在做任何事情之前先去找到在本地硬盘上有一个名为<studio.h>的文件,将其复制粘贴到要用的地方。

【头文件】以“.h”结尾的文件——没声明头文件就容易出错!!!(机器不知道怎么实现)
它允许访问。更多的头文件(基础通用功能)可以访问

manual.cs50.i

即library全部是别人写的代码,我可以直接使用这些代码。——用library的东西就是站在巨人的肩膀上方便解决对我们而言更有趣的问题。
举个例子,printf如何工作的?不知道,反正有人写好了基础通用内容放在library中。我直接用就能把想要打印的东西显示在屏幕上。

10.开源:可以看到源代码(人写给人看的)
闭源:看不到源代码,但是可以用编译后给机器看的那些0和1

Q1:如果想要输出\n(不是空行)怎么办?
A:再在前面加一个\。即\n。但这不是我们经常要做的事情。

11.创建并初始化,可以一起。即int counter = 0;

12.只是为了节省敲代码的时间,提出一些需要时间习惯的操作,其实出发点很简单,比如:
1)循环语句中if-> else if,若是呼之欲出的结果则直接用else,否则用else if再判断
2)计数操作:counter = counter + 1;变成了counter += 1;或者counter++;(一个比一个简洁少敲代码)

13.“.”指你当前所在的文件夹,“…”指你的父级文件夹
问题是我不知道自己当前在哪里,这要怎么看?
答:举例来说,我正在编译的文件compare.c,它位于文件夹A里。那么我当前所在文件夹不是A本身,而是把A打开了即A下/A里面。A是它的上一级文件。
简而言之,把.当作占位,不知道具体有谁但是它们实际所处位置知道。

14.流程图可以把程序可视化。
从这个角度就可以理解,为什么程序设置main入口?该入口对应于流程图的的start。
请添加图片描述
请添加图片描述
15.为什么要用到else,而不是只用if?
若不用else,那么三个if问题是独立的,没有充分利用之前提问的信息。不论输入的x,y是什么,都需要问三个问题。
设计思想:对于迫不得已/最不可能发生的情况,才走最长的路径。除此之外,走到分支都是比较少的。
这点让我想到ResNet、UNet的网络设计创新点,它会用到之前的信息,而不是像CNN只是一层层地做处理。但是它们在用以前信息的时候没有判断,按照事先设计好的跳跃连接都会用,这可不可以考虑改进加入对是否进行跳跃连接的判断呢?以及跳跃连接最优连到哪里?

16.用||表示,用&&表示

17.两种循环的区别(朝不同的方向计数):
while的计数是从最好的开始,循环到不满足最低标准。(要做的操作是减:从3往下数到0)

int i = 3;
while (i > 0)
{
	printf("meow\n");
	i--;
}

for的计数是无门槛开始,循环到超过最高标准。(要做的操作是加:从0往上加到2)——实际计数,数完才进位
代码更简洁。

for (int i =0; i < 3; i++)//三件事:初始化变量用来计数;布尔型变量;每次通过代码想做什么事以更新
{
	printf("meow\n");
}

为什么几乎都将定义的变量初始化成0来计数?因为这样不浪费比特数(比如1-25只能表示25个数,但是0-25能表示26个数,所以说从0开始不浪费)

字节Byte是计算机文件大小的基本计算单位,表示数据类型或语言字符。1 Byte = 8 bits。在C++的数据类型中,1个字节为char(一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。一些处理器能够处理双字节或单字节指令),4个字节为int,8个字节为double;
位/比特bit是大小单位,作为数据传输的单位,表示数据量。是计算机运算的基础,属于二进制的范畴,表示一系列二进制位

18.当我想自己创建一个函数/功能:
返回值 函数名(输入的参数)
void meow(int n)//没有返回值,定义一个meow的函数,它的参数是输入叫的次数一个整型n
int main(void)//主函数的返回值是整型,不需要输入任何参数

二、编程的三个步骤:

1.创建.c文件,以写入源代码——code 功能.c
2.编译器将源代码转化成机器语言——make 功能
3.“./hello”运行我的代码。(相当于我在电脑上双击图标的操作 )——./功能

三、C的特点

告诉编译器你想使用的变量类型(帮助编译器理解,如何将返回值存储在计算机内存中)

四、好的习惯:

文件名全用小写
字符串型string用双引号" "
单个字符型char用单引号’ ’
当编写计数代码时,应该几乎总是从0开始(这样到关心的总数时不必=)

五、Tips

1.若是想让程序一直循环做某件事,就让条件为True!

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

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

相关文章

new Ammo.btSoftBodyHelpers() 是 Ammo.js 中的一个构造函数,用于创建软体物体的辅助对象,提供了一些方法来创建软体物体

demo案例 new Ammo.btSoftBodyHelpers() 是 Ammo.js 中的一个构造函数&#xff0c;用于创建软体物体的辅助对象&#xff0c;提供了一些方法来创建软体物体。以下是它的一些重要信息&#xff1a; 入参&#xff1a;通常不需要传入参数。 出参&#xff1a;创建的新的软体辅助对…

软件设计师-基础知识科目-面向对象技术知识7

七、面向对象技术知识&#xff1a; 面向对象基础知识&#xff1a; 对象&#xff1a; 对象的组成部分包括&#xff1a;对象名&#xff0c;状态(属性)&#xff0c;行为(操作)。 类&#xff1a; 类的分类&#xff1a;实体类、接口类(边界类)和控制类。 实体类的对象&#xff…

CentOS7 boa服务器的搭建和配置

环境是CentOS7&#xff0c;但方法不局限于此版系统&#xff0c;应该是通用的。 具体步骤如下&#xff1a; 1. 下载boa源码 下载地址: Boa Webserver 下载后&#xff0c;进入压缩包所在目录&#xff0c;进行解压&#xff1a; tar xzf boa-0.94.13.tar.gz 2. 安装需要的工具b…

信息系统项目管理师——第23章组织通用管理

本章在第三版流程和知识管理的基础上新增了2节内容&#xff0c;从2023年上半年的考情来看来 选择题&#xff0c;考1分左右&#xff0c;知识点比较分散&#xff0c;刷下题&#xff0c;考前突击下即可。 案例题&#xff0c;不考。 论文题&#xff0c;不考。 1人力资源管理 1.人…

微服务学习(黑马)

学习黑马的微服务课程的笔记 导学 微服务架构 认识微服务 SpringCloud spring.io/projects/spring-cloud/ 服务拆分和远程调用 根据订单id查询订单功能 存在的问题 硬编码 eureka注册中心 搭建eureka 服务注册 在order-service中完成服务拉取 Ribbon负载均衡 Nacos注册中心…

结合ArcGIS+SWAT模型+Century模型:流域生态系统水-碳-氮耦合过程模拟

原文链接&#xff1a;结合ArcGISSWAT模型Century模型&#xff1a;流域生态系统水-碳-氮耦合过程模拟https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&tempkeyMTI2NV9sMGRZNUJoVkNVc1ZzSzRuMl9XXzhqX0R3cXpESWFwM1E4cFY4ejNqWFh3VUl0dlZkNWk4b20ydFdFTy1xS2ZObGN0Z0ZXSjly…

交流电源的频率如何测试

交流电源的频率是指每秒钟交流电源周期的数量&#xff0c;通常是50Hz和60Hz。但是在实际使用中会有一定的波动&#xff0c;一般交流电源频率的波动范围是10%。 交流电源频率的高低对电路有很大的影响&#xff0c;直接影响着电能质量和电路的稳定性。此外&#xff0c;交流电源的…

Docker核心特征

Docker的基本概念 Dockerfile&#xff1a;制作进行的文件&#xff0c;可以理解为制作镜像的一个清单。 镜像&#xff1a;用来创建容器的安装包&#xff0c;可以理解为给电脑安装操作系统的系统镜像。 容器&#xff1a;通过镜像来创建的一套运行环境&#xff0c;一个容器里可…

eBPF 主题分享:Kindling-OriginX 解密如何揭开可观测性盲区实现根因推导

“第二届eBPF开发者大会”将于2024年4月13日在陕西省西安市线下召开,由西安邮电大学主办。本次大会以“发挥eBPF技术力量&#xff0c;提升计算机系统可观测性和性能”为主题&#xff0c;涵盖了eBPF技术及发展、eBPF网络安全应用、eBPF可观测性及应用、软件性能工程等方面&#…

代理模式:控制对象访问的智能方式

在面向对象的软件开发中&#xff0c;代理模式是一种结构型设计模式&#xff0c;它为其他对象提供一个代理或占位符以控制对这个对象的访问。代理模式在实现权限控制、延迟初始化和远程对象访问等方面非常有用。本文将详细介绍代理模式的定义、实现、应用场景以及优缺点&#xf…

Tomcat以服务方式启动,无法访问网络共享目录问题

关于“Tomcat以服务方式启动&#xff0c;无法访问网络共享目录问题”解决方式如下&#xff1a; 1、通过doc命令【services.msc】打开本地服务找到&#xff0c;找到tomcat服务所在位置 2、右键打开Tomcat服务的属性 3、选择 登陆选项卡 4、选择“此账户”选项&#xff0c;并…

预告:(阶乘)+统计读取的单个字符+把我电脑给干关机了的题,还好在tmp里面找到(穷举法编程)+(双循环算法)+(最大公约数,最小公倍数)

在赶一篇作业出来 第一个&#xff1a; 题目&#xff1a;编程实现&#xff0c;求saaaaaaaa⋯an个a的值&#xff0c;其中a是一个数字。例如当a为2&#xff0c;n为5时&#xff0c;计算&#xff0c;2&#xff0b;22&#xff0b;222&#xff0b;2222&#xff0b;22222的值。 #inc…

elementUI 下拉框加提示文案

效果如下&#xff1a; 展示文案在最下面&#xff0c;跟选项有个分割线 <el-select v-model"value" placeholder"请选择" clearable popper-class"addNotice" class"addNoticeS" visible-change"(v) >selectNotice(v,展示…

物联网SaaS平台

在信息化、智能化浪潮席卷全球的今天&#xff0c;物联网SaaS平台作为推动工业数字化转型的重要工具&#xff0c;正日益受到广泛关注。那么&#xff0c;物联网SaaS平台究竟是什么&#xff1f;HiWoo Cloud作为物联网SaaS平台又有哪些独特优势&#xff1f;更重要的是&#xff0c;它…

Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结

一、前言 记录时间 [2024-4-7] 前置文章&#xff1a; Docker学习笔记&#xff08;一&#xff09;&#xff1a;入门篇&#xff0c;Docker概述、基本组成等&#xff0c;对Docker有一个初步的认识 Docker学习笔记&#xff08;二&#xff09;&#xff1a;在Linux中部署Docker&#…

IDEA2023连接服务器docker并部署ruoyi-cloud-plus项目

文章目录 TCP 方式连接docker1. 服务器docker配置修改查看虚拟机中Docker配置文件位置修改配置文件重启docker服务关闭防火墙 2. idea安装docker插件3. idea连接docker服务 部署ruoyi-cloud-plus项目1. 项目环境说明2. 安装Centos73. 安装docker4. idea配置服务器SSH连接5. ide…

SHAP安装问题

一、安装 pip install shap -i https://pypi.tuna.tsinghua.edu.cn/simple 二、遇到问题 1、提示报错如下&#xff1a; ModuleNotFoundError: No module named numba.core 安装numba&#xff1a; pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple 提示已经…

【go从入门到精通】作用域,包详解

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

基于React封装Handsontable并兼容antd

背景 其实Handsontable官方也提供了React的版本&#xff0c;但是官方的版本再编辑和渲染的时候并不能够很好的嵌入第三方的组件库。这就导致了&#xff0c;使用了Handsontable就没有办和普通的react项目一样轻松引用其他第三方组件。因此对其react的版本进行了二次的封装&#…

MySQL之sql性能分析

sql执行频率 MySQL客户端连接成功后&#xff0c;通过show[session|global]status命令可以提供服务器状态信息。通过如下指令&#xff0c;可以查看当前数据库的所有INSERT、DELETE、UPDATE、SELECT的访问频次。 慢日志查询 慢查询日志记录了所有执行时间超过指定参数(longquer…