第四章总结

4.1引例

#include<stdio.h>
#include<math.h>
int main()
{
	int a, b, c;
	float area;
	double s;
	printf("请输入三角形的三条边长:");
	scanf_s("%d,%d,%d", &a, &b, &c);
	s = (a + b + c) / 2.0;
	if (a + b <= c || b + c <= a || a + c <= b)
		printf("不构成三角形\n");
	else
	{
		area = sqrt(s * (s - a) * (s - b) * (s - c));
		printf("三角形的面积是:%f\n", area);
	}
}

 流程图

例4.2

#include<stdio.h>
int main()
{
	int x; float y;
	printf("输入x的值:");
	scanf_s("%d", &x);
	if (x != 0)
		y = 1.0 / x;
	else
		y = 0;
	printf("%d,%f", x, y);
	return 0;
}

 流程图

4.2关系运算符、逻辑运算符、条件运算符

4.2.1关系运算符和关系表达式

1.关系运算符

注意:

(1)关系运算符都是双目运算符,其结合方向是左结合。

(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符。

(3)关系运算符中,>、<、>=、<=、的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即“>="的优先级高于”==“。

2.关系表达式

注意:

(1)区分运算符”=“和”==“。”=“是赋值运算符,”==“是关系运算符。

(2)关系表达式主要用于分支结构中的条件判断。因此用”1“表示”真“,”0“表示”假“。

表4.1 关系运算符

例4.3 

#include<stdio.h>
int main()
{   char c='m';
int i=10,j=20,k=30;
float x=13e+5,y=10.85;
printf("%d,%d,",'a'+5<c,-i-2*j>=k+1);
printf("%d,%d,",1<j<5,x-5.25<=x+y);
printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);
return 0;
}

 流程图

4.2.2  逻辑运算符和逻辑表达式

1.逻辑运算符

注意:与运算符&&或运算符||都是双目运算符,非运算符!为单目运算符。

2.逻辑表达式

用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。

 例4.5

#include<stdio.h>
int main()
{
 int a = 3, b = 3, c = 2, d;
 printf("%d,", !a && !b && c);
 printf("%d,", !a || !b || c);
 printf("%d\n", a >= b && b > c);
 d = c-- || (b = 6) && a++;
 printf("a+%d,b=%d,c=%d,d=%d\n", a, b, c, d);
 return 0;
}

 流程图

4.2.3  条件运算符和条件表达式

1.条件运算符

2.条件表达式

例4.6

#include<stdio.h>
int main()
{
 int x, y;
 printf("请输入两个整数:");
 scanf_s("%d,%d", &x, &y);
 printf("两个整数中的最大数为:%d\n", x > y ? x : y);
 return 0;
}

 

流程图

 4.3 使用if-else实现分支结构

4.3.1  if-else语句

例4.7

#include<stdio.h>
int main()
{
 int a, b;
 printf("请输入两个整数:");
 scanf_s("%d%d", &a, &b);
 if (a > b)
  printf("两个整数中的最大数为:%d\n", a);
 else
  printf("两个整数中的最大数为:%d\n", b);
 return 0;
}

 

 流程图

 例4.8

#include<stdio.h>
#include<math.h>
int main()
{
 double x, y;
 printf("输入x的值:");
 scanf_s("%lf", &x);
 if (x <= 1)
  y = exp(x);
 else
  y = pow(x, 2) - 1;
 printf("f(%f)=%.2f\n", x, y);
 return 0;
}


 流程图 

2.单分支if语句

例4. 9

#include<stdio.h>
int main()
{
	float x;
	scanf_s("%f", &x);
	if (x < 0)
		x = -x;
	printf("%f", x);
	return 0;
}

流程图

 

 例4.10

#include<stdio.h>
int main()
{
	int x, y;
	printf("x=");
	scanf_s("%d", &x);
	if (x)
		y = 1;
	else
		y = -1;
	printf("y=%d", y);
	return 0;
}

 

 流程图

例4.11

#include<stdio.h>
int main()
{
	float a, b, c, t;
	scanf_s("%f,%f,%f", &a, &b, &c);
	if (a > b)
	{
		t = a; a = b; b = t;
	}
	if (a > c)
	{
		t = a; a = c; c = t;
	}
	if (b > c)
	{
		t = b; b = c; c = t;
	}
	printf("%5.2f,%5.2f,%5.2f\n", a, b, c);
	return 0;
}

流程图 

4.3.2 if语句的嵌套

 例4.12

#include<stdio.h>
int main()
{
	int a, b, c, max;
	scanf_s("%d%d%d", &a, &b, &c);
	if (a > b)
		if (a > c)
			max = a;
		else
			max = c;
	else
		if (b > c)
			max = b;
		else
			max = c;
	printf("max=%d\n", max);
	return 0;
}

 

 

 流程图

例4.13

#include<stdio.h>
int main()
{
	int x, y;
	scanf_s("%d", &x);
	if (x > 0)
		y = 1;
	else
		if(x==0)
	y = 0;
		else
			y = -1;
	printf("y=%d\n", y);
	return 0;
}

 

  流程图

 4.3.3多分支if语句

例4.14

int main()
{
#include<stdio.h>
#include<math.h>
 float x, y;
 printf("输入x的值:");
 scanf_s("%f", &x);
 if (x < 2)
  y = 2 * x;
 else if (x <= 10)
  y = 7 - 3 * x;
 else
  y = 1 - cos(x);
 printf("y=%0.6f\n", y);
 return 0;
 
}

流程图

例4.15

#include<stdio.h>
int main()
{
	char c1, c2;
	printf("请输入一个字符:");
		c1 = getchar();
		if (c1 >= 'a' && c1 <= 'z')
			c2 = c1 - 32;
		else if (c1 >= 'A' && c1 <= 'Z')
			c2 = c1 + 32;
		else
			c2 = c1 + 1;
		putchar(c2);
		return 0;
}

 

流程图

4.4 使用switch语句实现分支结构

 

例4.16

#include<stdio.h>
int main()
{
  int month;
  printf("输入月份:");
   scanf_s("%d", &month);
  switch ((month - 1 / 3))
  {
  case 0:
   printf("%d月是第1季度\n", month);
   break;
  case 1:
   printf("%d月是第2季度\n", month);
   break;
  case 2:
   printf("%d月是第3季度\n", month);
   break;
  case 3:
   printf("%d月是第4季度\n", month);
   break;
  default:
   printf("输入错误\n");
   break;
  }
  return 0;
 }


 
  

 

 流程图

 例4.17

#include<stdio.h>
int main()
{
 int year, month, days;
 printf("请输入年,月:");
 scanf_s("%d,%d", &year, &month);
 switch (month)
 {
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:
  days = 31;
  break;
 case 4:
 case 6:
 case 9:
 case 11:
  days = 30;
  break;
 case 2:
  if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)
   days = 29;
  else
   days = 28;
  break;
 }
 printf("%d月的天数是%d天\n", year, month, days);
 return 0;
}


流程图

例4.18

#include<stdio.h>
#include<math.h>
int main()
{
 int expression;
 float x, y;
 printf("输入x的值:");
 scanf_s("%f", &x);
 expression = (int)(1 * (x < 2) + 2 * (x >= 2 && x <= 10) + 3 * (x > 10));
 switch (expression)
 {
 case 1:
  y = 2 * x;
  break;
 case 2:
  y = 7 - 3 * x;
  break;
 case 3:
  y = 1 - cos(x);
   break;
   
 }
 printf("y=%0.5f\n", y);
 return 0;
}

 流程图

3.在switch语句格式中不使用break语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值