书接上回~
3.5 常量
C语言中的常量和变量的定义的形式有所差异。
C语言中的常量分为以下几种:
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号内的MALE,FEMALE,SECRET是枚举常量可能取得值
//枚举常量的默认值是从0开始,依次向下递增的
int main()
{
3.14;//字面常量
1000;//字面常量
const float pai=3.14f; //这里的pai是const修饰的常变量
pai=5.14;//被const修饰后不可以直接修改!
//#define的标识常量(也不可直接修改)
#define MAX=100
printf("MAX=%d\n",MAX);
return0;
}
注:上面例子中的pai被称为const修饰的常变量,const修饰的常变量在C语言中只是在语法层面限制了变量pai不能直接被改变,但是pai本质上还是一个变量,所以叫常变量。
4、字符串+转义字符
4.1字符串
"hello word.\n"
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),简称为字符串。
注:字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算作字符串的内容。
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
char arr1[] = "bit";
char arr2[] = {'b', 'i', 't'};
char arr3[] = {'b', 'i', 't','\0'};
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
- 当使用"bit"字符串输出时,编译器会默认字符串最后有一个\0
- 当用单个字符形式输出时,arr2后面并没有\0,所以它会一直打印,直到找到\0才会停止,所以才会出现一堆乱码
- 当我们给arr3后面加上\0时,它就能正常输出了
4.2 转义字符
如果我们要在屏幕上打印一个目录: c:\code\test.c
我们该如何写代码?
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
return 0;
}
实际上程序运行的结果是这样的:
为什么会打印不全呢?
这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。下面看一些转义字符:
由这个表格可知,当我们在t、n前面加上\时,他们所表达的意思就不同了,不会被打印出来。那我们如何解决这个问题呢?
这就用到了\\(反斜杠转义字符)
#include <stdio.h>
int main()
{
//问题1:在屏幕上打印一个单引号',怎么做?
//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号“,怎么做?
printf("%c\n", '\'');
printf("%s\n", "\"");
return 0;
}
//程序输出什么?
#include <stdio.h>
int main()
{
printf("%d\n", strlen("abcdef"));
// \62被解析成一个转义字符
printf("%d\n", strlen("c:\test\628\test.c"));
return 0;
}
5. 注释
1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
比如:
#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
- 可以注释一行也可以注释多行
6. 选择语句
如果你坚持学习,校招时拿一个好offer,走上人生巅峰。
如果你半途而废,毕业等于失业,回家卖红薯。
这就是选择!
#include <stdio.h>
int main()
{
int coding = 0;
printf("你会好好学习吗?(选择1 or 0):>");
scanf("%d", &coding);
if(coding == 1)
{
printf("坚持,你会有好offer\n");
}
else
{
printf("放弃,回家卖红薯\n");
}
return 0;
}
7. 循环语句
有些事必须一直做,比如日复一日的学习。
还比如:
C语言中如何实现循环呢?
- while语句
- for语句
- do ... while语句
//while循环的实例
#include <stdio.h>
int main()
{
printf("打代码\n");
int line = 0;
while(line<20000)//如果我的有效代码小于20000行
{
line++;
printf("我要继续努力敲代码\n");
}
if(line>=20000)//如果我的有效代码大于等于20000行
printf("好offer\n");
return 0;
}
8. 函数
#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;
}
函数的特点就是简化代码,代码复用。
9. 数组
要存储1-10的数字,怎么存储?
C语言中给了数组的定义:一组相同类型元素的集合
9.1 数组定义
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
9.2 数组的下标
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。
数组可以通过下标来访问的。
比如:
int arr[10] = {0};
//如果数组10个元素,下标的范围是0-9
9.3 数组的使用
如何储存十个元素呢?
如下:
#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;
}
输出:
每日新知识
else if的用法
//已知一个函数y=f(x),当x < 0时,y = 1;当x = 0时,y = 0;当x > 0时,y = -1。
//一行,输入一个整数x。(-10000<x<10000)
//一行,输出y的值。
//两种方法比较
//else if的用法
#include<stdio.h>//第一种方法
int f(int x)
{
if (x <= 0)
{
if (x < 0)
{
return 1;
}
else
return 0;
}
else
return -1;
}
int main()
{
int y;
scanf("%d", &y);
int z = f(y);
printf("%d\n", z);
return 0;
}
#include <stdio.h>//第二种方法
int main()
{
int x = 0;
int y = 0;
scanf("%d", &x);
if (x < 0)
y = 1;
else if (x == 0)
y = 0;
else
y = -1;
printf("%d\n", y);
return 0;
}
未完待续~