回 帖 发 新 帖 刷新版面

主题:各位大虾来看看啊

#include"stdio.h"
int k=49;
main()
{
    int i,j,a[k];
    for(i=0;i<49;i++)
    {
        a[i]=2*i+3;
    }
    for(i=0;i<k;i++)
    {
        for(j=k-1;j>=i+1;j--)
        if(a[j]%a[i]==0)
        {
            a[j]=a[j+1];//删除这个数
        }
    }
    k--;
    for(i=0;i<k;i++)
    {
        printf("%4d",a[i]);
        if(i%4==0)
        printf("\n\n");
    }


}
   各位大虾们和虾米们,为什么这个代码运行的时候会出现地址代码呢?求解释求真相!

回复列表 (共7个回复)

沙发

int k = 49;不能这样定义吧!
#define K 49好像要好点!

板凳


不能宏定义,我有K--在里面,K是个会变得啊!

3 楼


不能宏定义,我的K会变,K--在里面的。

4 楼

你在哪个编译器下面,应该都会报语法错误,数组大小不能用变量,编译的时候会给数组分配空间,但不会赋值,所以在编译a[k],k只是个地址,不会是49.可以先定义宏#define K 49,在int k=K;

5 楼


 把int k=49;移到main函数开头就行了

6 楼

c语言不支持动态数组分配,这样编译不过去的!
lz可以先定义一个a[49],再用k控制数组下标进行操作。

7 楼


运行能成功啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册