程序目的,保存一个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;
}
a[j++]=0
不是==
循环的目的是依次寻找和输出所有的约数
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入 )