永发信息网

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

答案:2  悬赏:70  手机版
解决时间 2021-07-16 13:47
  • 提问者网友:王者佥
  • 2021-07-16 08:38

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

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

最佳答案
  • 五星知识达人网友:执傲
  • 2021-07-16 10:16

第一题:


#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); //最后输出次大值.
}

全部回答
  • 1楼网友:怀裏藏嬌
  • 2021-07-16 11:08

第一道题

#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); }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯