一道初学者C语言 题目

2024-11-29 09:07:26
推荐回答(5个)
回答1:

#include
#define NUM 100
int perfectNumber(int x){
int i,sum=0;
for(i=1;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
int wanshu(int x){
int i,sum=0;
for(i=1;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);
}
这下应该懂了吧

回答2:

这是个算法的问题,代码部分很简单~~~~还是找找它的算法吧,学习嘛~~~~~~~

回答3:

百度搜索!

回答4:

第一个for不是分数最大的,而是哪个分数出现次数最多。先找出了次数最多的,第二个for说出位置。但程序编的比较笨,只用一个for就行了。
#include

#include

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

回答5:

#include
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;iprintf("%d",a[i]);
}
}
}