五、编程题
(一)编写程序,调用函数求一个圆柱体的表面积和体积。
#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; }
运行结果
粗浅理解:此代码是根据函数的值传递进行调用的,根据圆柱体表面积和体积的公式分别定义两个函数值是单精度实型函数进行计算,然后计算完之后输出。
(二)编写函数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; }
运行结果
(三)编写程序,输出一个整数的全部素数因子。要求判断是否为素数调用第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; }
运行结果
(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; }
运行结果
(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)); }
运行结果