【问题标题】:Program does not terminated properly convert binary to decimal程序未正确终止将二进制转换为十进制
【发布时间】:2020-09-19 08:48:18
【问题描述】:

我写了一个c程序将二进制数转换为十进制数。

这是我的代码

#include<stdio.h>    
int q[6],f,r;

int main()
   {
       int a,v,i,m,sum=0;
       f=r=-1;
       for(i=0;i<=5;i++)
          {
               scanf("%d",&v);
               if (v==1 || v==0){
               addq(v);
          }
          else{
                  printf("wrong input")
                  break;
              }
 }
  for(i=5;i>=0;i--)
      {
           a=delq();
           m=pow(2,i);
           sum=sum+a*m;
      }
      printf("DECIMAL NO.IS:%d",sum);
      return 0;
}

addq(int ele)
   {
       if(r==5)
       printf("QUEUE FULL");
   else
      {
          r++;
         q[r]=ele;
         if(f==-1)
         f=0;
     }
 }

delq()
{
   int ele;
   if(f==-1)
   printf("QUEUE EMPTY");
else
   {
      ele=q[f];
      if(f==r)
      f=r=-1;
      else
      f++;
      return(ele);
  }
}

如果我输入 0 或 1 以外的输入,它会显示我输入错误,但程序没有完全终止。

这是我得到的 输出。它不仅显示错误的输出,如 117,而且没有终止。

输出:

1 0 1 5 错误输入队列 EmptyQueue EmptyQueue EmptyDecimal NO IS: 117

我应该怎么做才能终止程序?

感谢您的帮助。

【问题讨论】:

  • 请将输出复制并粘贴到问题中作为文本meta.stackoverflow.com/q/285551/10622916问题中的代码无法编译。您应该修复错误和警告。正确缩进代码也有助于我们理解您的代码。
  • break; 语句终止循环(在您的程序中,第一个 for 循环)。退出程序,使用exit(0)
  • @vanisk 是的,谢谢。它正在工作。

标签: arrays c queue break


【解决方案1】:

break 语句终止循环(在您的程序中,第一个“for 循环”)而不是程序。

要退出程序,请使用exit(0)

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 2021-12-30
    • 2012-06-26
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    相关资源
    最近更新 更多