用C写三个函数!!!谢谢!!!

axlskull 2003-08-30 10:26:28
1。编写函数fun() ,其功能是:n个学生的平均成绩。
2。编写函数sun(),其功能是:求S的值 s=1+2+3+...+k
3。编写函数dun(),其功能是:求 K!(K<10)
...全文
101 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyi0929 2003-10-07
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<malloc.h>
#define max 1000
void penxt(int a[],int k)
{int *b,m=a[0],i,j,r,carry;
b=(int* )malloc(sizeof(int)*(m+1));
for(i=1;i<=m;i++) b[i]=a[i];
for(j=1;j<k;j++)
{ for(carry=0,i=1;i<=m;i++)
{ r=(i<=a[0]?a[i]+b[i]:a[i])+carry;
a[i]=r%10; carry=r/10;
}
if(carry)a[++m]=carry;
}
free(b);
a[0]=m;
}
void write(int *a,int k)
{int i;
printf("%4d!=",k);
for(i=a[0];i>0;i--)printf("%d",a[i]);
printf("\n");
}
void main()
{int a[max],n,k;
printf("enter the number n:");
scanf("%d",&n);
a[0]=1;a[1]=1;write(a,1);
for(k=2;k<=n;k++)
{penxt(a,k);
write(a,k);
}//getchar();

}
这个可以求很大数的阶乘,不过就是要是数大了就是慢了点
Wolf0403 2003-10-07
  • 打赏
  • 举报
回复
C 写的不好玩嘛不是。。。嘿嘿
litao2003 2003-10-07
  • 打赏
  • 举报
回复
哎~~怎么这么简单的都还问啊~~~
xiaonanln 2003-10-06
  • 打赏
  • 举报
回复
好像很多都不是用C写的
cxjddd 2003-10-06
  • 打赏
  • 举报
回复
template <int K>
struct N
{
static const int ans = N<K-1>::ans * K;
};

template <>
struct N<0>
{
static const int ans = 1;
};

int
dun (int i)
{
static int a[] = { N<0>::ans, N<1>::ans, N<2>::ans, N<3>::ans,
N<4>::ans, N<5>::ans, N<6>::ans, N<7>::ans,
N<8>::ans, N<9>::ans };
return a[i];
}
minghui000 2003-10-03
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
int dun(int i)
{
if(i==1)
{
return 1;
}
return i*dun(i-1);
}
int main()
{
int i;
cout<<"请输入i:\n";
cin>>i;
cout<<i<<"!="<<dun(i)<<endl;
}
robertcarlos 2003-10-01
  • 打赏
  • 举报
回复
没什么好说的了
jet9600 2003-10-01
  • 打赏
  • 举报
回复
zdy_8212(zdy_8212) 试图写变参函数,但显然错了

/* 我也试写个怪点的,它也是变参的 */
/* 参数:n为成绩个数,其后为实际的成绩 */
/* 返回:n个成绩的平均值 */
/* 调用方式: aver=fun(4,1.0,2,0,3.0,4.0)'
aver=fun(2,55.0,60.0);
*/

#include <stdarg.h>
float fun(int n,...)
{
va_list p;
float sum=0,f;
int i;
va_start(p,n);
for (i=0;i<n;i++)
{
f=va_arg(p,float);
sum+=f;
}
va_end(p);
return sum/n;
}
existsluawjb 2003-09-30
  • 打赏
  • 举报
回复
很简单的
wzyu 2003-09-30
  • 打赏
  • 举报
回复
你这人怎么这么难呀,这 个哪一本书上都是有的,去看看书吧
ac1998 2003-09-28
  • 打赏
  • 举报
回复

up.

up.
玄豹 2003-09-26
  • 打赏
  • 举报
回复
帮你顶!
acuter 2003-09-10
  • 打赏
  • 举报
回复
呵呵,过节先!
syuui 2003-09-01
  • 打赏
  • 举报
回复
求K!,说了K〈10了吧。
一个long就搞定了。
Wolf0403 2003-09-01
  • 打赏
  • 举报
回复
啊,三井,偶眼花,没看见那个 return 里面的 dun,呵呵
对递归略微过敏
hhhbbbfjk 2003-09-01
  • 打赏
  • 举报
回复
唉,在这个问题上还有说这么长时间,你们到底是不是学计算机的??
chengxiujing 2003-08-31
  • 打赏
  • 举报
回复
哈哈是用C++寫的!我現在才學C!不過還可以看得懂!
sinusoid 2003-08-31
  • 打赏
  • 举报
回复
3.
long dun(int k)
{
if(k<1)return 0;
if(k==1)
{return 1;}
return k*dun(k-1);
}
上次去面试给我出这题目,我照上面那样写,时间多我另写一个非递归的.
那主考官说他写这函数考虑起来要写500行的代码,兄弟们评评理.我觉得那人神经病.
积木 2003-08-31
  • 打赏
  • 举报
回复
都是初级小算法,就没有考虑
如果考虑这个,就是大数乘法的东西啦
嘿嘿,应该是分治的思想
积木 2003-08-31
  • 打赏
  • 举报
回复
那我就加第三个
#include<iostream>
using namespace std;
int dun(int i)
{
if(i==1)
{
return 1;
}
return i*dun(i-1);
}
int main()
{
int i;
cout<<"请输入i:\n";
cin>>i;
cout<<i<<"!="<<dun(i)<<endl;
}
加载更多回复(11)

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧