做完后加分最好解析一下
1 设计é¶ä¹å½æ°ã
æç §æ°å¦å®ä¹ï¼å¯¹äºnçé¶ä¹ï¼å¦æn为0ï¼åè¿å1.
å¦åè¿å1*2*3*...*nçå¼ãç¨å¾ªç¯å®ç°ã
2 å¨ä¸»å½æ°ä¸è¾å ¥è¦æ±é¶ä¹çå¼ã
3 è°ç¨å½æ°è®¡ç®é¶ä¹ã
4 è¾åºç»æã
代ç ï¼
int fac(int n){
int r = 1;
int i;
for(i = 2; i <=n; i ++)
r*=i;
return r;
}
int main()
{
int n,r;
scanf("%d",&n);
r = fac(n);
printf("%d!=%d\n",n,r);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 推荐于2018-03-20
骚年 你这已经不是C语言基本数据类型能解决的了,因为30的阶层太大了,c语言的基本类型里存不下了,要用到其他特殊的方法,下面我给你一个产生不大于10 的三阶乘相加函数。如果有其他问题再讨论。
#include<stdio.h>
int my_Cal(int i)
{
long temp = 1;
for(i;i>0;i--)
temp = temp * i;
return temp;
}
void myCal(int a,int b,int c)
{
printf("ADD = %ld\n",my_Cal(a)+my_Cal(b)+my_Cal(c));
}
int main()
{
int a = rand()%11;
int b = rand()%10;
int c = rand()%10;
myCal(a,b,c);
return 0;
}追问
#include<stdio.h>
int my_Cal(int i)
{
long temp = 1;
for(i;i>0;i--)
temp = temp * i;
return temp;
}
void myCal(int a,int b,int c)
{
printf("ADD = %ld\n",my_Cal(a)+my_Cal(b)+my_Cal(c));
}
int main()
{
int a = rand()%11;
int b = rand()%10;
int c = rand()%10;
myCal(a,b,c);
return 0;
}追问
VC提示有一个错误
追答啥错误?
追问没有提示,只有一个错误
追答哈?我这边VC都可以运行...
追问不管对错先采纳
本回答被提问者和网友采纳