点赞(0)
 

0.0分

311 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 135 条评论

盛世致远 9月前 回复TA
@本山锅锅 当i=24时,第12行代码sum=24时直接输出了number[i],你将第二个if给提出来就可以解决这个问题。有兴趣的话可以加个QQ一起讨论以下怎么学习C语言吗?1707999651我是大学生
本山锅锅 10月前 回复TA
#include <stdio.h>
int main(){
	int N;
	scanf("%d",&N);
	int number[N];
	int i,j,sum=0;
	for(i=0;i<N;i++){
		number[i]=i+4;
		sum=0;
		for(j=1;j<number[i];j++){
			if(number[i]%j==0){
				sum+=j;
				if(number[i]==sum){
					printf("%d\n",number[i]);
				}
			}
		}
	}
	return 0;
}
各位大佬,能不能帮忙看看,当我键入N=1000的时候,会多一个24出来,其他的结果和题目给的例子是符合的,想知道是哪里出了问题
清欢 10月前 回复TA
@清欢 没事了
清欢 10月前 回复TA
#include<stdio.h>
int main()
{
	int N,sum=0,k;
	char arr[1001]="0";
	scanf("%d",N);
	for(int i=1;i<=N;i++)
	{
		sum=0,k=0;
		for(int j=1;j<i;j++)
		{
			if(i%j==0)
			{
				sum+=j;				
				arr[k++]=j;
				
			}
			
		}
		if(sum==i){
			printf("%d its factors are",i);
			for(int l=0;l<k;l++){
				printf(" %c",arr[l]);
			}
             printf("\n");    
		}
			
	}
	return 0;
}

//想知道错在哪,为什么输出不出内容
notshine 11月前 回复TA
#include<stdio.h>
int main()
{
    int N;
    scanf("%d",&N);
    for(int i=2;i<=N;i++){
        int sum=0;
        for(int j=1;j<i;j++){
            if(i%j==0){
                sum+=j;
            }
        }
        if(sum==i){//找到完数立马循环输出因子
            printf("%d its factors are",i);
            for(int j=1;j<i;j++){
                if(i%j==0){
                    printf(" %d",j);
                }
            }
            printf("\n");
    }
  }
    return 0;
}
5eL1n 11月前 回复TA
@君之名 确实,人家空间换时间,你时间换空间
crj 11月前 回复TA
看我这个
#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n); 
	int arr[100] = { 0 };
	for (int i = 6; i <= n; i++)
	{
		int c = 0,d=0;
		for (int j = i; j >= 2; j--)
		{
			if (i % j == 0)
			{
				arr[c++] = i / j;
				d += (i / j);
			}
		}
		if (d == i)
		{
			printf("%d its factors are ", i);
			for (int e = 0; e < c; e++)
			{
				printf("%d ", arr[e]);
			}
			printf("\n");
		}
	}
	return 0;
}
君之名 12月前 回复TA
不用数组也是可以的
#include<stdio.h>
int main()
{
	int n,i,j;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		int x=0;
		for(j=1;j<i;j++)
			if(i%j==0)
			{
				x+=j;
			}
	if(x==i)
	{
		printf("%d its factors are ",i);
		for(j=1;j<x;j++)
		{
			if(x%j==0)
			{
				printf("%d ",j);
			}
		}
		printf("\n");
	}
	}
	return 0;
}
qz 1年前 回复TA
@疾风亦有归途 k用完之后要=0吧
疾风亦有归途 1年前 回复TA
写出来跟测试的结果完全一致,不知道哪里出问题了
#include<stdio.h>
int main()
{
   int n,i,j,k;
   scanf("%d",&n);
   for(i=1;i<=n;i++){
       int sum=0;
       for(j=1;j<i;j++){
           if(i%j==0){
               sum+=j;
           }
       }
       if(sum==i){
           printf("%d its factor are",i);
           for(k=1;k<i;k++){
               if(i%k==0){
                   printf(" %d",k);
               }
           }
           printf("\n");
       }
   }
}