zoukankan      html  css  js  c++  java
  • while执行两次的问题,已经解决

    //2013 5 11

    //designer :pengxiaoen

    // function change the number 'd' to 'b'

    #include "stdio.h"

    unsigned long int in_un_number;

    char in_c_choice; int s[33];

    int i;

    void output_function ()

    {  

    printf ("\nSUCCESS\n") ;  

    printf ("%d = (%d)",in_un_number,i);  

    for (i=i-1;i>=0;i--)    printf ("%d",s[i]);   printf ("\n\n\n");

    }

    void choice_function ()

    {  

    printf ("please choice next operation:\n");  

    printf ("'c' for contiue\n");             

    }

    void transform_function(unsigned long int temp)

    {  

    i = 0;    

    temp = in_un_number;    

    while (temp != 0)    

    {      

    s[i] = temp % 2;      

    temp = temp /2;      

    i++;    

    }         

    }

    int main ()

    {            

    in_c_choice = 'c';    

    for (i=33;i>=0;i--) s[i] = 0;        

    printf ("The function is change 'd' to 'b'\n");

    //-------------------------------------------------------------  

    while (in_c_choice == 'c')  

    {   

    printf ("Please enter your positive number : ");   

    scanf("%d",&in_un_number);   

       transform_function(in_un_number);   

    output_function();   

    choice_function();       

    scanf("%d",&in_c_choice);

     }   

    system ("pause");

    }  

    第一次键入值正确

    可是当我再键入 c 的时候就出现了死循环

    不知道为什么?????????????????????????????????????????????????????????

    修改:

    将scanf("%d",&in_c_choice);和choice_functon注释掉,正常

    问题解决办法:

    因为第二次执行scanf的时候,读取内存数据,由于上一次的残留,程序以外其中有数,输入完毕

    解决办法  在scanf之前 清除缓存数据

     fflush(stdin);

  • 相关阅读:
    工作所得所思之一
    angular路由
    html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    您无权输入许可证密钥,请请使用系统管理员账户重试
    nginx的配置说明
    flexbox弹性盒子模型
    移动web开发规范
    为什么要使用响应式开发
    移动web开发
    如何给图片做缓存
  • 原文地址:https://www.cnblogs.com/sepeng/p/3073019.html
Copyright © 2011-2022 走看看