怎么把输入的内容存到数组里面啊

img


这用循环把输入存进数组后怎么才能结束循环啊,没有啥可以退出循环的条件啊

int main()
{
    short a[50],k;
    int n=0,j,m,count=0,flag = 1;;
    unsigned short i,t,p;
    while(scanf("%d",&k) != EOF)
    {
        a[n++] = k;
    }
    for(i=0;i<n;i++)
    {
        count = 0;
        flag = 1;
        
          if(a[i]<0)
          {
              flag  = -1;
                t = a[i]*-1;
          }
          else
              t = a[i];
          for(j=0;j<16;j++)
          {
              p = t<<j;
              m = p>>15;
              if(m==0 && count == 0)
                  continue;
              if(count == 0 && flag == -1)
                  printf("-");
              printf("%d",m); 
              count++;
          }
        printf("\n");
    }
    return 0;
}
 

for循环或者用if判断

题目中说不超过50个数,就定义一个50个大小数组就可以了,通过循环逐个读取记录,代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,n=0,j=0,k;
    int arr[50],t;
    char buf[16];
    //读入n个数
    while(scanf("%d",&arr[n]) != EOF) n++;
    for (i=0;i<n;i++)
    {
        j=0;
        t = arr[i]>=0?arr[i]:-arr[i];
        while(t)
        {
            buf[j++] = (t & 0x0001) +'0';
            t/=2;
        }
        if (arr[i]>=0)
        {
            buf[j] = 0;
            for(j--;j>=0;j--)
                printf("%c",buf[j]);
        }else
        {
            for(k=j;k<16;k++)
                buf[k] = '0';
            //取反
            for(k=0;k<16;k++)
            {
                if(buf[k]=='0')
                    buf[k] = '1';
                else
                    buf[k] = '0';
            }
            //+1
            k=0;
            while(k<16)
            {
                if(buf[k] == '1')
                {
                    buf[k] = '0';
                    k++;
                }
                else
                {
                    buf[k]= '1';
                    break;
                }
            }
            for(k=15;k>=0;k--)
                printf("%c",buf[k]);
        }
        
        printf("\n");
    }
    return 0;
}