C语言的一道题,望解决
答案:2 悬赏:80 手机版
解决时间 2021-03-14 10:56
- 提问者网友:我一贱你就笑
- 2021-03-14 00:53
设N为五位数。求2~N之间最大的5个质数,将其存放在数组中,并求出这5个素数之和及其平均数,同时按升序输出这5个质数。要求质数的判断用函数实现,以便在主函数中调用。 N是51004
最佳答案
- 五星知识达人网友:逐風
- 2021-03-14 01:56
#include "stdio.h"
int prime(int n){
int i;
if(!(n&1))
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int a[5],N,i,k;
for(N=51003,k=0,i=4;i>=0;N-=2)
if(prime(N))
k+=(a[i--]=N);
for(i=0;i<5;printf("%6d",a[i++]));
printf("\nThe SUM is %d\n",k);
printf("The AVE is %g\n",k/5.0);
return 0;
}
int prime(int n){
int i;
if(!(n&1))
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int a[5],N,i,k;
for(N=51003,k=0,i=4;i>=0;N-=2)
if(prime(N))
k+=(a[i--]=N);
for(i=0;i<5;printf("%6d",a[i++]));
printf("\nThe SUM is %d\n",k);
printf("The AVE is %g\n",k/5.0);
return 0;
}
全部回答
- 1楼网友:你哪知我潦倒为你
- 2021-03-14 02:50
把这里改一下
……
printf(">> enter choice : ");
scanf("%d", &s);
加上:getchar();
后面还是一样的,不变
之所以加上getchar(),是因为在scanf("%d", &s);之后,s只接受你输入的整数(比如1),但是你的回车换行没有接收,这个回车换行还留在缓存中,如果你没有用getchar();接受这个回车换行,那么这个回车换行将被你后面的语句scanf("%c", &s);接收,意思就是:在此语句中,你没有输入要选择的字符就按了enter键了,所以导致你之前的那个问题。而我现在加上那么一句话,就把之前的那个回车换行给接收了,你后面就可以正常进行选择了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯