永发信息网

C语言高手麻烦你们帮帮我。

答案:2  悬赏:70  手机版
解决时间 2021-07-16 13:47

1.调试下列程序,使之具有如下功能:fun函数是一个判断整数是否为素数的函数,使用该函数求1000以内的素数平均值。写出调试过程.

2.编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。所谓水仙花数是指三位整数的各位上的数字的立方和等于该整数本身。

最佳答案

第一题:


#include <stdio.h>
#include <math.h>


int fun(int n){ //判断素数.
int i,j;
j=sqrt(n);
for(i=2;i<=j;i++)
if(n%i==0) break;
if(i>j) return 1;
return 0;
}


void main()
{
int i,cnt=0;
float ave=0; //因为要计算平均值,存在小数情况.所以用float.
for(i=2;i<=1000;i++) //1不是素数. 所以循环从2开始
if(fun(i))
{
ave+=i; //累加素数和.
cnt++; //计数器加1.
}
ave/=cnt; //将累加的素数和除以素数的个数.就是平均值.
printf("ave=%.2f\n",ave);
}



第二题:


#include <stdio.h>
#include <math.h>


void main()
{
int bit1,bit2,bit3,max_i=0,max_j=0;
for(int i=100;i<1000;++i)
{
bit1=i/100;
bit2=i%100/10;
bit3=i%10;
if(i == bit1*bit1*bit1 + bit2*bit2*bit2 + bit3*bit3*bit3 )
{
if(i>max_i) { //如果i比当前最大值大.就把i给max_i. 把max_i原来的数给max_j. 所以max_j就是次大值.
max_j=max_i;
max_i=i;
}
}
}
printf("%d\n",max_j); //最后输出次大值.
}

全部回答

第一道题

#include <math.h> int main() { int fun(); int m; float c; c=fun(); printf("%f",c); system("PAUSE"); return 0; } int fun() { int i,m,n; long sum=0; for(m=1;m<=1000;m++) { n=sqrt(m); for(i=2;i<=n;i++) if(m%i==0) break; if(i>n) sum+=m; } return (sum/10.0); }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
普通面霜适合晚上擦还是早上
泰拉武器能重复做吗
哪里可以下载免费的非主流主题?
已知坡度怎么求斜边、
火车不是推得.
黄金国度,如何选择最佳英雄?
新版问问中什么是未通过问题?
美国旧金山的金门大桥有什么特色
深圳真益电子厂怎么样?
在组建某个校园网络时 申请的网络号是 211.69
怎么样能带篮球过人?
有哪些电视剧里有两个一模一样的人,越多越好
月经几岁来比较正常?
N958G USB坏了修用拆壳不
发烧到底是病么?
推荐资讯
太原哪里有卖动漫周边的?
怎么锻炼自己的表达能力和逻辑思维能力?
大家说一下1000--1500价位的诺基亚智能机哪款
在世界哪里北极熊最多?
怎样让上级认为你是一个有能力的人?
我想更换qq头像。可以从空间上传吗
天下贰这个元魂珠值多钱?
DNF60级SP一共多少?
生存和面子哪个重要
空间农场的牧场如何邀请
推荐几首好听关于励志的歌曲,最好是日本的。
牛头沟地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?