【C语言】C语言从入门到精通第1章C语言概述

news2024/12/24 9:34:58

目录
一、C语言发展史

(一)程序语言简述

1、机器语言

2、汇编语言

3、高级语言

(二)C语言的历史

二、C语言的特点

(一)高效性

(二)灵活性

(三)功能丰富

(四)表达力强

(五)移植性好

三、一个简单的 C 程序

(一)#include 指令

(二)空行

(三)main 函数声明

(四)函数体

(五)执行语句

(六) return 语句

(七)代码注释

四、一个完整的 C 程序

(一)定义常量

(二)函数声明

(三)定义变量

(四)输入语句

(五)数学运算语句

五、C 语言程序格式

(一) 主函数 main

(二)C程序整体是由函数构成的

(三)函数体的内容在“{}”中

(四)每一个执行语句都以“ ; ”结尾

(五)英文字符大小不通用

(六)空格、空行的使用

六、开发环境

一、C语言发展史

(一)程序语言简述
1、机器语言
        机器语言是低级语言,也称为二进制代码语言,由 0 和 1 组成的二进制数组成的一串指令来表达计算机操作的语言。特点:直接识别,不要进行翻译

2、汇编语言
        汇编语言是面向机器的程序设计语言,为了减轻使用机器语言编程的痛苦,用英文字母或符号串来代替机器语言的二进制码,汇编语言比机器语言更加便于阅读和理解,但是依赖计算机硬件,程序的可读性和可移植性都不是很好

3、高级语言
        高级语言主要是相对于汇编语言,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序,编写的程序称之为源程序

(二)C语言的历史
        C语言是在BCPL语言(简称 B语言)的基础上发展和完善起来的,B语言是由 UNIX 的研发者丹尼斯·里奇和肯·汤普逊于1970年研发出来的,20世纪70年代初期,AT&T Bell 实验室的程序员丹尼斯·里奇第一次把B语言改为C语言。UNIX 成为第一个不是用汇编语言编写的主流操作系统 

        1983年,美国国家标准委员会(ANSI)对C语言进行了标准化,于1983年颁布了第一个C语言草案(83ANSI C),后来于1987年又颁布了另一个C语言标准草案(87ANSI C),最新的C语言标准C99于1999年颁布,并在2000年3月被ANSI采用。但由于未得到主流编译器厂家的支持,C99并未得到广泛使用

        尽管C语言是在大型商业机构和学术界的研究实验室研发的,但是当开发者们为第一台个人计算机提供 C 编译系统之后,C语言就得以广泛传播,并为大多数程序员所接受。对MS-DOS操作系统来说,系统软件和实用程序都是用C语言编写的。Windows操作系统大部分也是用C语言编写的

        C语言是一种面向过程的语言,同时具有高级语言和汇编语言的优点,可以广泛应用于不同的操作系统,如UNIX、MS-DOS、Microsoft Windows以Linux等

二、C语言的特点
(一)高效性
        从 C 语言的发展史可以看出它继承了低级语言的优点,产生了高效的代码,并具有友好的可读性和可编写性,一般情况下,C 语言生成的目标代码的执行效率只比汇编程序低 10%~20%

(二)灵活性
        可在原有语法基础上进行创造、复合,从而给程序员更多的想象和发挥空间

(三)功能丰富
        除了 C 语言中所具有的类型,还可以使用丰富的运算符和自定义的结构类型,来表达任何复杂的数据类型,来完成所需功能

(四)表达力强
        C 语言的语法形式与人们使用的语言形式相似,书写形式自由,结构规范,并只需简单的控制语句即可轻松控制程序流程

(五)移植性好
        C 程序在不同的操作系统下,只需要简单修改或者不修改即可进行跨平台的程序开发操作

三、一个简单的 C 程序

#include"stdio.h"
 
int main()
{
	printf("Hello,world! I'm coming!\n"); /*输出要显示的字符串*/
	return 0;	                          /*程序返回0*/
}

(一)#include 指令

#include"stdio.h"

语句的功能是进行有关的预处理操作。include 称为文件包含命令,后面尖括号中的内容称为头部文件或首文件

(二)空行

        空格、空行、跳格并不会影响程序,但合理、恰当地使用空格、空行可以使程序更加规范,方便日后阅读和整理

(三)main 函数声明

{
	printf("Hello,world! I'm coming!\n"); /*输出要显示的字符串*/
	return 0;	                          /*程序返回0*/
}

代码表示声明 main 函数为一个返回值,是整型的函数,其中 int 称为关键字。在函数中,这一部分称为函数头部分,每一个程序都有一个 main 函数,它是一个程序的入口部分,是从 main函数头开始执行的,进入 mian 函数中,执行 main 函数中的内容

(四)函数体

{
	printf("Hello,world! I'm coming!\n"); /*输出要显示的字符串*/
	return 0;	                          /*程序返回0*/
}

 一个函数有两个部分:函数头和函数体。代码中两个大括号构成了函数体,也称为函数的语句块

(五)执行语句

printf("Hello,world! I'm coming!\n"); /*输出要显示的字符串*/
执行语句是函数体中要执行的动作内容,代码中的 printf 是产生格式化输出的函数,可以理解为向控制台进行输出文字或符号,括号中的内容称为函数的参数,其中“ \n ”表示换行,称之为转义字符

(六) return 语句

return 0;	

此语句使 main 函数终止运行,并向操作系统返回一个整型常量0,在此处可将 return 理解成 main 函数的结束标志

(七)代码注释

printf("Hello,world! I'm coming!\n"); /*输出要显示的字符串*/
return 0;	                          /*程序返回0*/

代码后的解释描述称为代码的注释,是用来对代码进行解释说明,以方便自己或他人阅读源程序时快速理解程序代码的含义和设计思想

四、一个完整的C程序

#include "stdafx.h"
#include<stdio.h>						/*包含头文件*/
#define Height 10						/*定义常量*/
 
int calculate(int Long, int Width);			/*函数声明*/
int main()								/*主函数main*/
{
	int m_Long;						/*定义整型变量,表示长度*/
	int m_Width;						/*定义整型变量,表示宽度*/
	int result;							/*定义整型变量,表示长方体的体积*/
 
	printf("长方形的高度为:%d\n",Height);	/*显示提示*/
	
	printf("请输入长度\n");				/*显示提示*/
	scanf("%d",&m_Long);				/*输入长方体的长度*/
 
	printf("请输入宽度\n");				/*显示提示*/
	scanf("%d",&m_Width);				/*输入长方体的宽度*/
 
	result=calculate(m_Long,m_Width);		/*调用函数,计算体积*/
	printf("长方体的体积是:");			/*显示提示*/
	printf("%d\n",result);					/*输出体积大小*/
	return 0;							/*返回整型0*/
}
 
int calculate(int Long, int Width)				/*定义计算体积函数*/
{
	int result =Long*Width*Height;			/*具体计算体积*/
	return result;						/*将计算的体积结果返回*/
}

(一)定义常量 

#define Height 10						/*定义常量*/

使用 #define 定义一个符号 Height,并指定这个符号代表的值为10

(二)函数声明

int calculate(int Long, int Width);			/*函数声明*/

声明 calculate 函数,那么在后面会有 calculate 函数的具体定义内容,这样程序中出现 calculate 函数,程序会根据 calculate 函数的定义执行有关操作

(三)定义变量

int m_Long;						/*定义整型变量,表示长度*/
int m_Width;						/*定义整型变量,表示宽度*/
int result;							/*定义整型变量,表示长方体的体积*/

在 C 语言中,在使用变量之前必须进行定义,之后编译器会根据变量的类型为变量分配内存空间。变量的作用就是储存数值,用变量进行计算

(四)输入语句

scanf("%d",&m_Long);				/*输入长方体的长度*/

在 C 语言中 scanf 函数是用来接收键盘输入的内容,并将输入的内容保存在相应的变量中,在 scanf 函数中,m_Long 是之前定义的整型变量,其作用是储存输入的信息内容,其中“ & ”符号表示取地址运算符
(五)数学运算语句

int result =Long*Width*Height;			/*具体计算体积*/

在 calculate 函数体中,其功能是将三个变量相乘得到结果保存在 result 变量中,“ * ”代表乘法运算符

程序执行过程总结:

(1)包含程序所需要的头文件

(2)定义一个常量Height,其值代表为10

(3)对calculate函数进行声明

(4)进入main函数,程序开始执行

(5)在main函数中,首先定义3个整型变量,3个变量分别代表着长方体的长度、宽度和长方体的体积

(6)显示提示文字,然后根据显示的文字输入有关的数据

(7)当将长方体的长度和宽度都输入之后会调用calculate函数,计算长方体的体积

(8)定义calculate函数的位置在main函数的下面,在calculate函数体内将计算长方体体积的结构进行返回

(9)在main函数中,result变量得到了calculate函数返回的结果

(10)通过输出语句将其中长方体的体积显示出来

(11)程序结束

五、C 语言程序格式

(一) 主函数 main
        C 程序都是从 main 函数开始执行的,main 函数所在的位置没有关系

(二)C程序整体是由函数构成的
        main 是程序中的主函数,在程序中是可以定义其他函数的,在这些定义函数中进行特殊的操作,使得函数完成特定的功能

(三)函数体的内容在“{}”中
        C 语言使用一对大括号来表示程序的结构层次,注意左右大括号要对应使用

(四)每一个执行语句都以“ ; ”结尾
        执行语句后有“ ; ”(分号)作为语句结束的标志

(五)英文字符大小不通用
        同一大小写字母意义不同,关键字和标准库函数名必须小写

(六)空格、空行的使用
        其作用是增加程序的可读性,使得程序代码位置合理、美观

六、开发环境

        书中介绍了两种学习开发 C语言的开发工具:一个是 Turbo C 2.0 ,另一个是 Visual C++ 6.0,本人使用的VS 2022(Visual Studio 2022)

本人使用的是Visual Studio 2022(简称VS),VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等,所写的目标代码适用于微软支持的所有平台,支持多种语言进行开发

【Visual Studio 2022】VS2022安装教程_vs2022专业版_空弦的编程小屋的博客-CSDN博客

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

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

相关文章

常用的几种图像置乱算法

图像置乱算法是一种用于保护图像信息安全的技术&#xff0c;它可以将原始的图像信息进行加密和混淆&#xff0c;使得未经授权的用户无法获取到原始的图像信息。在信息安全领域中&#xff0c;图像置乱技术被广泛应用于图像加密、数字水印、安全传输等方面。下面是几种常用的图像…

English Learning - L3 作业打卡 Lesson6 Day39 2023.6.12 周一

English Learning - L3 作业打卡 Lesson6 Day39 2023.6.12 周一 引言&#x1f349;句1: A Festival for the Dead is held once a year in Japan.成分划分弱读连读语调 &#x1f349;句2: This festival is a cheerful occasion.成分划分弱读连读语调 &#x1f349;句3: For on…

腾讯太狠:40亿QQ号, 给你1G内存,怎么去重?

说在前面 在40岁老架构师 尼恩的读者社区(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如腾讯、美团、阿里、拼多多、极兔、有赞、希音的面试资格&#xff0c;遇到一几个很重要的面试题&#xff1a; 40亿Q号如何设计算法去重&#xff0c;相同的Q号码仅保留一个&#x…

在 Quarkus 中的使用 Mutiny 进行响应式编程

在 Quarkus 中使用 Mutiny - 事件驱动的 Java 响应式编程库 本教程介绍在 Quarkus 中使用事件驱动的 Mutiny 响应式编程库 以应对异步系统开发中的挑战。 概述 Mutiny 是一个&#xff08;Reactive Programming&#xff09;响应式编程库, 事件是 Mutiny 的设计核心&#xff0…

1.3 springboot项目中,数据层HikariCP与MyBatis整合

步骤1&#xff1a;在顶级父工程中pom引入mysql和mybatis依赖 <!-- mysql驱动 --> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.41</version> </dependency> <…

微信公众号每天定时发送消息给女朋友

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;RodmaChen 每天定时发送消息给女朋友 一. 环境准备二. 代码拉取和配置三. 项目部署3.1 直接运行3.2 后台运行 四. 效果图 参考地址&#xff1a;https://github.com/limoes…

云服务器部署极简版openGauss,本地Data Studio远程连接

openGauss是一款开源关系型数据库管理系统&#xff0c;华为研发&#xff0c;2020年7月1日开源。Data Studio提供了一个图形化界面来管理openGauss数据库。 1.下载安装包 在华为云上租一台服务器&#xff0c;操作系统选&#xff1a;openEuler 20.03 64bit (64-bit) 获取openGa…

C程序设计(第五版)

文章目录 前言第3章 顺序程序设计第4章 选择结构程序设计c第5章 循环程序设计第6章 利用数组处理批量数据第7章 用函数实现模块化程序设计第8章 善于利用指针第9章 用户建立数据类型结构体字节对齐 第10章 对文件的输入输出 前言 鉴于写CSDN博客一篇一篇查找比较麻烦&#xff0…

day55_springmvc

今日内容 零、 复习昨日 零、 复习昨日 1 maven项目编译后代码在target 2 发现代码都没有错,该写的都有,但是已启动服务器404,查看target,如果编译会后资源不全面,那就删除重新编译 3 重新看一下,如何使用mavne创建javaweb项目 一、参数绑定 【重点】 所谓参数绑定,就是前端发请…

【GPT LLM】跟着论文学习gpt

GPT1开山之作&#xff1a;Improving language understanding by generative pre-training 本文提出了gpt1&#xff0c;即使用无标签的数据对模型先进行训练&#xff0c;让模型学习能够适应各个任务的通用表示&#xff1b;后使用小部分 task-aware的数据对模型进行微调&#xff…

csdn编辑

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【tensorflow】连续输入+离散输入的神经网络模型训练代码

【tensorflow】连续输入离散输入的神经网络模型训练代码 离散输入的转化问题 构造词典 创建离散数据、转化字典索引、创建连续数据 创建离散输入连续输入模型 训练输出 全部代码 - 复制即用 查看本系列三种模型写法&#xff1a;   【tensorflow】连续输入的线性回归模型训…

基于知识图谱的电影推荐系统——Neo4jPython

文章目录 1. 数据解下载与配置2. 将处理好的数据导入数据库中3. 执行项目 1. 数据解下载与配置 选择TMDB电影数据集&#xff0c;Netflix Prize 数据集下载。 也可直接从这里下载&#xff1a;链接: https://pan.baidu.com/s/1l6wjwcUzy5G_dIlVDbCkpw 提取码: pkq6 。 执行prep…

【AI】金融FinGPT模型

金融FinGPT模型开源&#xff0c;对标BloombergGPT&#xff0c;训练参数可从61.7亿减少为367万&#xff0c;可预测股价 继Bloomberg提出了500亿参数的BloombergGPT&#xff0c;GPT在金融领域的应用受到了广泛关注&#xff0c;但BloombergGPT是一个非开源的模型&#xff0c;而且…

【ESP32之旅】U8g2 在线仿真和UI调试

前言 几乎每个玩屏幕的电子DIYer都知道万能的屏幕驱动中间件u8g2库&#xff0c;这个库提供了强大的驱动适配和ui设计能力。但是官方没有一个好用的ui设计和仿真软件&#xff0c;在设计UI布局的时候对单片机频繁的烧录调试浪费了大量的时间。最近在论坛看到有一个第三方维护的在…

nginx映射后,公网通过域名无法访问到静态资源

今天发生一件奇怪的事情&#xff0c;首先是阿里云的数字DV证书中pgj.bw580.com和acc.bw580.com无缘无故的消失了&#xff0c; 接着查看https://pgj.bw580.com/css/chunk-ceb11154.aefc15d8.css&#xff0c;在跳板机中可以访问到该资源&#xff0c;但是通过外网能够访问。 通过防…

MySQL 中各种锁的详细介绍

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

P109认识和改造世界

认识世界的根本目的在于改造世界 认识和改造世界之间的辩证关系 感觉只喜欢考 必然和自由的辩证关系 人类创造历史的两个基本活动 &#xff1a; 认识和改造世界所以认识和改造世界的基础是实践 认识改造和三大界之间的联系 改造客观世界和改造主观世界之间的关系 认识世界…

台电x80HD 安装linux系统,可调电压电源供电,外网访问、3D打印klipper固件

一、系统安装 参照https://blog.csdn.net/gangtieren/article/details/102975027安装 安装过程遇到的问题&#xff1a; 1、试了 linux mint 21 、ubuntu20.04 、ubuntu22.04 都没有直接安装成功&#xff0c;u盘选择安装进入系统后一直黑屏&#xff0c;只有ubuntu18.04 选择后稍…

基于Eclipse+Java+Swing+Mysql实现学生成绩管理系统

基于EclipseJavaSwingMysql实现学生成绩管理系统 一、系统介绍二、功能展示1.登陆2.成绩浏览3.班级添加4.班级维护5.学生添加6、学生维护 三、数据库四、其它1.其他系统实现五.获取源码 一、系统介绍 学生&#xff1a;登陆、成绩浏览 管理员&#xff1a;登陆、班级添加、班级维…