作业分析讲解
================
1. switch除了标准写法,之外,在面试题中经常搞一下变形形式来考察你对于switch-case的理解
goto和标签
==============
1. 作用: 帮助我们实现代码的跳转
标签的定义:
名字:
goto语句和标签配合使用
C语言的工业标准
=================
1. 由于C语言发展历程中出现了多个版本的语法规定
C89和C99 C99在C89基础增加一些语法特性,如果你写代码不小心用到了C99的语法特性,麻烦你编译的代码
如果你编译代码时候提示错误单词中有 -std=c99 ,说明你使用了C99标准
gcc hello.c -o hello -std=c99
C语言中的数组
=====================
1. 作用:存放多个相同类型的数据
定义数组:
类型名字 数组名[数组的大小]
例如: int a[10]; // 定义了数组名叫a,最多允许存放10个int类型的数据
float b[7]; //定义float类型数组,最多存放7个小数
char c[8]; //定义char类型数组,最多存放8个字符,开发中使用频率最高,保存字符串 "hello"(字符用单引号,字符串用双引号)
数组的大小:
sizeof求数组的大小 sizeof(a) sizeof(b)
数组的初始化和赋值:
以char类型数组为例:
char c[10]="hello"; //定义数组立马初始化
char c[10]; //定义数组,没有初始化
c="hello"; //典型错误,char类型数组赋值不能直接用=(赋值符号)
strcpy(c,"hello");
补充:linux中有个命令 man帮助你查看linux中的用户手册 man man
2 System calls (functions provided by the kernel) //linux系统提供的函数
3 Library calls (functions within program libraries) //C语言的库函数,比如:printf scanf
man 3 printf
man 3 strcpy
char c[10]={'h','e','l'}; //定义数组立马初始化,一个个字符依次初始化
数组的下标
a[0] ......a[n] //数组下标从0开始
数组部分初始化
数组部分初始化,那么没有初始化的,系统默认全部都填充0
char类型数组求字符串实际长度
strlen(); 比如: strlen(buf); //求出buf中存放的字符串的实际长度
strlen和sizeof区别
sizeof可以求C语言中所有合法类型变量的大小
strlen只能用于求字符串的实际长度,其他类型的变量不能用strlen
字符串的结束标记
C语言规定,字符串必须用双引号括起来,并且字符串有结束标记'\0',用来标记字符串的结尾
我们在使用char类型数组的时候,需要多定义一个字节的空间留给\0
char a[5]="hello"; //不建议你这么写,\0没有位置
char a[6]="hello"; //给\0留了一个空间
int b[2]={18,17};
数组越界
任何一个数组a[n],它都有自己的范围 a[0]-----a[[n-1]
越界可能会产生段错误(你超出了系统分配给你的内存区域)
练习:
1. 从键盘中输入一个字符串保存到char类型数组,请你将它逆序存放
hello --》olleh
2. 从键盘输入任意一个数,求出它的二进制,然后把这个二进制保存到char binary[32]中
754
C语言提供的关于字符串操作的常用函数
========================
1. 求字符串的实际长度 strlen()
字符串的拷贝 strcpy()和strncpy()
字符串的拼接 strcat()
字符串的比较 strcmp()
\n \t \0 \b都是一个字符
练习作业:
1. 定义int数组,任意输入10个整数,对它们从小到大排序
2. 任意输入一个字符串,要求去除掉这个字符串中重复的字符(重复字符只保留一个);
google --》gole
3. 编写程序,把你输入的任何小数,转换成字符串保存到一个字符数组中
scanf("%f",) 15.23
4. 提高题(选做,根据个人能力)
有m个人,编号是1到m,他们围成一圈玩游戏数数,数到n的淘汰,请问最后剩下的那个人是谁?(打印那个人的编号), m, n从键盘输入