编程目的:保存10以内的整数的所有约数

img

img

程序目的,保存一个10以内的整数的所有约数
第一个问题:里面for循环的目的是什么,如果没有for循环是什么后果
第二个问题:程序可以正常编译,但是运行结果出现负数,不知道什么原因

1、for循环的目的是遍历1到n之间的所有整数,然后以便求出能整除n的约数。

2、现负数的原因是,第10行的a[j++]==0这个表达式没有将约数正常存入数组a相应位置,而导致打印的结果是数组a中没有赋值之前的随机的值,将a[j++]==0改为a[j++]=i 就可以了。

修改如下:

参考链接:

#include <stdio.h>

int main(void){
    
    int a[10],n;
    int i,j=0;
    
    printf("输入整数为:");
    scanf("%d",&n);
    
    // https://baike.baidu.com/item/%E7%BA%A6%E6%95%B0/8417882?fr=aladdin
    for(i=1;i<=n;i++){ // 遍历1到n之间的所有整数 
        if(n%i==0){  // 如果区间内的任意一个数可以整除n,则此数是n的约数,将其存入数组a中 
            a[j++]=i;
        }
    }
    
    printf("约数为:\n");
    // 打印存入数组a中n的所有约数 
    for(i=0;i<j;i++){
        printf("%d ",a[i]);
    }
    
    return 0;
} 

img

a[j++]=0
不是==
循环的目的是依次寻找和输出所有的约数