c语言中结构体中的一维数组的初始化(用的是codeblocks)它说我的c[]那一行有问题 20
#include<stdio.h>#include<stdlib.h>intmain(){intcount,i,k,j;j=0;structa{intlength;int...
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20]={1,2,3,4,5,6,7,8,9};
}b;
b.length=20;
printf("请输入i,k\n");
scanf("%d%d",&i,&k);
for(count=1;count<=20;count++)
{
b.c[i-1+count]=b.c[i-1+k+count];
}
b.length-=k;
printf("%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.elem[j]);
}
} 展开
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20]={1,2,3,4,5,6,7,8,9};
}b;
b.length=20;
printf("请输入i,k\n");
scanf("%d%d",&i,&k);
for(count=1;count<=20;count++)
{
b.c[i-1+count]=b.c[i-1+k+count];
}
b.length-=k;
printf("%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.elem[j]);
}
} 展开
2012-01-29
展开全部
结构体内定义数据成员时,是不能对于数组进行赋值的。
这样就行了:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20];//={1,2,3,4,5,6,7,8,9};
}b;
b.length=20;
for(j=0;j<20;j++)
b.c[j]=j+1;
printf("请输入i,k\n");
scanf("%d%d",&i,&k);
for(count=1;count<=20;count++)
{
b.c[i-1+count]=b.c[i-1+k+count];
}
b.length-=k;
printf("%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.c[j]);
}
}
这样就行了:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20];//={1,2,3,4,5,6,7,8,9};
}b;
b.length=20;
for(j=0;j<20;j++)
b.c[j]=j+1;
printf("请输入i,k\n");
scanf("%d%d",&i,&k);
for(count=1;count<=20;count++)
{
b.c[i-1+count]=b.c[i-1+k+count];
}
b.length-=k;
printf("%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.c[j]);
}
}
展开全部
楼主的代码有诸多需改:
1.结构体里不能赋值,所以c必须是 c[20];
2.楼主需要考虑数组越界的情况,count+i-1+k <20 因为数组定义是从0开始 最大序号是19<20所以在使用循环时需考虑越界,因为这里越界恰好会出问题,不赘述。
3.输出b.c当中的元素时,楼主写成 b.elem 这个数组可没有定义过。猜测是 b.c吧。
综合修改之后代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20];
} b;
b.length=20;
for(int t=1;t<10;t++) // b.c[20]={1,2,3,4,5,6,7,8,9}
b.c[t-1]=t;
printf("请输入i,k\n");
scanf("%d %d",&i,&k);
printf("%d\n",k);
for(count=0;count<20-i+1-k;count++)
{
b.c[i+count]=b.c[i+k+count];
}
b.length-=k;
printf("b.length=%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.c[j]);
}
return 0;
}
不会报错,也能大致完成楼主的需求。
1.结构体里不能赋值,所以c必须是 c[20];
2.楼主需要考虑数组越界的情况,count+i-1+k <20 因为数组定义是从0开始 最大序号是19<20所以在使用循环时需考虑越界,因为这里越界恰好会出问题,不赘述。
3.输出b.c当中的元素时,楼主写成 b.elem 这个数组可没有定义过。猜测是 b.c吧。
综合修改之后代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count,i,k,j;
j=0;
struct a{
int length;
int c[20];
} b;
b.length=20;
for(int t=1;t<10;t++) // b.c[20]={1,2,3,4,5,6,7,8,9}
b.c[t-1]=t;
printf("请输入i,k\n");
scanf("%d %d",&i,&k);
printf("%d\n",k);
for(count=0;count<20-i+1-k;count++)
{
b.c[i+count]=b.c[i+k+count];
}
b.length-=k;
printf("b.length=%d\n",b.length);
for(j=0;j<20;j++)
{
printf("a[%d]=%d\n",j,b.c[j]);
}
return 0;
}
不会报错,也能大致完成楼主的需求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
struct a{
int length;
int c[20];
a()
{
int i ;
for( i = 0 ; i < 10 ; ++i )
c[i] = i + 1 ;
}
}b;
int length;
int c[20];
a()
{
int i ;
for( i = 0 ; i < 10 ; ++i )
c[i] = i + 1 ;
}
}b;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询