输出不被3整除的数

来源:百度知道 编辑:UC知道 时间:2024/05/17 06:39:17
我的程序错在哪了啊?
#include <stdio.h>
main()
{int a[16],
i;
for(i=0;i<=16;i++)
{scanf("%d",&a[i]);
a[i]=i;
if(a[i]%3==0) break;
else printf("%d",a[i]); }
getch();
}

#include <stdio.h>
main()
{int a[16],
i;
for(i=0;i<=16;i++) //这里有误,你定义的数组是16个元素,最后一个元素应该是a[15],引用a[16]造成地址越界
{scanf("%d",&a[i]);
a[i]=i;
if(a[i]%3==0) break; //这里也有误,这么写成了 被3整除就退出循环了,屏幕上没有输出
else printf("%d",a[i]); }
getch(); //这里是什么,是你调用的什么函数吗??
}

改成以下:
#include <stdio.h>
main()
{int a[16],
i;
for(i=0;i<=15;i++) //做数组元素的赋值
{scanf("%d",&a[i]);
a[i]=i;
if(a[i]%3!=0) printf("%d",a[i]);
getch();//还是检测一下,这个是不是你要调用的函数,不是就删除掉
}
只是把判断部分写成不被3整除就输出,反之被3整除就不输出的

#include <stdio.h>
main()
{int a[16],
i; //最好连上写吧,有些版本会出问题的
for(i=0;i<=16;i++) //楼上说的,不能为16
{scanf("%d",&a[i]);
a[i]=i; // 这是什么意思啊,你这样一来,
//上面的赋值还有什么意思?
if(a[i]%3==0) break; // 这样没输出~
else printf("%d",a[i]); }
getch();