c语言程序设计 第四章 总结

   分支结构程序设计

输入三角形的三边,判断能否构成三角形,如果能构成三角形,计算三角形的面积。不能则不能构成三角形。

例【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);
	}
	return 0;
}

运行结果如下: 

 程序流程图:

 例【4.2】

编写程序,输入x的值,按以下分段函数计算并输出y的之前。

#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.3】

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

1.关系运算符
关系运算符用于判断两个操作数的大小关系。
2.关系表达式
用关系表达式将两个表达式连接起来的式子称为关系表达式。

#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.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.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.8】 

计算y的1值。

y=f(X)=eX  X<=1;

X*x-1 X>1;

#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;
}

例【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】

if分支语句

#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 > b)
	{
		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.12】

 输入3个任意整数,找出其中的最大数。

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.14】

计算函数
 

#include<stdio.h>
#include<math.h>
int main()
{
	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.16】

使用switch语句实现分支结构

关于switch语句的几点说明:

(1)switch后的表达式可以是任何表达式,其值只能为整型、字符型、枚举型之一。

(2)每个case后面的常量表达式的值互不相同,否者就会出现相互矛盾的现象。

(3)各个case和default的出现次序不影响执行结果。

(4)可以让多个case共用一组执行语句。

(4)switch语句允许嵌套使用。

#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月的天数是%d天\n", year, month, days);
	return 0;

}

例【4.18】

switch语句

#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;
}

 例【4.19】

#include<stdio.h>
#include<math.h>
int main(void)
{
	float x, y;
	scanf_s("%f", &x);
	if (x >= 0)
		y = sqrt(x);
	else
		y = pow(x, 5) + 2 * x + 1 / x;
	printf("x=%.2f,y=%.2f\n", x, y);
	return 0;
}

例【4.20】

 判断年份是否为闰年

#include<stdio.h>
int main(void)
{
	int year, leap;
	printf("输入年份:");
	scanf_s("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		leap = 1;
	else
		leap = 0;
	if (leap)
		printf("%d是闰年\n", year);
	else
		printf("%d不是闰年\n", year);
	return 0;
}

嵌套类型

#include<stdio.h>
int main(void)
{
	int year, leap;
	printf("输入年份:");
	scanf_s("%d", &year);
	if (year % 4 == 0)
	{
		if (year % 100 == 0)
		{
			if (year % 400 == 0)
				leap = 1;
			else
				leap = 0;
		}
		else
			leap = 1;
	}
	else
		leap = 0;
	if (leap)
		printf("%d是闰年\n", year);
	else
		printf("%d不是闰年\n", year);
	return 0;
}

 

 

多分支格式类型

#include<stdio.h>
int main()
{
	int year, leap;
	printf("输入年份:");
	scanf_s("%d", &year);
	if (year % 4 != 0)
		leap = 0;
	else if (year % 100 != 0)
		leap = 1;
	else if (year % 400 != 0)
		leap = 0;
	else
		leap = 1;
	if (leap)
		printf("%d是闰年\n:", year);
	else
		printf("%d不是闰年\n:", year);
	return 0;
}

例【4.21】

由键盘输入一个3位的整数,判断该数是否为升序。若输入的不是3位数,输出“Enter error”。升序是指高位数依次小于其低位数的数。如359为升序数。

#include<stdio.h>
int main()
{
	int n, a, b, c;
	printf("请输入一个3位整数:");
	scanf_s("%d", &n);
	if (n < 100 || n>999)
		printf("输入错误:\n");
	else
	{
		a = n / 100;
		b = n / 10 % 10;
		c = n % 10;
		if (a < b && b < c)
			printf("%d是升序数\n", n);
		else
			printf("%d不是升序数\n", n);
	}
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值