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 中的日历与最后一行的总和

c++ - C++实现合并排序的运行时错误

c++ - 对 vector 使用二进制搜索。

c# - C 如何断言该结构不等于 0?

我可以使用 makefile 来生成具有不同 #define 的多个可执行文件吗?

c - 关于内存泄漏

python - 无法将线程追加到数组

c - 指向结构体的指针 C 中堆栈数据结构的实现

python - 数组中连续子序列的总和

c++ - 对 vector 中的整数序列求和