第七章:函数实训【寒假作业】

五、编程题

(一)编写程序,调用函数求一个圆柱体的表面积和体积。

#include<stdio.h>
#define PI 3.1415926
float area(float r, float h)
{
	float a;
	a = PI * 2 * r * h;
	return a;
}
float bulk(float r, float h)
{
	float v;
	v = PI * r * r * h;
	return v;
}
int main()
{
	float r, h;
	printf("Please input radius and height:\n");
	scanf("%f,%f", &r, &h);
	printf("Surface area:%.2f,volume:%.2f\n", area(r, h), bulk(r, h));
	return 0;
}

运行结果

702d9e78ccc84ad7919d1e376fb0c28d.png

粗浅理解:此代码是根据函数的值传递进行调用的,根据圆柱体表面积和体积的公式分别定义两个函数值是单精度实型函数进行计算,然后计算完之后输出。

(二)编写函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。

#include<stdio.h>
int prime(int m)
{
	int i;
	for (i = 2; i < m / 2; i++)
		if (m % i == 0)break;
	if (i > m / 2)return 1;
	return 0;
}
int main()
{
	int i;
	for (i = 2; i < 100; i++)
		if (prime(i))printf("%d ", i);
	return 0;
}

运行结果

007396691a5042679980eff6478d3386.png

 (三)编写程序,输出一个整数的全部素数因子。要求判断是否为素数调用第2题中的prime()函数。例如,整数120的素数因子为2、2、2、3、5。

#include<stdio.h>
int prime(int m)
{
	int i;
	for (i = 2; i <= m / 2; i++)
		if (m % i == 0)break;
	if (i > m / 2)return 1;
	return 0;
}
int main()
{
	int i, n, m;
	printf("Please iunput a Number:\n");
	scanf("%d", &n);
	m = n;
	while (m > 0)
	{
		for(i=2;i<=m;i++)
			if (prime(i) && m % i == 0)
			{
				printf("%d*", i);
				m = m / i;
				break;
			}
	}
	printf("\b=%d", n);
	return 0;
}

运行结果

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5aSP5b-XMTIx,size_13,color_FFFFFF,t_70,g_se,x_16

 (4)输入精度e,使用格里高利公式求π的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数pi(e)求π的近似值。

#include<stdio.h>
float pi(float e)
{
	int i = 1;
	float pi = 1, s = 1, a;
	do
	{
		s = -s;
		i = i + 2;
		a = 1.0 / i;
		pi = pi + s * a;
	} while (a >= e);
	return pi * 4;
}
int main()
{
	float e;
	printf("Please iunput a Number:\n");
	scanf("%f", &e);
	printf("%f", pi(e));
	return 0;
}

运行结果

288b64248fad43129a4b25023aa8e9f4.png

 (6)使用递归方法,求解x的n次方。其中n为整数,x不等于0。

#include<stdio.h>
float xn(float x, int n)
{
	if (n == 0)return 1, 0;
	if (n == 1)return x;
	return xn(x, n - 1) * x;
}
main()
{
	int n; float x;
	printf("Please input x:");
	scanf("%f", &x);
	printf("\nPlease input n:");
	scanf("%d", &n);
	printf("%f", xn(x, n));
}

运行结果

5b9656937c3f4bb0b8789cf8c19adaee.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏志121

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值