下面的程序演示了在一个程序中自定义多个函数及其使用的基本方法,请根据函数要求完善程序。 #inlcude <stdio.h> int add(int a, int b);//求a+b long fact(int n);//求n! //n为形式参数 int gcd(int, int);//求两个整数的最大公约数 int max(int, int);//求两个整数的最大数 char toUpCase(char);//小写字母变为大写字母 int Combination(int n, int m);//计算n!/(m!*(n-m)!) int main() { int a, b,c; int sum_ab, sum_abc; int ab = 0x10; printf("Please input three integers:"); scanf("%d%d%d", &a, &b,&c); add(a, b); sum_ab = add(a, b); sum_abc = add(a, b) + c;//add(add(a,b),c) printf("The sum is:%d\n", sum_abc); printf("%d!=%ld\n", a,fact(a));//fact(a)中的a为实际参数 printf("C(6,2)=%d\n", Combination(6,2)); printf("UpCase of p=%c\n", toUpCase('p')); return 0; } char toUpCase(char c)//小写字母变为大写字母 { return c - 32; } int Combination(int n, int m)//计算n!/(m!*(n-m)!) { return(fact(n) / (fact(m)*fact(n - m))); } long fact(int n)//求n! //n为形式参数 { long s = 1; for (int i = 1; i <= n; i++) { (1) ; } return s; } int add(int a, int b)//求a+b { int s; s = a + b; return s; } int gcd(int m, int n)//求两个整数的最大公约数 { int c; while (m%n != 0) { c = (2) ; m = n; n = c; } return (3) ; } int max(int a, int b)//求两个整数的最大数 { if (a >= b) return a; return b; }
时间: 2024-01-23 14:02:19 浏览: 103
完善程序如下:
```
#include <stdio.h>
int add(int a, int b);//求a+b
long fact(int n);//求n!
int gcd(int m, int n);//求两个整数的最大公约数
int max(int a, int b);//求两个整数的最大数
char toUpCase(char c);//小写字母变为大写字母
int Combination(int n, int m);//计算n!/(m!*(n-m)!)
int main() {
int a, b, c;
int sum_ab, sum_abc;
int ab = 0x10;
printf("Please input three integers:");
scanf("%d%d%d", &a, &b, &c);
add(a, b);
sum_ab = add(a, b);
sum_abc = add(sum_ab, c);
printf("The sum is:%d\n", sum_abc);
printf("%d!=%ld\n", a, fact(a));//fact(a)中的a为实际参数
printf("C(6,2)=%d\n", Combination(6, 2));
printf("UpCase of p=%c\n", toUpCase('p'));
return 0;
}
char toUpCase(char c)//小写字母变为大写字母
{
if (c >= 'a' && c <= 'z') {
return c - 32;
}
return c;
}
int Combination(int n, int m)//计算n!/(m!*(n-m)!)
{
return(fact(n) / (fact(m)*fact(n - m)));
}
long fact(int n)//求n!
{
long s = 1;
for (int i = 1; i <= n; i++) {
s *= i;
}
return s;
}
int add(int a, int b)//求a+b
{
int s;
s = a + b;
return s;
}
int gcd(int m, int n)//求两个整数的最大公约数
{
int c;
while (m%n != 0) {
c = m % n;
m = n;
n = c;
}
return n;
}
int max(int a, int b)//求两个整数的最大数
{
if (a >= b) return a;
return b;
}
```
其中,需要注意的点有:
1. 在 `toUpCase` 函数中,需要判断输入的字符是否为小写字母,只有小写字母才进行转换,否则直接返回原字符。
2. 在 `fact` 函数中,需要使用循环来计算阶乘。
3. 在 `add` 函数中,可以直接返回 `a+b` 的值,不需要使用中间变量。
4. 在 `gcd` 函数中,需要在循环中更新变量 `c` 的值,并在循环结束后返回 `n` 的值,因为最大公约数即为最后一次循环中 `n` 的值。
阅读全文