该程序设计目的为给出一个数的原码,能得到该数的补码。一个正数的补码等于该数原码,一个负数的补码等于该数中的反码加1。
代码是:
#include "stdio.h"
void main()
{
    unsigned int a;
    unsigned int z;
    printf("Please input a octal number:");
    scanf("%o",&a);
    z=a&0100000;
    if(z==0100000)
       z=~a+1;
    else
       z=a;
    printf("Its complement is:%o\n",z);
    getch();
}
1。将该程序的算法用自然语言描述。
2 根据测试结果你对该程序有什么建议或提议?

解决方案 »

  1.   

    大哥,我们是搞JAVA的,你这是C语言的问题,请去C语言专区去问问看,小弟不会。-_-|||
      

  2.   

    从键盘读入一个八进制数a
    设置z等于a和0100000按位与的结果  //保留最高位正负数标识位
    如果z等于0100000  //说明a为负数
      设置z等于a的按位取反的结果加一
    否则  //a为正数
      设置z等于a
    按八进制打印结果z到屏幕
      

  3.   

    程序似乎有错吧,改向下面这样改一下吧:
    #include "stdio.h"
    void main()
    {
        unsigned int a;
        unsigned int z;
        printf("Please input a octal number:");
        scanf("%o",&a);
        z=a&0x80          /*z=a&0100000;*/
        if(z==0x80)       /*if(z==0100000)*/
           z=~(a|0x80)+1;
        else
           z=a;
        printf("Its complement is:%o\n",z);
        getch();
    }
    好久没写c程序了,不知道有没有错误,欢迎监督啊