C语言基础 入门学习(二)

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次的时候只会比较一次(被优化为一次比较)有一个跳转表

猜你喜欢

转载自blog.csdn.net/zhangfei5354/article/details/83053724