湖师大C语言实验期末复查

本文的几个实验,非常简单,但他们是编写复杂代码的基础,搞明白它们非常重要。

实验(五)组成三角形

知识点复查:分支结构和逻辑运算,海伦公式,常见math库函数

  1. 计算半周长 s:

    s=2a+b+c​
  2. 使用海伦公式计算面积 A:

    A=s(s−a)(s−b)(s−c)​

实验内容

实验代码实现

#include<stdio.h>
#include<math.h>

int main() {
	int a = 0;
	int b = 0;
	int c = 0;
	//float s = (a + b + c) / 2.0;若此时算出面积,area变量将始终为0
	//float area = sqrt(s * (s - a) * (s - b) * (s - c));
	scanf("%d%d%d", &a, &b, &c);
	if (a <= 0 || b <= 0 || c <= 0) {
		printf("ERROR");
	}
	else {
		if (a + b > c && a + c > b && b + c > a) {
			float s = (a + b + c) / 2.0;
			float area = sqrt(s * (s - a) * (s - b) * (s - c));
			printf("area=%8.2f", area);
		}
		else {
			printf("cannot");
	}
	}
	return 0;
}

编写总结:

判断三边能否组成三角形,两短边之和要大于第三遍,也可以是任意两边之和大于第三边,这样就省去了比较三遍长度的过程。已知三边求三角形面积需要用到海伦公式以及math库。

编写代码时注意,area(面积)随着三边长度的改变而改变,没输入一次,就计算一次面积,所以面积和周长不能紧跟边长之后初始化,不然会直接赋值给area变量为0,输入三边长度,也不改变它的赋值,它的值始终为零。想让哪个变量的值改变,就对他重新赋值。

实验(六)累加1-n

知识点复查:for循环,分支语句

实验内容

实验代码实现

#include<stdio.h>

int main() {
	int n = 0;
	int sum = 0;
	scanf("%d", &n);
	if (n <= 0) {
		printf("ERROR");

	}else{
		for (int i = 1; i <= n; i++) {
			sum += i;
		}
		printf("%d", sum);
	}
	return 0;
}

实验(七)累乘

知识点复查:for循环,分支结构

实验内容

实验代码实现

#include<stdio.h>

int main() {
	int n = 0;
	int p = 1;
	scanf("%d", &n);
	if (n <= 0) {
		printf("ERROR");

	}
	else {
		for (int i = 1; i <= n; i++) {
			p *= i;
		}
		printf("%d", p);
	}
	return 0;
}

编写总结:

累乘,累加类问题,用for循环总是能得心应手。

实验(八)判素数

知识点复查:素数的判定,for循环,分支语句,常见math库函数

判断素数的方法:

试除法:对于一个数 n,从 2 到 n的算数平方根逐一尝试除以 n。如果 n 不能被这些数整除,那么 n 是素数。

实验内容:

实验代码实现

#include<stdio.h>
#include<math.h>

int main() {
	int n = 0;
	int sum = 0;
	scanf("%d", &n);
	if (n <= 2) {
		printf("ERROR");
	}
	else {
		for (int i = 2;i <= sqrt(n);i++) {
			if (n % i == 0) {
				sum += 1;

			}
		}if (sum == 0) {
			printf("%dis prime", n);
		}
		else
		{
			printf("%dis not prime", n);
		}
	}
	
	return 0;
}

编写总结:

一个数判断它是不是素数,要用它取模比他小的数,结果为零,就新增一个因数。除它和1还有因子就不是素数。

一定要注意分支结构的构造,先判断输入是否合法,在此基础上进行循环然后分支判断是否为素数。

如果结合break语句的话,可以找到最小(除一以外)因子,也可已找到全部因子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值