万维C语言第X套第一题

原题目程序

/*---------------------------------------------------------
【程序设计】程序将正整数转换成8421码(又称BCD码)形式的字符串。8421码的编码规则是:
      两位10进制正整数可以用1个字节的8421码表示,其中一位10进制整数占用4位
      bit。或者说一个字节的8421编码可以表示两位10进制正整数。 
例如:10进制的45,对应BCD码是01000101。
      BCD码10010111对应的10进制数正整数是97。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
      Program-End之间填入若干语句。不要删除标志否则不得分。
---------------------------------------------------------*/
#include
#include
#include
#include
#include
 
#define N 4
 
void inttobcd(char bcd[],unsigned x)
{
    int i,j,y;
    char t[]="00000000";
/**********Program**********/
	 




/**********  End  **********/
    strcat(bcd,t);
    strcat(bcd," ");
}
 
int main()
{
    unsigned n[N]={99,80,75,4};
    char bcd[40]={0};
    int i;
    for(i=0;i<N;++i)
       inttobcd(bcd,n[i]);
    puts(bcd);
    return 0;
}

填写的答案

	for (i = 2; i > 0; --i)
	{
	    j = i * 4 - 1;
		for (y = x % 10; y; y /= 2)
		     t[j--] += y % 2;
		x /= 10;
	}

最后程序

/*---------------------------------------------------------
【程序设计】程序将正整数转换成8421码(又称BCD码)形式的字符串。8421码的编码规则是:
      两位10进制正整数可以用1个字节的8421码表示,其中一位10进制整数占用4位
      bit。或者说一个字节的8421编码可以表示两位10进制正整数。 
例如:10进制的45,对应BCD码是01000101。
      BCD码10010111对应的10进制数正整数是97。
------------------------------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main或其它函数中给出的内容,仅在
      Program-End之间填入若干语句。不要删除标志否则不得分。
---------------------------------------------------------*/
#include
#include
#include
#include
#include
 
#define N 4
 
void inttobcd(char bcd[],unsigned x)
{
    int i,j,y;
    char t[]="00000000";
/**********Program**********/
	for (i = 2; i > 0; --i)
	{
	    j = i * 4 - 1;
		for (y = x % 10; y; y /= 2)
		     t[j--] += y % 2;
		x /= 10;
	}
/**********  End  **********/
    strcat(bcd,t);
    strcat(bcd," ");
}
 
int main()
{
    unsigned n[N]={99,80,75,4};
    char bcd[40]={0};
    int i;
    for(i=0;i<N;++i)
       inttobcd(bcd,n[i]);
    puts(bcd);
    return 0;
}

你可能感兴趣的:(万维考试系统,c语言,c++,开发语言)