1.计算五边形的面积:将一个五边形分割成3个三角形,输入这些三角形的7条边长,计算该五边形的面积。要求定义和调用函数area(x,y,z)计算边长为x,y,z的三角形面积。
#include<stdio.h>
#include<math.h>
double area(double x, double y, double z) {
double p = (x + y + z) / 2;
return sqrt(p * (p - x) * (p - y) * (p - z));
}
int main() {
double a1, b1, c1,a2,b2,c2,a3,b3,c3,s;
printf("enter a1, b1, c1,a2,b2,c2,a3,b3,c3\n");
scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf", &a1, &b1,&c1,&a2,&b2,&c2,&a3,&b3,&c3);
s = area(a1, b1, c1) + area(a2, b2, c2) + area(a3, b3, c3);
printf("square is:%lf", s);
return 0;
}
2.使用函数求最大公约数:定义函数gcd(int m, int n),计算这两个数的最大公约数(辗转相除法)
#include<stdio.h>
int gcd(int m, int n) {
int r, temp;
if (m < n) {
temp = m, n = m, n = temp;
}
else {
r = m % n;
while (r != 0) {
m = n;
r = n;
r = m % n;
}
}
return n;
}
int main() {
int a, b;
printf("enter a,b:");
scanf("%d%d", &a, &b);
printf("%d", gcd(a, b));
return 0;
}
3.使用函数判断素数:定义函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0
#include<stdio.h>
int prime(int m) {
int i,limit;
if (m <= 1) {
return 0;
}
else if (m == 2) {
return 1;
}
else {
limit = m / 2;
for (int i = 2; i <= limit; i++) {
if (m % i == 0) {
return 0;
}
}
return 1;
}
}
int main() {
int k;
printf("enter a number:");
scanf("%d", &k);
printf("%d", prime(k));
}
4.使用函数判断完全平方数:定义一个完全平方数的函数IsSquare(n),当n为完全平方数时返回1,否则返回0.
当n为完全平方数时,可以采用下列等差数列求和计算:1+3+5+7+……+(2*m-1)=m^2=n
#include<stdio.h>
int IsSquare(int m) {
for (int i = 1; m > 0; i=i+2) {
m = m - i;
}
if (m == 0) {
return 1;
}
else {
return 0;
}
}
int main() {
int n;
printf("enter a number:");
scanf("%d", &n);
printf("%d", IsSquare(n));
return 0;
}
注意:1.函数首部后面不能加分号,它和函数一起构成完整的函数定义;
2.函数调用通常出现在两种情况:
a.赋值语句:volume=cylinder(radius,height);
b.输出函数的实参:printf("%f",cylinder(radius,height));
3.函数的形参必须是变量,用于接受实参传递过来的值;实参可以是常量、变量或表达式,其作用是把常量、变量或表达式的值传递给形参;
4.return语句只能返回一个值,如果函数产生了多个运算结果,就不能用return返回;
5.如果自定义函数放在主调函数后面,就需要在函数调用之前,加上函数声明(即函数首部加上分号)。