计算机导论——C语言001

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

以下侧重于了解输出(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!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day16_学点儿JavaEE_实践_基于IDEA2023的简易JavaWeb项目、Tomcat输出乱码解决

0 JavaWeb项目目录 └──JavaWeb├──resources│ └──db.properties├──src│ └──com.sdust.web│ ├──servlet│ │ └──StudentServlet│ ├──pojo│ │ └──Student│ └──util│ └──JDBCUtil├──web│ ├──st…

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡

STM32存储左右互搏 SDIO总线读写SD/MicroSD/TF卡 SD/MicroSD/TF卡是基于FLASH的一种常见非易失存储单元&#xff0c;由接口协议电路和FLASH构成。市面上由不同尺寸和不同容量的卡&#xff0c;手机领域用的TF卡实际就是MicroSD卡&#xff0c;尺寸比SD卡小&#xff0c;而电路和协…

Acrobat Pro DC 2023 for mac直装激活版 pdf编辑处理工具

Acrobat Pro DC 2023 for Mac是一款功能强大的PDF编辑器&#xff0c;为用户提供了全面且高效的PDF处理体验。 软件下载&#xff1a;Acrobat Pro DC 2023 for mac直装激活版下载 首先&#xff0c;它支持用户从现有文档创建PDF&#xff0c;或者将其他文件格式如图片、网页等轻松转…

win11wifi总掉线怎么办,win11连接wifi频繁掉线

很多网友纷纷用上了win11系统,但是由于对win11系统的不熟悉,因此常常在使用的过程中遇到很多问题。几天前,有网友反馈,系统自从升级win11以后,电脑连接wifi上网时,总是会掉线。一般出现此问题,可能是网络没有播报或开启了无线网卡节能模式导致的。那么,win11wifi总掉线…

【Linux】开始了解重定向

送给大家一句话&#xff1a; 人真正的名字是&#xff1a;欲望。所以你得知道&#xff0c;消灭恐惧最有效的办法&#xff0c;就是消灭欲望。 – 史铁生 《我与地坛》 开始了解重定向 1 前言2 重定向与缓冲区2.1 文件描述符分配规则2.2 重定向的现象2.3 重定向的理解2.4 缓冲区…

Chatgpt掘金之旅—有爱AI商业实战篇|在线课程业务|(十五)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在线课程业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

前端vue2中的excel导出功能-file-saver,xlsx,xlsx-style的使用

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 今天遇到了一个技术点.前端的excel的纯导出功能,不和后端交互,只用前端导出数据 整体架构流程 vue2 element-ui 技术名词解释 在网上看了很多帖子,最后我选择了xlsx , file-saver , xlsx-style 这个三个插件完成…

开课通知 | 5月六西格玛绿带培训火热招生

尊敬的各位学员&#xff1a; 天行健管理咨询将于近期开展六西格玛绿带公开课&#xff0c;旨在为广大企业和个人提供专业的六西格玛绿带培训&#xff0c;帮助大家掌握六西格玛绿带的核心知识和技能&#xff0c;提升工作效率和质量。现将相关事宜通知如下&#xff1a; 一、培训时…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…

第十一届蓝桥杯大赛第二场省赛试题 CC++ 研究生组-七段码

#include<iostream> using namespace std; const int N 10, M 7; int e[N][N] {0}, f[N], open[N];//e[i][j]表示i和j之间是否连通&#xff1b;f[i]表示结点i的父节点&#xff1b;open[i] 1表示结点i打开&#xff0c;0表示关闭 long long ans 0;int find(int x){if(…

网络原理(应用层、传输层)

文章目录 一、应用层1.1 自定义协议1.2 通用协议XMLJSONprotobuf 1.3 DNS 域名解析系统 二、传输层2.1 UDP协议2.2 TCP协议协议端格式及解析可靠性机制确认应答超时重传连接管理&#xff08;三次握手&#xff0c;四次挥手&#xff09;流量控制拥塞控制 效率机制滑动窗口延迟应答…

Anzo Capital 荣膺2024年最值得信赖经纪商大奖

Anzo Capital 表示&#xff1a;“自Anzo Capital品牌诞生起&#xff0c;始终坚持以客户为中心&#xff0c;不断提升产品力和品牌力&#xff0c;致力于成为世界上最值得信赖和推荐的经纪商。而从2015年成立至今&#xff0c;已经服务全球40多个国家&#xff0c;超过34.8万个客户…

财富池指标公式--通达信筹码底部指标公式源码

很多交易软件上都会提供筹码分布可查看主力资金动向&#xff0c;比如说&#xff1a;同花顺软件的筹码分布功能上&#xff1a;红色筹码代表低于收盘价的获利筹码&#xff0c;蓝色筹码表示高于收盘价的套牢盘筹码。 在手机上或电脑端&#xff0c;可将光标移至相应的价位&#xf…

(洛谷P34060):海底高铁—->差分数组,贪心思想

海底高铁 题目描述 该铁路经过 N N N 个城市&#xff0c;每个城市都有一个站。不过&#xff0c;由于各个城市之间不能协调好&#xff0c;于是乘车每经过两个相邻的城市之间&#xff08;方向不限&#xff09;&#xff0c;必须单独购买这一小段的车票。第 i i i 段铁路连接了…

【Web】CTFSHOW-ThinkPHP5-6反序列化刷题记录(全)

目录 web611 web612 web613-622 web623 web624-626 纯记录exp&#xff0c;链子不作赘述 web611 具体分析&#xff1a; ThinkPHP-Vuln/ThinkPHP5/ThinkPHP5.1.X反序列化利用链.md at master Mochazz/ThinkPHP-Vuln GitHub 题目直接给了反序列化入口 exp: <?ph…

实验9 内置对象application

一、实验目的 掌握怎样在JSP中使用内置对象application 二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握application的用法。【参考课本例题4-16 留言板 】 三、源代码以及执行结果截图&#xff1a; example4_16.jsp <% page language"…

【2024年认证杯】A题详细思路+数据(来源)+成品论文+模型代码

2024年认证杯A题 解题思路 ⭐⭐第一问题分析第二问题分析第三问题分析 数据与数据来源指标解释数据来源 参考论文python/ matlab 代码 解题思路 ⭐⭐ 这个题目要求我们围绕人造保暖纤维的保暖能力进行建模&#xff0c;并解决三个具体问题。 第一问题分析 第一问题要求建立一…

【C 数据结构】循环链表

文章目录 【 1. 基本原理 】【 2. 循环链表的创建 】2.1 循环链表结点设计2.2 循环单链表初始化 【 3. 循环链表的 插入 】【 4. 循环单链表的 删除操作 】【 5. 循环单链表的遍历 】【 6. 实例 - 循环链表的 增删查改 】【 7. 双向循环链表 】 【 1. 基本原理 】 对于单链表以…

【嵌入式学习】ARM day04.11

一、思维导图 二、练习 实现三个灯闪烁 汇编代码 .text .global _start _start: 使能GPIOE和F时钟LDR r0,0x50000A28LDR r1,[R0]ORR R1,R1,#(0X3<<4)STR R1,[R0]配置GPIOE和F的MODER寄存器LDR r0,0x50006000 GPIOELDR R1,0X50007000 G…

C语言.指针(5)

指针&#xff08;5&#xff09; 1.sizeof和strlen的对比1.1sizeof1.2strlen1.3sizeof和strlen的对比 2.数组和指针笔试题解析2.1一维数组2.2字符数组2.3二维数组 3.指针运算笔试题解析3.1 题目13.2 题目23.3 题目33.4 题目43.5 题目53.6 题目63.7 题目7 1.sizeof和strlen的对比…