c - 删除静态声明的数组的前两个元素不起作用

标签 c arrays algorithm

我在 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

最佳答案

这是我对删除零的问题所做的解决方案:(以下是供任何用户将来引用的代码)。

#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;
 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] ;
              //break;
              newS++;
            }   
            else
            {
             printf("check4 \n");
            }
        }
     for(i=0;i<21;i++)
     {
     printf("%d  ",data[i]);
     }
     printf("\n");
}

关于c - 删除静态声明的数组的前两个元素不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21588931/

相关文章:

c - 运行 gsoap 应用程序时出现段错误

python - 有条件合并列表中的子列表

c# - 将对象存储在数组中,然后访问它们

python - 改变python中像素的颜色

objective-c - 将十进制数转换为二进制 Objective-C

c - 一步一步(F10)运行正常,但(ctrl+F5)运行错误,有解决办法吗? C

c 编程 scanf 不会读取输入两次

c - 错误 : request for member 'valore' in something not a structure or union

algorithm - 使用循环不变量证明归并排序的正确性(初始化、维护、终止)

algorithm - Sub O(n ^ 2)算法来计算嵌套间隔?