主题:帮我看看怎么无法运行啊
#include <stdio.h>
void fac()
{
double f, s;
int n, t;
printf("请输入1个数:");
scanf("%d", &n);
t = n;
if(n < 0) {
printf("输入有误");
return;
}
f = 1;
s = 0;
while(t > 0)
f *= t, s += t--;
printf("%d的阶乘积是:%.f\n", n, f);
printf("%d的累加和是:%.f\n", n, s);
}
void pown()
{
double x;
int n, m, f, i;
printf("请输入底数和幂:");
scanf("%d%d", &n, &m);
if(n < 0) {
printf("输入有误");
return;
}
x = n;
f = 0;
if(m < 0) m = -m, f = 1;
for(i = 1; i < m; ++i)
x *= n;
if(f) x = 1/x;
printf("%d的%d次幂是:%f\n", n, f ? -m : m, x);
}
void gcdlcm()
{
int a, b, a1, b1, t;
printf("请输入2个数:");
scanf("%d%d", &a, &b);
a1 = a;
b1 = b;
while(b1 % a1 != 0) {
t = a1;
a1 = b1 % a1;
b1 = t;
}
printf("%d与%d的最大公约数是:%d\n", a, b, a1);
printf("%d与%d的最小公倍数是:%d\n", a, b, a*b/a1);
}
void prime()
{
int n, i;
printf("请输入1个数:");
scanf("%d", &n);
if(n == 0 || n == 1) i = 1; else
for(i=n/2; n%i; --i);
printf("%d%s素数\n", n, i == 1 ? "是" : "不是");
}
void fib()
{
int n, a, b, c;
printf("请输入项数:");
scanf("%d", &n);
a = 1;
b = 0;
printf("Fibonacci数列前%d项为:\n", n);
while(n-- > 0) {
printf("%d ", c=a+b);
a = b;
b = c;
}
putchar('\n');
}
int main()
{
void (*f[])() = {fac, pown, gcdlcm, prime, fib};
int s;
while(s) {
printf("(1)阶乘和累加积\t(2)正整数N次方\n");
printf("(3)gcdlcm\t(4)判断素数\n");
printf("(5)Fibonacci\t\n");
printf("请选择:");
scanf("%d", &s);
if(s < 0 || s > 5)
printf("输入有误!\n");
else if(s != 0)
f[s-1]();
}
return 0;
}
32.数学计算工具程序设计(3人,C类)
功能要求:各计算功能单独编写成函数,在主函数中通过选项菜单调用函数。
(1)选项菜单集成各个计算功能函数
(2)求任意数的阶乘
(3)求组合数
(4)求任意两个整数的最大公约数和最小公倍数
(5)判断任意数是否是素数
(6)显示菲波拉契数列的前N项
void fac()
{
double f, s;
int n, t;
printf("请输入1个数:");
scanf("%d", &n);
t = n;
if(n < 0) {
printf("输入有误");
return;
}
f = 1;
s = 0;
while(t > 0)
f *= t, s += t--;
printf("%d的阶乘积是:%.f\n", n, f);
printf("%d的累加和是:%.f\n", n, s);
}
void pown()
{
double x;
int n, m, f, i;
printf("请输入底数和幂:");
scanf("%d%d", &n, &m);
if(n < 0) {
printf("输入有误");
return;
}
x = n;
f = 0;
if(m < 0) m = -m, f = 1;
for(i = 1; i < m; ++i)
x *= n;
if(f) x = 1/x;
printf("%d的%d次幂是:%f\n", n, f ? -m : m, x);
}
void gcdlcm()
{
int a, b, a1, b1, t;
printf("请输入2个数:");
scanf("%d%d", &a, &b);
a1 = a;
b1 = b;
while(b1 % a1 != 0) {
t = a1;
a1 = b1 % a1;
b1 = t;
}
printf("%d与%d的最大公约数是:%d\n", a, b, a1);
printf("%d与%d的最小公倍数是:%d\n", a, b, a*b/a1);
}
void prime()
{
int n, i;
printf("请输入1个数:");
scanf("%d", &n);
if(n == 0 || n == 1) i = 1; else
for(i=n/2; n%i; --i);
printf("%d%s素数\n", n, i == 1 ? "是" : "不是");
}
void fib()
{
int n, a, b, c;
printf("请输入项数:");
scanf("%d", &n);
a = 1;
b = 0;
printf("Fibonacci数列前%d项为:\n", n);
while(n-- > 0) {
printf("%d ", c=a+b);
a = b;
b = c;
}
putchar('\n');
}
int main()
{
void (*f[])() = {fac, pown, gcdlcm, prime, fib};
int s;
while(s) {
printf("(1)阶乘和累加积\t(2)正整数N次方\n");
printf("(3)gcdlcm\t(4)判断素数\n");
printf("(5)Fibonacci\t\n");
printf("请选择:");
scanf("%d", &s);
if(s < 0 || s > 5)
printf("输入有误!\n");
else if(s != 0)
f[s-1]();
}
return 0;
}
32.数学计算工具程序设计(3人,C类)
功能要求:各计算功能单独编写成函数,在主函数中通过选项菜单调用函数。
(1)选项菜单集成各个计算功能函数
(2)求任意数的阶乘
(3)求组合数
(4)求任意两个整数的最大公约数和最小公倍数
(5)判断任意数是否是素数
(6)显示菲波拉契数列的前N项