当前位置: 代码迷 >> C语言 >> [求助]几道简单的C语言作业题
  详细解决方案

[求助]几道简单的C语言作业题

热度:426   发布时间:2007-06-09 08:51:04.0
[求助]几道简单的C语言作业题
1
#include"math.h"
main()
{int a=0,k;
float av;
for(k=2;k<=1000;k++)
if((fun)k)
a+=k;
av=a/1000;
printf("av=%f\n",av);
}
fun(int n)
{int i,y=0;
for(i=2;i<n;i++)
if(n%i==0) y=1;
else y=0;
return y;
}
fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数的平均值.把以上函数改为正确的.


2 编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值.所谓水仙花数是指三位整数的各位上的数字的立方和等于该数本身.如153=1^3+5^3+3^3.
3 编写一个函数,对输入的整数K输出它的全部素数因子.例如当K=126时,素数因子为:2,3,3,7.
4编写一个递归函数,实现将任意的十进制正整数转化为八进制数.

先谢谢各位了 ..^_^
搜索更多相关的解决方案: C语言  水仙花  素数  作业  函数  

----------------解决方案--------------------------------------------------------

#include <stdio.h>
main()
{
int fun(int);
int y;
scanf("%d",&y);
fun(y);
}

fun(int m){

static int a[5],i=4;
a[i--]=m%8;
if(m<8){ while(i<5) printf("%d",a[i++]); exit(0);}
fun(m>=8?(m/=8):m);
}
第4个,没优化,自己想想再.......


----------------解决方案--------------------------------------------------------
#include"math.h"
main()
{
int k;
float av,a=0;int fun(int n);
for(k=2;k<=1000;k++)
if(fun(k)==0)
a+=k;
av=a/1000;
printf("av=%f\n",av);
}
int fun(int n)
{
int i,y=0;
for(i=2;i<=n/2;i++)
if(n%i==0) y=1;
else y=0;
return y;
}

----------------解决方案--------------------------------------------------------
还有第二题和第三题啊???
----------------解决方案--------------------------------------------------------
都是和循环有关的啊,不怎么难的吧,你自己可以试试。
2. for(i=100;i<1000;i++)
{
a=i/10; /*分离出个位的数字*/
b=i%100/10; /*分离出个位的数字*/
c=i/100; /*分离出个位的数字*/
if(i==a*a*a+b*b*b+c*c*c) /*找出水仙花数*/
printf(" "); /打印水仙花数*/
}
3. for(i=2;i<=num;i++)
{
if((num%i)!=0) continue;
printf("%d",i); /*打印因子*/
}

----------------解决方案--------------------------------------------------------
最好是把整个程序告诉我,初学啊,还不太会。。
----------------解决方案--------------------------------------------------------
5楼正解..

----------------解决方案--------------------------------------------------------
以下是引用nicknickwang在2007-6-11 10:01:00的发言:
最好是把整个程序告诉我,初学啊,还不太会。。

初学的最好自己先写的试试,如果实在写不出来再去看答案,这样好一点。我也是学C不久的哦,有兴趣的话一起探讨的QQ:51295221


----------------解决方案--------------------------------------------------------
我刚开始学C 希望有高手老师们教我们!我建了一个群ㄗs高手灬嘱胚 群号11600184 本群主要给大家提供一个计算机编程学习交流的平台,希望高手倾囊相授

----------------解决方案--------------------------------------------------------
以下是引用nicknickwang在2007-6-9 8:51:04的发言:
1
#include"math.h"
main()
{int a=0,k;
float av;
for(k=2;k<=1000;k++)
if((fun)k)
a+=k;
av=a/1000;有问题吧,a/1000是float型吗?
printf("av=%f\n",av);
}
fun(int n)
{int i,y=0;
for(i=2;i<n;i++)
if(n%i==0) y=1;
else y=0;
return y;
}
fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数的平均值.把以上函数改为正确的.


2 编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值.所谓水仙花数是指三位整数的各位上的数字的立方和等于该数本身.如153=1^3+5^3+3^3.
3 编写一个函数,对输入的整数K输出它的全部素数因子.例如当K=126时,素数因子为:2,3,3,7.
4编写一个递归函数,实现将任意的十进制正整数转化为八进制数.

先谢谢各位了 ..^_^


----------------解决方案--------------------------------------------------------

  相关解决方案