改错题
1. 以下程序可把输入的十进制数以十六进制数的形式输出。
请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void main()
{
char b[17]={"0123456789ABCDEF"};
int c[64],d,i=0,base=16;
long mum;
printf("Enter a number:\n");scanf("%1d",&num);
do
{
//****found****
c[i]=______;i++;num=num/base;}
while(num!=0);
printf("Transmite new base:\n");
for(--i;i>=0;--i)
//****found****
{ d=c[i];printf("%c",b______);}
printf("\n");
}
【正确答案】(1)错误:缺少语句
正确:应填入“num%base”
(2)错误:缺少语句
正确:应填入“[d]”
【答案解析】 按题目的要求,把输入的十进制数以十六进制数的形式输出。首先,要将十进制数对16求余,得出十六进制每一位上的数字。因此,“c[i]=______”处填“num%base”。数组b为十进制数0~15所对应的十六进制数,数组c中存放的是十六进制数每一位上的数字。因此,“b______处”填“[d]”。