常量
1.字面常量
2.const修饰的常量
3.#define定义的标识符常量
4.枚举常量
1.字面常量
#include <stdio.h>
int main()
{//字面常量演示,能用肉眼直接看到的值,
3.14;//浮点型字面常量
100;//整型字面常量
"abcd";//字符串字面常量
//键盘上敲出的abcdef并用""引用称字符串
'a';//字符字面常量
//什么是字符键盘上能敲出@abc*并用''保住
//空格用单引号‘ ‘也是字符
return 0;
}
2.const修饰的常量
#include <stdio.h>
int main()
{
const int num = 10;
//const修饰的整型num的值是不能直接改变,如果直接改变是要报错的
num = 1;
//报错
return 0;
}
上面例子上的 num 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了
变量 num不能直接被改变,但是 num本质上还是一个变量的,所以叫常变量。
3.#define定义的标识符常量
#include <stdio.h>
#define mxa 100//是全局常量
//mxa在整个函数中都表示的是100
//而且不能被修改
int main()
{
mxa = 5;
//如果修改就会报错
printf("mxa=%d\n", mxa);//100
return 0;
}
4.枚举常量
#include <stdio.h>
enum sex//enum是枚举常量的关键字
{//枚举类型中列举的可能取值都是枚举常量
EALE,
FEMALE,
SECRET
//注;枚举常量的默认是从0开始,依次向下递增1的
};
int main()
{
printf("%d\n", EALE);//0
printf("%d\n", FEMALE);//1
printf("%d\n", SECRET);//2
return 0;
}
字符串
在存储字符和数值时一个一个的存储太麻烦了,C语言有一种专门为存储多种数据的储存方式,字符串。
"hello.\n";
这种由双引号引起来的一串字符称为字符串字面值,或者简称字符
串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容。
如何在计算机中查看数组在内存的存储
1.在调试页面点击逐语句或逐过程
2.增加监视
3.在监视页面增加要监视的数组名
4.点击逐语句的按F11或点击逐过程按F10,看着光标按一步走一下
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串
内容。
注意;printf在打印数组时遇到\0打印停止。
arr1,arr2,arr3,arr4的存储的内容。
char arr1[]=“abcde”;
数组arr存放的是a,b,c,d,e,\o个元素共6个元素。监视中默认存放是char arr[6]。
char arr2[5]=“abcde”;
数组arr2存放的是a,b,c,d,e,没有’\0’的存在,存放了5个元素。
转义字符
假如我们要在屏幕上打印一个目录: c:\code\test.c
因为\t和\n是转义字符
这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。下面看一些转义字符。
转义字符 | 解释 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\’ | 用于表示字符常量’ |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 |
\xdd | dd表示2个十六进制数字。 如: \x30 |
如果我们想打印 单引号 ‘ 和双引号 “ 要在单引号和双引号前面加上\
;那\130打印出来的是什么呢?
‘\130’这个8进制转化成10进制,88转化为ASCII在所代表的那个值。
表示1~3个八进制的数字.转化成十进制时所对应的ASCII表的值。
;那\x30打印出来的是什么呢?
‘\x30’这个8进制转化成10进制,48转化为ASCII在所代表的那个值。
笔试题
//程序输出什么?
#include <stdio.h>
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
//strlen是一个库函数,用来求字符串的长度的,统计的是字符串中\0之前出现多少个字符。
// \62被解析成一个转义字符
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}
运行结果和分析。
- “abcdef"是由6个字符组成的字符串,6个字符分别是a b c d e f .
2."c:\test\628\test.c"也是个字符串,它是由字符和转义字符组成的字符串。字符是c ; e s t 8 e s t . c转义字符是\t \62 \t
注意;\628中的8已经不是八进制数了,所以\62是转义字符
注释
- 代码中有不需要的代码可以直接删除,也可以注释掉
- 代码中有些代码比较难懂,可以加一下注释文字
比如:
#include <stdio.h>
int Add(int x, int y) {
return x+y; }
/*C语言风格注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
//C++注释风格
//int a = 10;
//调用Add函数,完成加法
printf("%d\n", Add(1, 2));
return 0; }
注释有两种风格:
C语言风格的注释 /xxxxxx/
缺陷:不能嵌套注释
C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行
选择语句
选择语句也称分支语句
解释;是有选择的语句
if(判断条件)
语句1;
else if(判断条件)
语句2;
else
语句3;
switch(判断条件)
{
case 1:
语句1
break;
case 2:
语句2
break;
case 3:
语句3
break;
default:
break;
}
如果你好好学习,高考时上好大学。
如果你不好好学习,高考时你上不了好大学。
这是选择
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int study = 0;
printf("你好好学习吗?(选择1 or 0):>\n");
scanf("%d", &study);
if (study == 1)
printf("好大学");
else
printf("不好大学");
return 0;
}
循环语句
有些事必须一直做,比如日复一日的学习。
#include <stdio.h>
int main()
{
int study = 1;
while (study < 100)
{
printf("好好学习\n");
study++;
}
if (study >= 100)
printf("好大学\n");
return 0;
}
C语言中如何实现循环呢?
while语句
for语句
do … while语句
函数
#include <stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = num1 + num2;
printf("sum = %d\n", sum);
return 0; }
上述代码,写成函数如下:
#include <stdio.h>
int Add(int x, int y) {
int z = x+y;
return z; }
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2);
printf("sum = %d\n", sum);
return 0; }
函数的特点就是简化代码,代码复用
数组
要存储1-10的数字,怎么存储?
C语言中给了数组的定义:一组相同类型元素的集合
数组的定义
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
数组的下标
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问的。
比如;
int arr[10] = {0};
//如果数组10个元素,下标的范围是0-9
数组的使用
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}