作业小结
ABC比大小
C语言中 算法比较快,但是调用内存会很慢,所以比较较多的时候,不见得会比交换值的快
判断闰年
if( !(year%4) && (year%100) || !(year%400) )
判断月份几天
可以这样!
int is_leap = if( !(year%4) && (year%100) || !(year%400) );
is_leap 代替是否加二月的那一天
出现游离的错误 会出现2-3个错误,因为中文符号一般对应2-3个字符;
水仙花数
ge = num%10; s =num/10%10; b=num/100;
man查找函数所在头文件
如果运用math.h---->gcc task.c -lm
判断成绩
考虑欠缺了成绩有可能是小数的情况,应该用float
查漏补缺
ls cd touch rm mv chmod catore clear sudo11
mkdir rmdir pwd whoami
find grep ifconfig ping
//ssh telent ftp tar
三大模式
gg G ngg nG vim filename.c +100
替换代码:r cw R
行底模式:set nu set nonu %s/old/new /key !cmd w q x X
C语言发展 unix Linux gcc
汇编的部分相当薄弱
c代码变成可执行过程
预处理,查看宏定义的替换结果,gcc -E 生成.i文件
编译,理解c戴梦得的底层工作原理 i++的工作原理 gcc -S 生成.s文件
汇编,生成目标文件.o结尾,生成代码库,静态库,共享库。 gcc -c 生成 .o 文件
链接 ,多文件编程的基础 gcc a.o
-wall 尽可能多的产生警告
-Werror 警告编程错误
gcc常用参数
-E -S -c -o -I -l -D(命令行定义宏)-DDBUG
.h .h.gsh .c .o .a .so
数据类型
bool <bool true
分支语句补充(开关语句)
switch(n)//可以是一个数值,表达式,运算结果一定是一个整数否则报错
{
case val: //val 必须是常量 否则就报应该是一个整常量
printf(“123”);
break;
//如果所有的case 后面都有break,就形成了多分支结构
default:
//如果前面的都不满足就执行edefault、功能类似else
都记得加break; 因为可能default不一定在行尾,会导致通铺
}
switch 不能于continue 配合使用
练习1:输入一个月份,判断季节
可以写成
case 1:case 2:case 3: // 让1-3开关打通~
case 1 … 3: // 只能在vim上用 表示一段范围
练习2:输入一个月份,忽略闰月,判断改月多少天
return 0; 结束 不是exit()
for循环语句体
循环是一种让一段代码反复执行,从而达到你想要的结果
for是一种比较灵活而且危险(相比较其他语句循环来说)
一般使用一个变量来引导这个循环的运行,这个变量叫做循环标量。
index 索引 i
for([1];[2];[3])
{
[4];
}
1、可以给循环变量赋值,C99也可以在此定义循环变量!!!C89不行会报错
所以在配置文件vimrc中添加 gcc -std=gnu99 (gnu99包括了gnu98)
2、判断循环是否到达边界 边界值如果给个负数就会死循环
4、当 2 满足后 先去执行 4 ,也叫做循环体
3、当完成循环体后再做3,改变循环变量,防止出现死循环,一般对循环体变量进行自加减
顺序是 1----2----4----3 第二轮-----2----4----3。。。。。。
大括号的问题:
1、没有加大括号,只会默认把下面一行代码作为循环体,如果循环语句只有一句,大括号可以不加
一般商业代码都要求加上大括号,都不会省略
2、建议上下对齐(方便查看是否缺少大括号)
for循环的多种写法:
for(;;)== while(true)==while(1)
for(int i=0;i<10li++)
{
}
while语句:
while(条件)//当条件为真,执行循环体,为假时结束
{
//循环体
}
while是for循环的精简版本,for循环负责明确循环次数的问题
而while循环只知道结束条件,而不限定循环次数的问题。也就是pat的多测试例!!
do while语句
do
{
//循环体
}while(循环条件); //分号不能少
先执行循环语句,在判断循环条件,该循环语句至少执行一次
适合先干活,在检查的问题 特殊的情况
例如:输入密码 先输入再检查、文件读写
循环嵌套:
循环语句中有包含了循环语句,在二维数组中嵌套很多!
外层循环执行一次,内层循环执行全部。
练习三:找出所有三位水仙花数
练习四:输入一个正整数判断是否是素数
练习五:输入一个整数,分解显示 例如-1234 —>- 1 2 3 4
练习六:输入一个正整数,判断是否是回文数12321 123321 1234321
int num = 0; new =0;
int old = num;
while(old)
{
new = new*10 + old%10;
old /= 10;
}
if(old == new)
{
yes
}
这题就是自己想太复杂了,不用判断第一个和n个,2和n-1个。。反过来输出判断是否一样就可以了!
跳转语句
goto
它可能会破坏已经设计好的分支语句循环语句,因此绝大多数公司都是禁止使用的。
在特定的场景下很有用:适用于硬件编程的异常处理!
不使用循环语句解决一些问题~~~,只能用goto
标签名 temp1:
goto 标签名;
在函数内,不能再函数外调用;
练习7:不适用循环语句计算n的阶乘
先用for循环写一遍
Break
1、在switch语句中,用于关闭执行开光
2、在循环语句中,用于跳出一层循环
Continue
结束本次循环,进入下一次循环
Return
1、返回一个数据给函数的调用者
2、结束函数的执行
练习8:不使用循环语句来计算出前n项的斐波那契数列