初识C语言(一)

本文介绍了C语言的基础知识,包括编写第一个C程序,数据类型的分类如整型、浮点数和字符型,以及变量和常量的概念。文章详细讲解了main函数的用法,不同类型的变量占用的内存大小,以及如何通过sizeof运算符获取数据类型所占的空间。此外,还提到了变量的声明、命名规则和作用域,以及输入输出函数printf和scanf的使用。


人们通过字符序列创建出的程序称为源程序(source program),用来保存源程序的文件称为源文件(source file)
c语言源文件的扩展名为“.c”
c语言中的()、{}、;等是用英文输入法输入的。


一、第一个C语言程序

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()				//main叫主函数
{
	printf("hello world\n");
	return 0;
}

ctrl+F5:开始执行程序
代码详解:

main称为主函数,main函数是程序的入口
程序从mian函数的第一行开始执行
C语言代码中必须有主函数,但是有且仅有一个main函数
在这里插入图片描述
一个工程(项目)中可以有多个.c文件,但是多个.c文件中只能有一个main函数
一个工程多个.c文件是什么意思?----每个模块写不同的代码,比如add.c\sub.c\然后通过test()函数调用不同的模块

//旧式的写法,如今没有人这样写了!
void main()
{
	printf("hehe\n");
}
int main(void)						//void写到括号里表示:main函数不需要参数
{
	printf("hehe\n");
	return 0;
}
int main(int argc, char* argv[])	//main函数有两个参数,这两个参数有特殊意义。若此时不需要参数,写上也没关系。
{
	printf("hehe\n");
	return 0;
}

int - 整型 - 整数
mian前面的int表示:main函数调用后最终返回一个整型值0
printf - 打印函数,专门用来在屏幕上打印数据的,是C语言标准库中提供的一个库函数
printf函数可以在显示器上进行输出操作(末尾的f源自format(格式化)这个单词)。
如果想使用某个函数的功能,就必须通过函数调用(function call)来实现。
include 是包含的意思,下面的代码就是包含stdio.h这个头文件
#include <stdio.h>//stdio - standard input output 标准输入输出头文件


二、数据类型

在这里插入图片描述

小数在C语言里称为:浮点数(小数点可以浮动的数)比如66.8==6.68*101


转义字符:\n
在这里插入图片描述


这些数据类型有什么样的特点? 存放一个字符型数据需要多大空间?存放一个整型数据需要多大空间?

int main()
{
	printf("%d\n", sizeof(char));     //1字节
	printf("%d\n", sizeof(short));    //2字节
	printf("%d\n", sizeof(int));      //4字节
	printf("%d\n", sizeof(long));     //4字节  C语言标准规定:sizeof(long)>=sizeof(int)
	printf("%d\n", sizeof(long long));//8字节
	printf("%d\n", sizeof(float));    //4字节
	printf("%d\n", sizeof(double));   //8字节
	return 0;
}

sizeof 是一个操作符,是计算变量的大小的。
在这里插入图片描述

bit-比特位------------计算机中最小的单位

这段代码为什么有这么多的整型?
2个字节是16个比特位,16个比特位存放的数字应该有它的范围
2个比特位 十进制   4个比特位
00     0     0000   0
01     1     0001   1
10     2     0010   2
11     3     0011   3
             0100   4
             …
             1111   15

2个比特位表示的范围是0-3, 4个比特位表示的范围是0-15,空间越大所表示的范围也就越大,能存放的数据也就越大。
有意义,对不同的数据采用不同的类型更合适。
short表示的范围:-32768~32767
int 表示的范围: -21亿 + ~+21亿
若想表示一个人的年龄用哪种数据类型合适?
年龄不会超过四位数,用short更合适,short占2个字节,更节省空间,空间利用率更高。而int,根本用不了这么大的范围,
数字里面既有整数,也有小数,所以引入浮点型。
有时候也要存放字符数据,所以引入字符型。
在这里插入图片描述

类型的作用是:为了创建变量。

int main()
{
	char ch = 'w';//一个字符必须由两个单引号引起来;把字符w放入ch这个空间中;用字符类型创建1个变量,这个变量就像我们生活中的一个空间,1个字节的空间我们已经申请到了,用来存放w
	printf("%c\n", ch);//%c - 打印字符

	float weight = 75.5f;	//若果不加f,编译器会默认为double类型,但是这个变量是由float类型创建
	double pai = 3.14;		//为什么显示3.14000000000?因为浮点数在内存中无法精确保存 ,后期会讲。
	return 0;
}

三、变量和常量

生活中的有些值是不变的-----不变的值用常量来表示
有些值是可变的-------用变量来表示

为什么需要引入变量?如果遇到比较复杂的计算,为了在中途记录结果就需要使用变量。

变量其实就是用来放置数值和字符等的“盒子”。

在用来存放数值的魔法盒——变量中放入数值后,只要该盒子还在,值就会一直被保存,而且还可以自由地取出或替换数值。

要想使用变量,必须遵循一定的流程。
定义变量的方法:类型+变量名

int main()
{
	int age = 18;
	double salary = 20000.0;

	//int m;//不给变量赋初值,不是好的习惯。因为变量本身存放着一堆垃圾数值
	//printf("%d\n", m);//会报错:使用了未初始化的变量

  	int m = 0;//好的习惯是:在创建变量的同时给一个初始值
	int n = 0;
	printf("%d\n", m);
	return 0;
}

变量的命名!!!

  1. 只能由字母(包括大写和小写)、数字和下划线(_)组成
  2. 不能以数字开头。
  3. 长度不能超过63个字符。
  4. 变量名中区分大小写。
  5. 变量名不能使用关键字。
int main()
{
	//char C#B; char C* B;//错误
	char CB = 'w';
	//int 2b;//不能以数字开头
	int _2b;
	
	int age;
	int Age;
	
	int char;//err

	return 0;
}

变量的分类
局部变量—放在大括号内部
全局变量—放在大括号外部

int a = 10;//全局变量:因为变量a是在大括号外部定义的,注意:定义两字

int main()
{
	int b = 20;//局部变量:变量b是在大括号内部定义的
	return 0;
}
int c = 100;//全局变量-----只关心“定义”在大括号内还是外,不关心前后。
int main()
{
	int a = 10;//局部变量
	printf("%d", a);
	return 0;
}
int a = 10;//全局变量
int main()
{
	printf("%d\n", a);
	return 0;	
}
int a = 10;
int main()
{
	int a = 1;
 
	printf("%d\n", a);

	return 0;
}
//局部变量和全局变量名字冲突的时候,局部优先
//建议大家尽量不要冲突

变量的使用:哪里需要使用变量,就在哪里创建变量。

//写一个代码计算2个整数的和
int main()
{
	int num1 = 0;
	int num2 = 0;
	int sum = 0;

	//输入数据
	scanf("%d%d", &num1, &num2);//scanf是一个库函数,可以从键盘接收数据。/&:取地址
	
	sum = num1 + num2;//计算求和
	
	printf("sum = %d\n", sum);//输出结果
	return 0;
}

scanf是C语言提供的;scanf_s是vs提供的,在clang、gcc中不能识别。
scanf、strcpy、strcat 这些函数,VS都会提示不安全
为了能够正常使用,我们在.c文件的第一行,加上:#define _CRT_SECURE_NO_WARNINGS 1 就可以了
为了一劳永逸的解决以后的问题
我们可以在newc++file.cpp 这个文件中加入:#define _CRT_SECURE_NO_WARNINGS 1
以后新建的文件中都会自动加上:#define _CRT_SECURE_NO_WARNINGS 1

如何上传代码、开源仓库
gitignore:只上传.c文件和.h文件
git三板斧
git指南

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值