头歌作业C语言数学运算练习题

1

任务描述

本关需要完成判断三个边长能否构成三角形的小程序。

相关知识

任意两边之和大于第三边即可构成三角形。

关系运算符

== 检查两个操作数的值是否相等,如果相等则条件为真;

!= 检查两个操作数的值是否相等,如果不相等则条件为真;

> 检查左操作数的值是否大于右操作数的值,如果是则条件为真;

< 检查左操作数的值是否小于右操作数的值,如果是则条件为真;

>= 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真;

<= 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入三个数,判断这三个数能否构成三角形的三条边。

要求:

输出1表示能够构成一个三角形。

输出0表示不能构成一个三角形。

测试说明:

测试输入:1.0 2.0 3.0。 预期输出:0

#include <stdio.h>

int main() {
	double a, b, c;
	scanf("%lf%lf%lf", &a, &b, &c);
	if (a + b > c && a + c > b && b + c > a)
		printf("1\n");
	else
		printf("0\n");
	return 0;
}

2

任务描述

本关你需要根据已知的三边完成计算三角形面积的小程序。

相关知识

海伦公式求面积

已知三角形的三边:abc,半周长 p=1/2(a+b+c),则三角形的面积公式s为:

s=sqrt(p*(p-a)*(p-b)*(p-c))

sqrt

C库函数 double sqrt(double x) 返回x的平方根。

参数:

  • x 表示浮点值。

返回值:

  • 返回x的平方根。

例如:

 
 
  1. {
  2. printf("Square root of %lf is %lf
  3. ", 16.0, sqrt(16.0) );
  4. printf("Square root of %lf is %lf
  5. ", 5.0, sqrt(5.0) );
  6. return(0);
  7. }

运行上面的程序,这将产生以下结果:

Square root of 16.000000 is 4.000000
Square root of 5.000000 is 2.236068

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入为三角形的三边(double,保证输入的数据能构成三角形),请输出三角形的面积,并保留2位小数。

注意:

  • 先判断是否可以构成三角形,即任意两边之和大于第三边,可以构成三角形情况下再计算,可以增加严谨性,提高程序健壮性;

  • 若不能构成三角形,则输出“无法构成三角形”。

测试输入:3 4 5

预期输出:面积:6.00

测试输入:8 12 20

预期输出:无法构成三角形

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

int main() {
	float a, b, c, cosA, sinA;
	printf("");
	scanf("%f%f%f", &a, &b, &c);
	if (a + b > c && a + c > b && b + c > a) {
		cosA = (b * b + c * c - a * a) / (2 * c * b);
		sinA = sqrt(1 - (cosA * cosA));
		float area = b * c * sinA * 0.5;
		printf("面积:%.2f", area);
	} else
		printf("无法构成三角形\n");
	return 0;
}

3

任务描述

本关需要完成判断一个整数是奇数、偶数或是素数的小程序。

相关知识

奇数

奇数,又称单数,整数中不能被2整除的数是奇数,奇数的个位为13579。奇数可用2k+1表示,这里k就是整数。

偶数

偶数,又称双数,整数中,能被2整除的数是偶数,偶数的个位为24680。偶数可用2k表示,这里k就是整数。

素数

质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

任意给一个整数,判断该数是奇数还是偶数,是偶数的话直接输出;若是大于1的奇数,判其是否是素数,是素数的话输出素数,否则输出奇数。

举例说明:
测试输入:8。 预期输出:偶数

测试输入:9。 预期输出:奇数

测试输入:7
预期输出:素数

#include <stdio.h>

int main() {
	int a;
	int i = 0;
	printf("");
	scanf("%d", &a);
	if (a % 2 == 0) {
		printf("偶数\n", a);
	}
	if (a % 2 != 0) {
		for ( i = 2; i < a; i++) {
			if (a % i == 0)
				break;
		}
		if (i < a) {
			printf("奇数\n");
		} else {
			printf("素数\n");
		}
	}

	return 0;
}

4

任务描述

本关请完成计算指定公式输出结果的小程序。

相关知识

sqrt

功能:计算一个非负实数的平方根。

比如:计算16的平方根,sqrt(16) 就可以了。

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入ab的值,根据公式计算出最终的X的值。其中 a≠b

详情:

测试举例:

测试输入:20.6 10.2。 预期输出:X=2.14

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

int main () {
	double a, b, X;
	scanf("%lf%lf", &a, &b);
	printf("X=%.2lf", (b + sqrt(b * b + 2 * a)) / (a - b));
	return 0;
}

5

任务描述

本关需要完成一个输出某个三位数各个位上的数字的小程序。

相关知识

算数运算符

%是取模运算符,获得整除后的余数。

/是通过分子除以分母,获得整除后的整数部分。

floor

floor()是返回一个浮点型的整数部分,即向下取整。

语法:

floor(double x)

说明:x是需要传入的浮点型数。

举例如下:

 
 
  1. float val = 1.2
  2. floor(val) = 1

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

输入一个三位数的整数,分别输出其个位、十位、百位上的数字。

注意:

  • 输出的各数字间有一个空格。

举例说明:

测试输入:345。 预期输出:5 4 3

提示:方法不唯一,可以尽量尝试多种方式实现。

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

int main() {
	int a, x1, x2, x3;
	printf("");
	scanf("%d", &a);
	x1 = a / 100;
	x2 = (a % 100) / 10;
	x3 = a % 100 % 10;
	printf("%d %d %d", x3, x2, x1);
	return 0;
}

6

任务描述

本关需要统计出1000099999的整数之中,不包含数值4的整数个数的小程序。

相关知识

我不想再啰嗦各种知识点了,而我相信大家经过反复的练习,已经将该记住的都记住了,那么我们直接看代码回顾吧!

代码片段1

  1. // 当分数score小于60时,输出"考试不合格!"
  2. int score = 58;
  3. if (score < 60){
  4. System.out.println("考试不合格!");
  5. }

代码片段2

输出结果:

  1. 不及格
  2. 这个月零花钱没啦!
  3. 这个月零花钱没啦

代码片段3

  1. // 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
  2. int score = 80;
  3. if (score >= 60)
  4. System.out.println("考试合格!");
  5. else {
  6. System.out.println("考试不合格!");
  7. }

代码片段4

  1. #include <stdio.h>
  2. int main ()
  3. {
  4. /* 局部变量定义 */
  5. int a = 10;
  6. /* while 循环执行 */
  7. while( a < 20 )
  8. {
  9. printf("a 的值: %d
  10. ", a);
  11. a++;
  12. }
  13. return 0;
  14. }

输出结果::

  1. a 的值: 10
  2. a 的值: 11
  3. a 的值: 12
  4. a 的值: 13
  5. a 的值: 14
  6. a 的值: 15
  7. a 的值: 16
  8. a 的值: 17
  9. a 的值: 18
  10. a 的值: 19

代码片段5

  1. for(var a=10; a<20 ;i++){
  2. printf("a 的值: %d
  3. ", a);
  4. }

输出结果:

  1. a 的值: 10
  2. a 的值: 11
  3. a 的值: 12
  4. a 的值: 13
  5. a 的值: 14
  6. a 的值: 15
  7. a 的值: 16
  8. a 的值: 17
  9. a 的值: 18
  10. a 的值: 19

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

统计1000099999中,不包含4的数值的个数。

测试说明:

预期输入:
预期输出:10000~99999中不包含4的个数为:52488

#include <stdio.h>

int main() {
	int a;
	int N = 0;
	int i, j;
	for (i = 10000; i <= 99999; i++) {
		a = i;
		j = 0;
		while (a) {
			j = a % 10;
			if (j == 4)
				break;
			a /= 10;
		}
		if (j != 4)
			N++;
	}
	printf("10000~99999中不包含4的个数为:%d", N);
	return 0;
}

7

任务描述

本关需要完成求解指定一元二次方程式的根的小程序。效果如下:

测试集输入:-2.5 3.8 1.2。 测试集输出:x1=-0.27 x2=1.79

相关知识

if-else语句

if...elseif语句的操作多了一步,当条件成立时,则执行 if 部分的代码块; 条件不成立时,则进入 else 部分。

例如,如果今天不下雨,就出门逛街,否则就宅在家玩游戏。

用法如下:

 
 
  1. if (<条件>) {
  2. <条件成立执行的代码>
  3. }else {
  4. <条件不成立执行的代码>
  5. }

执行过程如下:

例如:

 
 
  1. // 当分数score大于等于60时输出"考试合格!",否则输出"考试不合格!"
  2. int score = 80;
  3. if (score >= 60)
  4. System.out.println("考试合格!");
  5. else {
  6. System.out.println("考试不合格!");
  7. }

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

求ax2+bx+c=0方程的根。

由键盘输入任意值abc,需要在程序中进行判断:

如果a=0,输出错误提示系数a不能为零; 如果b2−4ac<0,输出方程无实根的信息;
如果b2−4ac>=0,计算并输出方程的两个实根。

测试说明:

测试输入:2 3 4。 预期输出:方程无实根

#include <stdio.h>
#include <math.h>
int main()

{
	double a, b, c, d, x1, x2;

	printf ("");

	scanf ("%lf %lf %lf", &a, &b, &c);

	d = b * b - 4 * a * c;

	if (a == 0 )

	{
		printf ("系数a不能为零\n");

		return 1;

	}
	if (d < 0 )

	{
		printf ("方程无实根\n");

		return 1;

	}

	x1 = (-b + sqrt(d)) / (2 * a);

	x2 = (-b - sqrt(d)) / (2 * a);


	printf ("x1=%.2f x2=%.2f\n", x1, x2);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值