一道初学者C语言 题目
一个数如果恰好等于它的所有因子之和,这个数就称为“完数”。请编写一个判别m是否为完数的函数,并编写主函数,通过调用此函数统计自然数1~100完数的个数。谁能弄个初学者能看...
一个数如果恰好等于它的所有因子之和,这个数就称为“完数”。请编写一个判别m是否为完数的函数,并编写主函数,通过调用此函数统计自然数1~100完数的个数。
谁能弄个初学者能看得懂的..3楼的我看不懂 哦.....再简单一点我应该懂了 展开
谁能弄个初学者能看得懂的..3楼的我看不懂 哦.....再简单一点我应该懂了 展开
展开全部
#include<stdio.h>
#define NUM 100
int perfectNumber(int x){
int i,sum=0;
for(i=1;i<x;i++){
if(x%i==0) sum+=i;
}
if(x==sum) return x;
else return 0;
}
void main(){
int n,num;
printf("Perfect Numbers no more than %d:",NUM);
for(n=1;n<=NUM;n++)
if(perfectNumber(n)!=0) printf("%4d",n);
printf("\nInput an Integer:");
scanf("%d",&num);
if(perfectNumber(num)!=0) printf("%d is a Perfect Number!\n",num);
else printf("%d is not a Perfect Number!\n",num);
}
简单版:
#include<stdio.h>
int wanshu(int x){
int i,sum=0;
for(i=1;i<x;i++){
if(x%i==0) sum=sum+i;
}
if(x==sum) return 1;
else return 0;
}
void main(){
int n,num;
printf("不超过100的完数有:");
for(n=1;n<=100;n++)
if(wanshu(n)==1) printf(" %d",n);
}
这下应该懂了吧
#define NUM 100
int perfectNumber(int x){
int i,sum=0;
for(i=1;i<x;i++){
if(x%i==0) sum+=i;
}
if(x==sum) return x;
else return 0;
}
void main(){
int n,num;
printf("Perfect Numbers no more than %d:",NUM);
for(n=1;n<=NUM;n++)
if(perfectNumber(n)!=0) printf("%4d",n);
printf("\nInput an Integer:");
scanf("%d",&num);
if(perfectNumber(num)!=0) printf("%d is a Perfect Number!\n",num);
else printf("%d is not a Perfect Number!\n",num);
}
简单版:
#include<stdio.h>
int wanshu(int x){
int i,sum=0;
for(i=1;i<x;i++){
if(x%i==0) sum=sum+i;
}
if(x==sum) return 1;
else return 0;
}
void main(){
int n,num;
printf("不超过100的完数有:");
for(n=1;n<=100;n++)
if(wanshu(n)==1) printf(" %d",n);
}
这下应该懂了吧
展开全部
这是个算法的问题,代码部分很简单~~~~还是找找它的算法吧,学习嘛~~~~~~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
百度搜索!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个for不是分数最大的,而是哪个分数出现次数最多。先找出了次数最多的,第二个for说出位置。但程序编的比较笨,只用一个for就行了。
#include
<stdio.h>
#include
<string.h>
int
main()
{
int
i,j=0,a[101],n,max;
memset(a,sizeof(a),0);
while(scanf("%d",&n)==1)
{
a[n]++;
}
max=a[0];
for(i=1;i<101;i++)
{
if(a[i]>=max)
{
max=a[i];
j=i;
}
}
printf("%d
",i);
printf("\n");
return
0;
}
#include
<stdio.h>
#include
<string.h>
int
main()
{
int
i,j=0,a[101],n,max;
memset(a,sizeof(a),0);
while(scanf("%d",&n)==1)
{
a[n]++;
}
max=a[0];
for(i=1;i<101;i++)
{
if(a[i]>=max)
{
max=a[i];
j=i;
}
}
printf("%d
",i);
printf("\n");
return
0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void
main()
{
long
n,x,m=0,i;
int
a[5];
scanf("%ld",&n);
if(n==0)
printf("%ld\n",n);
if(n>0&&n<100000)
{
while(n!=0){
x=n%10;
a[m]=x;
m++;
n=n/10;
}
printf("它是%ld位数\n",m);
for(i=0;i<m;i++){
printf("%d",a[i]);
}
}
}
void
main()
{
long
n,x,m=0,i;
int
a[5];
scanf("%ld",&n);
if(n==0)
printf("%ld\n",n);
if(n>0&&n<100000)
{
while(n!=0){
x=n%10;
a[m]=x;
m++;
n=n/10;
}
printf("它是%ld位数\n",m);
for(i=0;i<m;i++){
printf("%d",a[i]);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询