目录
一.Dev-C++软件与Typora下载安装:
Typora软件的下载安装看我发的链接
提取码:typo
二.新手注意事项:
1.在编写代码时,注意一定要在英文输入法下;
2.如何将语言设置为中文:
Tolls --> Enviroment Options --> Languages
3.常见快捷键的使用:
Ctrl + Home键 | 跳转到当前文本的开头处 |
---|---|
Ctrl + End键 | 跳转到当前文本的末尾处 |
Ctrl + 鼠标滚轮 | 改变字体大小 |
Ctrl + / | 用 // 注释掉光标当前所在行,再次按下则会取消注释。 |
/* */ | 注释在/* */之间的所有内容 |
Ctrl + N | 新建文本 |
Ctrl + S | 保存文本 |
Ctrl + W | 关闭文本 |
F9 | 编译 |
F10 | 运行 |
F11 | 编译并运行 |
注:在工具->快捷键选项(Tolls->Configure Tolls Options);中可查看所有快捷键
4.代码个性设置:
工具 --> 编辑器选项 --> 显示or语法
5.编写代码时一定要注意代码书写规范:
(1)、一个代码解释或一个语句占一行;
(2)、函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;
(3)、括号,花括号,要成对写,如果需要删除的话也要成对删除;
(4)、每个语句写完后都需要加分号。
三.Hello World 代码讲解
#include <stdio.h>//包含头文件,注意系统自带的用<>,用户自己写的用""
/*用户自定义部分*/
int main()//定义主函数
{
printf("Hello World!\n");//打印输出Hello World!
return 0;//返回函数值为0,相当于结束标志
}
在编写C语言代码时,我们一般将代码分为3个部分:
1.头文件部分(包含我们需要的函数)
2.用户自定义部分(包含用户自己定义的变量和编写的函数)
3.主函数部分(执行用户编写的代码)
四.printf函数讲解
1.printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。
printf函数分为两个部分 printf("用户需要打印的部分",需要打印部分中的变量,若没有则直接打印" "中的内容)
2.用法:
printf("XXX占位1 XXX 占位2 XXX占位3", 替换1, 替换2, 替换3);
/*无格式化输出*/
printf("Hello World!\n");//第一种情况
printf("C语言第1次培训\n");
/*格式化输出*/
int x = 100,a = 1;
printf("x = %d\n", x);//第二种情况
printf("%d\n", 10-8);//还可以用来计算
printf("%d\n", 10*8);
printf("C语言第%d次培训\n",a);
/*
代码输出:
Hello World!
C语言第1次培训
x = 100
2
80
C语言第1次培训
*/
格式化的意思通俗来讲就是有没有变量
仔细看会发现每行printf函数中都写了\n
这是转义字符,而\n是我们最常用的转义字符”换行符“,如果没有换行符\n,那么所有代码都会在第一行输出。
以下还有我们常见的转义字符:
五.在C语言中变量的讲解
1.目前我们先了解最简单的int类型
关于一个变量有三个部分:
变量是程序的基本组成单位,变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,从而通过变量名可以访问到变量(值)。
变量应该有名字,并在内存中占据一定的存储单元;变量名和变量值有不同的含义;变量名实为一个符号地址
/*代码讲解*/
int a = 3,b;//定义(初始化)了a并给a赋值,定义了b未给b赋值,默认b的值为1;
printf("a = %d\n", a);
printf("b = %d\n", b);
b = 5;//使用b,把5赋值给b
printf("b = %d\n", b);
/*
代码输出:
a = 3
b = 1
b = 5
*/
同理我们可以得到其他类型的使用方法:
类型 | 作用 | 格式化输出 |
---|---|---|
int | 输出整型 | %d |
unsigned int | 输出无符号整型 | %u |
long int | 输出长整型 | %ld |
int | 以八进制数形式输出整数 | %o |
int | 以十六进制数形式输出整数,或输出字符串的地址 | %x |
char | 输出字符型 | %c |
char | 用来输出一个字符串 | %s |
float | 用来输出实数,以小数形式输出,默认情况下保留小数点6位 (有效位数6位) | %f |
float | 用来输出实数,保留小数点5位 | %.5f |
float | 以指数形式输出实数 | %e |
double | 用来输出实数,以小数形式输出,默认情况下保留小数点6位 (有效位数15位) | %lf |
float/double | 根据大小自动选f格式或e格式,且不输出无意义的零 | %g |
注意:%d与%u的区别是,有无符号的数值范围不同,也就是极限的值不同,不然数值打印出来会有误。
注意:char(字符型)默认为unsigned char(无符号字符型)。
/*代码示例*/
float c = 3.14;
double d = 3.1415926;
char e = 'e';//单个字符用单引号
/*超纲部分*/
char f[100] = "Sunset";//字符串用双引号
printf("c = %f\n", c);
printf("d = %lf\n", d);
printf("d = %.7lf\n", d);
printf("e = %c\n", e);
printf("f = %s\n", f);
/*
代码输出:
c = 3.140000
d = 3.141593
d = 3.1415926
e = e
f = Sunset
*/
2.关于格式化输出的一些用法:
#include <stdio.h>
int main()
{
int a = 123, b = 123456;
printf("%5d\n", a); // 默认右对齐,且最少取5位整数,多余5位全取,不足5位使用空格左面补全
printf("%05d\n", a); // 使用0代替空格,在左边补齐位数(注意只能用0代替)
printf("%-5d\n", a); // 左对齐,不足位数,使用空格补全
printf("%-05d\n", a); // 左对齐,不足位数,还是用空格补全
printf("%5d\n", b); // 超过5位全取
return 0;
}
/*
代码输出:
123
00123
123
123
123456
*/
3.最后,在C语言变量的使用中我们还需要注意变量名的命名规则
1、见名知意;
例如:
int value;
2、简洁,美观;
3、当标识符由多个词组成时,每个词的第一个字母大写,其余全部小写;
例如:
int CurrentVal;
4、尽量避免名字中出现数字编号,如Value1,Value2 等,除非逻辑上的确需要编号;
5、变量名可以由字母,数字,和下划线组成,但不能以数字开头;
6、所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。
例如:
#include "stdio.h"
const int MAX_LENGTH = 100; //这不是常量,而是一个只读变量,不可修改
//1.不带参数的宏定义(常量):
#define MAXNUM 1000 //宏定义,相当于宏代换,注意没有分号; 格式:#define 标识符 常量值
#define PI 3.1415926
/*
作用:把程序中出现的MAXNUM替换为1000
说明:
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
*/
//2.带参数的宏定义:
#define S(m,n) (m*n) //格式:#define 宏名(参数表) 字符串
#define L(m,n) (m+n)
/*
作用:把程序中出现的S(m,n)替换为m*n
说明:
类似于函数调用,有一个哑实结合的过程:
(1)实参如果是表达式容易出问题
#define S(r) r*r
area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;
正确的宏定义是#define S(r) (r)*(r)
(2)宏名和参数的括号间不能有空格
(3)宏替换只作替换,不做计算,不做表达式求解
(4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
(5)宏的哑实结合不存在类型,也没有类型转换。
(6)函数只有一个返回值,利用宏则可以设法得到多个值
(7)宏展开使源程序变长,函数调用不会
(8)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)
*/
int main()
{
int area=S(3,2);//area=S(3,2)被换为area=3*2;
int length = L(6,4);
printf("%d\n", MAX_LENGTH);
printf("%d\n", MAXNUM);
printf("%f\n", PI);
printf("area = %d\n", S(3,2));
printf("length = %d\n", L(6,4));
return 0;
}
/*
代码输出:
100
1000
3.141593
area = 6
length = 10
*/
六:非负整数进制的转换:
十进制:decimalism
二进制:binary
十六进制:hexadecimal
1.十进制转二进制:
1.1除2取余法:
1.2权值拼凑法:
如果十进制数属于(0~255),用8位(D7)
如果如果十进制数属于(0~65535),用16位(D15)
同理,二进制转十进制就用权值拼凑法;
2.二进制转十六进制:
2.1四合一法:
顾名思义从低位往高位看,四个二进制数为一组,不足四位高位补0。
(1)我们先看十六进制的表示:
0~9用数字本身,10~15用字母a~f
(2)二进制数与十六进制数之间的对应关系表:
同理,十六进制转二进制反过来就行了。
3.十进制转十六进制:
3.1除16取余法:
4.十六进制转十进制:
4.1权值拼凑法:
低位为最右边160,依次往左幂数增加;