C语言笔记【第一弹】

初识C语言

什么是C语言

计算机只能识别二进制数,所以C语言是给计算机下命令,让计算机按照人们的要求来工作。
C语言需要经过编译链接两个过程才能运行起来,两者缺一不可。在vs中,用快捷键ctrl+F5即可完成两个步骤。

C语言的介绍

.c为后缀的文件是源文件,以.h为后缀的是头文件。而.cpp是C++的文件后缀

一般第一个代码是“hello world”

#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}

main函数(也叫主函数)

即使一个项目中有多个.c文件,main函数只能有一个(main函数是程序的入口)

printf(是库函数)

scanf都需要有头文件 #include<stdio.h>

占位符

占位符代表含义
%d整型
%c字符
%f单精度浮点型(float)
%lf双精度浮点型(double)
%s字符串
%e科学计数法的浮点数
  • %5d表示占位符的最小宽度至少5位(右对齐);%-5d表示左对齐。超过宽度即无限制。填充用空格填充
  • %12f表示输出的浮点数最少要占12位
  • printf()不对正号显示,只对负号显示,当%后加上+时可以显示正号。例如:%+d
#include<stdio.h>
int main()
{
	printf("%+3d\n", 100);
	printf("%+4d\n", -31);
	return 0;
}

运行结果:在这里插入图片描述

  • 当限用小数位时,可以写成%.mf即小数点后保留m位
#include<stdio.h>
int main()
{
	printf("%.4f", 3.12);
	return 0;
}

运行结果为:在这里插入图片描述

  • 综合运用如下:
#include<stdio.h>
int main()
{
	printf("xxxxxx");
	printf("\n%6.3f\n", 3.14);
	return 0;
}

运行结果为:在这里插入图片描述

  • %[m]s可以指定输出长度m的字符
#include<stdio.h>
int main()
{
	printf("%.7s", "welcome to CSDN");
	return 0;
}

运行结果为:在这里插入图片描述

  • %*c表示忽略的一个字符,在输入时可以输入任意字符
#include<stdio.h>
int main()
{
	int year = 0;
	int month = 0;
	int day = 0;
	scanf("%d%*c%d%*c%d", &year, &month, &day);
	return 0;
}

结果:在这里插入图片描述

关键字(不能重复使用)

例如:

auto break case char const continue default do double else enum extern float for goto if int long register return short singned sizeof struct switch typedef union unsigned void volatile while

ASCII编码(重要记的几个)

A~65
a~97 (大小写差32)
0-48

参考:https://zh.cppreference.com/w/cpp/language/ascii

字符串的结束标志

\0是字符串末尾的隐藏彩蛋,是字符串的结束标志。没有\0会出现随机值,代码无法正常停止。

转义字符

\?
\a 电脑发出警报
\b 光标退一格,不删除
\n 换行
\t 对齐宽度
\ddd 表示八进制数字
\xdd 表示十六进制数字

不太熟悉的知识

用在switch语言中的关键字不包含continue
define不是关键字
C语言规定,在一个源程序中,main函数的位置可以任意(因为可以有全局变量)

求字符串的长度

可以用strlen,但是需要引头文件#include<string.h>

语句

包括:

空语句

一个分号就是一个语句

表达式语句**a=2+3;
函数调用语句Add(3,5);

add须引用头文件#include<math.h>

复合语句大括号构成
控制语句包括:
  条件判断语句(分支语句):if,switch
  循环语句:do while ,whilie,for
  转向语句:break,continue,return 

数据类型

C语言的数据类型分类在这里插入图片描述

signed与unsigned的区别

unsigned表示没有正负号,只表示0和正整数,signed反之。

变量

全局变量

在大括号外定义的变量,放在内存的静态区

局部变量

在大括号内部的变量,放在内存的栈区

 注:当两者同名时,局部变量优先       
#include<stdio.h>
int a = 80;
int main()
{
	int b = 20;
	printf("%d\n%d\n", a, b);

	
	return 0;
}

上述代码中a是全局变量,b是局部变量

算术操作符

  • 双目操作符
    即有两个操作数,有:+ - * / %
    除法运算符/:除号的两端是整数,执行整数除法,得到整数结果;两端只要有一个浮点数,结果就是小数。
#include<stdio.h>
int main()
{
	int a = 4;
	int b = 3;
	int c=a/b;
	printf("%d\n", c);
	return 0;
}

运行结果是1

#include<stdio.h>
int main()
{
	float a =6.0;
	float b = 4;
	float c=a/b;
	printf("%f\n", c);
	return 0;
}

运行结果是1.500000
取余%:只能用于整数

负数取模时,结果的正负号取决于第一个运算数的正负号

#include<stdio.h>
int main()
{
	int a = 4;
	int b =-6;
	printf("%d\n%d\n", b % a, a % b);
	return 0;
}

运行结果在这里插入图片描述

注:代码从右往左看

a+=3即a=a+3
复合赋值符:+= -= *= /= %= >>= <<=

  • 单目操作符
    自增1:++;自减1:- -

前置++口诀:先++后使用
后置++口诀:先使用后++
(使用指的是赋值给b)

int main()
{
	int a = 10;
	int b = a++;
	int c = ++a;
	printf("%d\n%d\n", b, c);
	return 0;
}

在这里插入图片描述
后置++:代码换种形式写的话:

#include<stdio.h>
int main()
{
	int a = 10;
	int b = a;
	 a = a + 1;
	printf("%d\n%d\n", a, b);
	return 0;
}

运行结果:
在这里插入图片描述

前置++:代码换种形式写的话:

#include<stdio.h>
int main()
{
	int a=10, b = 0;
	a = a + 1;
	b = a;
	printf("%d\n%d\n", a, b);
	return 0;
}

运行结果:
在这里插入图片描述
自减同理,这里就不做演示啦~

强制类型转换

 注:括号里的类型须和前面的保持一致!!!

例:将3.24强制转换成整数

#include<stdio.h>
int main()
{
	int a = (int)3.24;
	printf("%d\n", a);
	return 0;
}

结果:在这里插入图片描述

scanf和printf都是库函数,需要包含头文件

printf 不会自动添加换行符,需要手动添加

scanf 会自动过滤空格,制表符,换行符等空白字符。意思就是说scanf("%d%d",&a,&b);可以输入1 3,也可以运行。(注:当第二次调用scanf时,会从上一次停止解读的地方继续往下读取。)
scanf()的返回值是一个整数,表示成功读取的变量个数。
若没有读取到任何项,返回0;若读取错误或读到文件结尾,返回常量EOF(值是-1)。scanf不会检测字符串是否超过了数组长度,应用%[m]s指定读入字符串的最长长度。读取m个字符后,后面的字符将被丢弃。
打印时,遇到空格就停止

#include<stdio.h>
int main()
{
	char a[16];
	scanf("%10s", &a);
	printf("%s\n", a);
	return 0;

}

运行结果为:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值