1. 编程实现,设计一个函数jc(int n),计算n! ,要求在主函数输入n,若n为1-10之间,
其运行效果如图1,若不在1-10之间,运行效果如图2。
//法一
#include<stdio.h>
int jc(int n)
{
int i,s=1;//注意给s赋值
for (i = 1; i <=n; i++)//注意是否要等号
{
s *= i;
}
printf("n的阶乘为:%d\n", s);
}
int main()
{
int i;
printf("请输入n的值\n");
scanf("%d", &i);
if (i < 10 && i>1)
jc(i);//记住这个书写方式
else
printf("n不在1-10之内!\n", i);
}
//法二
#include<stdio.h>
void jc(int n)
{
int s, i;
s = 1;
i = 1;
if (n >= 1 && n <= 10)
{
for (i; i <= n; i++)
s *= i;
printf("n阶乘为%d\n", s);
}
else
{
printf("n不在1-10之间!\n");
}
}
main()
{
int n;
printf("请输入n的值:\n");
scanf("%d", &n);
jc(n);
}
2.请在C程序,定义一个函数实现两数(整数)相乘,定义另外一个函数实现求三个数(整数)的最大值,并在main()中进行调用相应的函数,要求任意输入两数,再调用相应的函数得出相乘的结果,任意输入三个数,再调用相应的函数求出最大值。
#include <stdio.h>
int multi(int x, int y)
{
return x * y;
}
int max(int x, int y, int z)
{
int max;
max = x > y ? x : y;
max = max > z ? max : z;
return max;
}
void main()
{
int x, y, z;
printf("请输入两个相乘的数:\n");
scanf("%d,%d", &x, &y);
printf("两数相乘的结果为:%d\n", multi(x, y));
printf("请输入三个比个数:\n");
scanf("%d,%d,%d", &x, &y, &z);
printf("三个数的最大值为:%d\n", max(x, y, z));
}
输出结果:
3.请实现循环输出1!,1!+2!,1!+2!+3!,1!+2!+…+n!的的和。
要求:自定一个函数factor(),用于计算当形参为n时,求n!的值,在主函数中调用该函数
#include <stdio.h>
int factor(int n)
{
int i, jc = 1;
for (i = 1; i <= n; i++)
{
jc *= i;
}
return jc;
}
main()
{
int x, i, sum = 0;
printf("请任意输入一个数\n");
scanf("%d", &x);
for (i = 1; i <= x; i++)
{
sum += factor(i);
printf("1!到%d的阶乘和为%d \n", i, sum);
}
}
输出结果: