C语言基础 Day 2
一、三目运算符 ?:
1 ? 2 : 3 :若条件1成立,则执行2,否则执行3.
int Max_2(int a, int b)//比较两个数中的较大者
{
return a > b ? a : b;//若a大于b,则执行a,否则执行b。
}
//推广:求三个数中的较大者(运用求两个数的较大者)
int Max_3(int a, int b, int c)//第一个比较常见的方法
{
int tmp;//定义一个赋值数
a > b ? tmp = a : tmp = b;//将a与b中的较大者赋值给tmp;
return tmp > c ? tmp : c;//在将tmp和c进行比较。
}
int Max_3S(int a, int b, int c)//直接利用Max_2函数,加入一个函数的嵌套。
{
return Max_2((a, b), c);
}
二、 for循环
for(1;2;3)
{循环体4} 先执行1 再执行2 再执行循环体 再执行3 再执行2 再执行循环体 再执行3······
1-----》2------》4------》3--------》2-------》4------》3 最后直到不符合条件2为止。
bool IsPrime(int n)
{
assert(n != 1);//
for (int i = 1;i < n;i++)//判断一个数是否为素数 即让它除以2到它前一位数中是否能够除尽
{
if (n%i == 0)
{
return false;
}
return true;
}
}
断言 assert
1、 断言不是函数是一个宏,使用时要加头文件 assert.h
2、 作用:是用于对程序进行调试的,对于执行结构的判断,而不是对于业务流程的判断。(相当于一个if ()语句,如果满足断言的执行程序,如果不满足则抛错误)即如果断言表达式的值为真,则断言失败,则程序将会终止
3、 使用情形:断言只适用复杂的调式过程。(如果不复杂完全可以用log或者debug代替)断言对程序员版本(debug)有效,对用户版本(release)无效
三、 switch选择语句
switch()
{
case 1:执行语句;
break;
case 2:执行语句;
break;
}
//每一个case都要有一个break;否则程序会直接运行下去,直到遇见一个break时停止。
switch (ch)
{
case 'A':
printf("分数在90--100/n"); //若选择为A或a执行该语句
break;
case 'a':
printf("分数在90--100/n");
break;
case 'B':
printf("分数在70--90/n"); //若选择为B或b执行该语句
break;
case 'b':
printf("分数在70--90/n");
break;
}
switch (ch)
{
case 'A':
printf("分数在90--100/n");//语句1
//没有break语句,若选择A 则执行语句1和语句2.
case 'B':
printf("分数在70--90/n");//语句2
break;
case 'C':
printf("分数在60---70/n");
break;
}
不能做switch的参数类型有哪些?
不能做的有float double. 必须是一个整型
四、if条件语句
void Fun(int a, int b, int c)//求一个一元二次方程
{
int d = b*b - 4 * a*c;
float x1, x2, i;
i == (-b + sqrt((float)(d))) / (2 * a);//sqrt为求平方根公式,头文件为math.h
if (a == 0)
{
x1 = x2 = -c / (float)b;//要进行强转因为x1与b不是一个类型
}
else
{
if (d<0)//float和0比较:-0.000001-----0.000001
{
printf("不存在x1,x2/n");
return;
}
else if (d == 0)
{
x1 = x2 = -b / (float)(2 * a);
printf("%f,%f/n", x1, x2);
}
else if (d > 0)
{
x1 == (-b + i) / (2 * a);
x2 == (-b - i) / (2 * a);
printf("%f,%f/n", x1, x2);
}
}
}
1、sqrt为求根函数,头文件为math.h
2、float和0比较:当-0.000001<=float>=0.000001 时 float==0;
当 float > 0.000001 时 float>0;
当 float < -0.000001 时 float<0;
3、isalpha(ch);//判断一个字符是否为字母 头文件为ctype.h 若为一个字母 则返回一个非0值.
isdigit(ch2);//判断一个字符是否为一个十进制数字 若为一个数字 则返回一个非0值int
4、if else 与switch case的区别:
前者比较次数有几次比较几次
后者在大于等于4次的时候只会比较一次(被优化为一次比较)有一个跳转表