【发布时间】:2014-02-05 21:29:52
【问题描述】:
我在 c 中处于一种情况,假设我有以下代码:
#include <stdio.h>
main()
{
int size=8;
int data[18]={12,9,1,7,4,5,3,11};
int i,newS;
printf("check1 \n");
newS= size+1;
data[newS]=data[0] +data[1];
printf("news %d \n",data[newS]);
printf("check2 \n");
for(i=0;i<21;i++)
{
if (data[i] <data[newS] )
{
printf("check3 \n");
data[newS+1]= data[newS] +data[i] ;
newS++;
}
else
{
printf("check4 \n");
}
}
for(i=0;i<21;i++)
{
printf("%d ",data[i]);
}
printf("\n");
}
我希望它产生这样的结果:12 9 1 7 4 5 3 11 21 33 42 43 50 54 59 62 73 18 18 8。 但我不知道为什么它在“11”之后有一个“0”。如何删除这个零?
对应代码得到的输出是这样的(没想到):
12 9 1 7 4 5 3 11 0 21 33 42 43 50 54 59 62 73 18 18 8
【问题讨论】:
-
我格式化了你的代码,但并没有真正通过它,所以我无法具体评论答案......但根据你帖子的大小,我建议你尝试打破将其分解为一个更小、更可口的问题。
-
@admdrew 感谢您的帮助,如果您告诉我“如何删除静态声明数组的前两个元素,假设我必须删除 data[0].freq 元素和 data[1].freq struct data[6]={1,2,3,4,5,6} 的元素,这样删除后 data[0] 将指向“3”,data[1] 将指向“4”(不是“0 ”和“1”,就像他们在删除之前所做的那样)然后我可以解决我的问题。“但我必须静态地做”。谢谢
-
我不知道 C 中的“静态”是什么意思。
-
@admdrew 我已经编辑了这个问题,并把问题分解得很小,现在请你帮我知道为什么这个代码在“11”之后有“0”。我希望在“11”而不是“0”之后出现“21”。谢谢
-
我相信我的答案,第 (2) 节,解决了 0。