唐僧爱吃唐僧肉 2017-05-21 06:04 采纳率: 16.7%
浏览 2625

小妹跪求大神指教一下,谢谢!

10分)编写一个程序,将用户输入的十进制短整型正数n转换成二进制数。如果用户输入负数或者读入错误,则要求用户重新输入。
输入提示信息:"n="
**输入格式:"%hd" /* short 类型 /
输出信息:"the binary number is "
*
输出格式要求:"%d"
程序运行示例如下:
n=37
the binary number is 0000000000100101
小妹的程序代码如下:
#include
int main()
{
printf("n=");
short int n;
do
{
scanf("%hd",&n);
}while(scanf("%hd",&n)!=1||n<0);
printf("the binary number is ");
while(n!=1)
{
printf("%d",n%2);
n=n/2;
}
printf("%d",n);
return 0;
}
输入之后好像没反应的啦!求大神指教。

  • 写回答

3条回答 默认 最新

  • T_world 2017-05-21 06:52
    关注

    你用一个do-while循环处理输入,判断条件是输入,循环体还是输入,这样很可能就会无限输入下去,最好是用一个循环包括整个过程,每次有输入就处理一次输入的情况,根据你的代码修改如下:

     #include<stdio.h>
    int main()
    {
        short int n;
        while(true)
        {
            printf("n=");
            scanf("%hd",&n);
            if(n<0)
            {
                continue;
                printf("Please input again!");
            }
            printf("the binary number is ");
            while(n!=1)
            {
                printf("%d",n%2);
                n=n/2;
            }
            printf("%d",n);
            printf("\n");
        }
        return 0;
    }
    
    

    当然了,按照你现在的实现算法,计算出来的二进制数字是反过来的,你可以再想个办法让二进制数正过来,这件事也不难

    评论

报告相同问题?

悬赏问题

  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档