前言
家人们第二篇来了,距离第一篇5天时间,这五天,我天天追课,没时间写,让爱学习的你我久等了实在抱歉,我也尝到了一直追课的苦头,就是不对当时学到的东西进行总结,很快就忘了,希望家人们不要学我,闲话不多说,开始我们的学习吧,这一篇内容过多,建议家人们想了解那个点,直接点文章目录可以跳到对应的知识点
提示:以下是本篇文章正文内容,下面案例可供参考
一、变量和常量(常量)
生活中我们有可变的值和不变的值,可变的值就是变量;
不变的值就是常量如:身份证,性别
1.变量( 初始c语言1)
2.常量(四种)
2.1、字面常量
字面常量就是从字面上看出来就是这个值
#include<stdio.h>
int main(){
//字面常量整数30不会变30就是30
30
3.14//小数
'w'//字符
"abc"//字符串
}
2.2、const修饰的常变量
从左边的运行中可以看出变量a可以正常运行,但如果加了const关键字,再去赋值就报错了;是因为加了const就有了常量的属性,而常量不能直接修改
2.3#define定义的标识符常量
左边为报错的代码在第13行报错,是因为当#define定义的标识符常量MAX有了值后,我们在去赋值,使其值发生改变,就会报错,因为常量是不能修改值的;
右边为能正常运行的值,在第12行定义变量a去储存MAX没有改变MAX的值**是可以正常运行的
注意:这变define定义的标识符一般是大写,小写也可以
2.4枚举常量
现在我们是初始c语言,所以简单的来了解一下,生活中有很多东西是一一列举的如颜色
注意:enum是枚举常量关键字
二、字符串+转义字符+注释
1、字符串
1.1什么是字符串?
“abc\n”
这种由“”双引号包括起来的一堆字符叫做字符串
1.2 打印输出字符串
- 那我们怎么去打印实现他呢?
char ch="abc" //错,不能用字符类型去定义字符串,字符串没有数据类型
printf("%s",ch);
我们可以把他放在数组里就可以打印了,有两种形式:
#include<stdio.h>
int main(){
//第一种,字符串abc向char类型申请4个空间
char arr1[4]="abc";
//第二种,三个字符向char类型申请四个空间
char arr2[4]={'a','b','c'};
//输出这些字符串
printf("%s",arr1);
printf("%s",arr2);
return 0;
}
运行结果:
abc
abc
那这两种有什么区别呢?注意字符串都是以 \0 为结束标志的,
第一种形式‘’abc”是有四个空间的因为字符串后面有跟 \0 作为结束标志,所以我第一种形式有四个空间,[ ]里面填4
第二种形式他是以一个一个字符打印,而字符没有结束标志 \0 ,所以他占3个空间,而没有结束标志的话他会打印乱码,所以我们[ ]这里得填4使他只有在第4个空间结束,
如果[ ]括号里面填小于或等于他字符串个数的话,他会乱码,如图
当然我们[ ]里可以不填,让编译器帮我们判断字符串大小,第一种形式可以正常打印因为他默认 \0 结束,而第二种形式不行,因为字符没有 \0 ,必须加上 \0 ,才能正常打印,如图
1.3求字符串长度
为了更好的体现\0的重要性,我们需要知道一下两种形式下的字符串长度,
求一个字符长度要用到strlen函数,他的头文件要用string.h
//使用printf库函数要用到头文件stdio.h
#include<stdio.h>
//使用strlen库函数时要用到头文件string
#include<string.h>
int main() {
char arr1[] = "abc";//第一种形式
char arr2[] = {'a','b','c'};//第二种形式
//输出打印字符串长度
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
return 0;
}
运行结果:
为什么第二种形式会字符长度打印出来是42呢,因为他后面没有跟 \0 ,而 \0 是结束标志,程序走起来的时候找到c这个字符后会一直查找,直到找到 \0 为止,
如果我们要得到正确的字符长度得在字符 ‘c’ 后面加上 \0 ,此时他就会数到第三个停止查找,打印打印字符串长度,如下
char arr2[]={'a','b','c','\0'};
printf ("%d",strlen(arr2));
运行结果:
3
从上面几个列子中我们清晰的认识到了 \0 的重要性
注意:strlen在测量字符长度时不算上结束标志 \0
2、转义字符
顾名思义转义字符就是转变字符意思
有哪些呢
转义字符有以上这几种,有打钩的是需要记住,认识的
1.1 ?(防止被打印成三字母词)
printf("%s\n", "(are you ok??)")
//输出打印的结果是:are you ok]
与我们想打印的内容不符,因为,他连续使用了多个问号被编译器认为是三字母词,我们如果要正确打印想要的内容必须在 ?前面加 \ 转变他的意思,如下
//在?前面加\让他就是个问号,防止转化为三字母词
printf("%s\n", "(are you ok\?\?)");
注意三字母词这个语法在是古老的语法目前只有vc6.0这个编译器才会出现,vs是可以正常打印的,这个语法我们简单的了解一下
1.2. '(字符常量)
如果我们要打印一个字符单引号 ‘ ’ ’ 怎么办呢?直接输出打印?不行他会报错,因为他会把前两个和一起,那怎么正确打印很简单在他前面加 \ 就行
如下:
printf("%c", ' \'');
运行如图:
1.3. \t(水平制表符)
相当于你键盘敲Tab键一样的效果,输出内容空四格,如图:
如果你想打印正确全部,不想 t 被转变意思很简单在 t 前面加个转义符 \ 就好
1.4. \ddd(表示1~3个八进制数字)
这个3位八进制数字在编译器中会转换成对应2位十进制数字,以对应ASCII码词打印出来,比如我们这边打印八进制 130 如图:
注:十进制88对应ACSII中的字符X
1.5. \xdd(表示2个十六进制数)
2位十六进制数会转换成2十进制数,以对应的ACSII码词打印出来,比如 x63 这个十六进制数,如图:
总结:如果我们不想让他转变意思直接在其前面加个 \ 就行
3.注释(//)
我们代码都可以用 // 这个符号来注释我们代码的意思,而注释有以下三个好处
三、选择语句(if 和else)
选择语句 if 和 else是对应的语句,也可以成为判断语句,比如:如果我不好好更博客总结就是差生,如果我好好总结就是大牛,这就是选择。
那代码怎么去实现他呢
#include<stdio.h>
int main()
{
int a = 0;//a初始化
printf("要好好写博客总结吗(1/0)?");
scanf("%d", &a);//输入一个值
//判断你输入的数,如果是1则大牛
if (a == 1)
{
printf("大牛\n");
}
//否则就是差生
else
{
printf("差生\n");
}
return 0;
}
输入1运行结果如图:
四、循环语句(while、for 、 do…while )
因为是初识别C语言我们先认识 while 循环,for和do…while后面讲
比如我好好刷题,刷大于20000道题,就成为大牛,我刷题小于或等于20000题就继续努力刷题。
怎么去实现他呢?这时就可以用循环来遍历他?再用选择语句来判断是否大于或小于等于20000,
#include<stdio.h>
int main()
{
printf("好好刷题\n");
int a = 0;
while (a <= 20000)//循环a<=20000的值
{
a++;//a进入循环每次都加1,直到加到等于20000的时候停止
printf("我要继续努力刷题\n");
}
//上面一直循环到大于20000的时候停止,打印大牛
if (a > 20000)
{
printf("大牛\n");
}
return 0;
}
运行结果如图 大于20000时打印大牛:
五、函数
c语言的函数跟数学很像,比如f(x)= x + y 这就是个函数,正常我们求两个数的可以这么求
#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
//输入两个数
scanf("%d %d", &a, &b);
//表达式
int c = a + b;
//输出
printf("%d\n", c);
return 0;
}
使用函数求法,如下
#include<stdio.h>
int add(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
//定义两个变量
int n1 = 0;
int n2 = 0;
//输入两个变量的n1,n2的值返回给add函数,add函数在进行加工求和
scanf("%d %d", &n1, &n2);
//求和的值存储在变量sum中
int sum= n1 + n2;
//函数加工求和的值打印
printf("%d\n", sum);
return 0;
}
函数名add 相当于加工厂,而n1,n2则相当于原材料,我在主函数大括号里{}放了原材料n1,n2然后拿去函数add加工最后输出。这样有个好处就是便可以定义新的材料拿去给函数加工,一定程度上实现了代码复用,简化了代码
下面让献上我们函数的结构让我们能更好的理解:
六、数组(一组相同类型的集合)
6.1.多个相同类型值储存,如十个整数
比如我们怎么去储存十个数值呢,一个个去定义储存显然不现实,所以我们要到数组
如:
int main()
{
//储存1~10的数
int arr[10]={1,2,3,4,5,6,7,8,9,10};
}
6.2.打印是十个数中的某个数
比如如我们要打印上面的6,怎么打印呢,如:
#include<stdio.h>
int main()
{
//下标 0, 1, 2,3, 4,5, 6,7, 8, 9
int arr[10]={1, 2, 3, 4, 5, 6, 7 ,8, 9,10};
//访问数组下标5,打印6,因为下标是从0开始数的
printf("%d\n",arr[5]);
return 0;
}
我们要用到数组里的值时,都是访问数组下标的,数组下标从0开始数
6.3。打印数组所以值
我们怎么去打印上面的十个数值呢,这时就需要用到循环,去遍历输出他
#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};
int i= 0;//初始化i=0
//访问下标到9,没有10,所以条件不能是i<=10
while(i<10)
{
//进入循环打印
printf("%d",arr[i]);
//i每次加1,返回给while又开始循环,依次类推,直到打印i<10的所以下标对应的数为止
i++;
}
return 0;
}
总结
能看到这里的家人,应该或多或少有些许收获吧,如果你们跟我一样在看时有所收获,那我写这篇6000多个字的文章也值了。我们总结一下第二篇讲了什么有常量,字符串,转义字符,注释,选择语句,循环语句,函数,数组。我为了更好的去写这篇反复看第二课,不放过任何一个点只为呈现更好的博客利于我们复习,更好的学习,如果对你有些许帮助不妨点个赞,收藏,也算是对我的一种鼓励,如文章哪里有出错啥的麻烦指正,谢谢