问答题 [函数2.1说明]
下面程序的功能是:将由键盘输入的某个十进制数转换成对应的R进制数并输出。这里R是 2到16的整数,由键盘输入。例如,输入n=128,base=13后的输出为9B。
[函数2.1]
#include <stdio.h>
main()
char b[16]='0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F';
int c[64],n,i=0,base;
printf("Enter a number:");scaaf("%d",&n);
printf("Enter new base:");scanf("%d",&base);
doc[i]= (1) ;
i++;
n=n/base;
while( (2) );
printf("Transmit new base:");
for(- -i;i>=0;- -i)printf("%c", (3) );

[函数2.2说明]
所谓回文字符中是指正序和逆序拼写相同的字符串,例如astrtsa,adgdtdgda等。下面函数int fun(char *str)的功能是判断字符串str是否是回文,当字符串是回文时,函数返回1,否则返回0。
[函数2.2]
int fun(char *str)
int i,j,l;
for(i=0;str[i]! ='/0';i++);
l=i/2;
for(j=0,i- -;j<=1; (4) )
if( (5) ) return 0;
return 1;


【正确答案】(1) n% base (2) n! =0 (3) b[c[i]] (4) j++, i-- (5) str[i]! =str[j]
【答案解析】[考点分析] 考查C语言程序设计,包括数值和字符中的处理。
[解析] (1)~(3)函数2.1的基本思想是“除base取余”,即从低位开始以n除以base的余数作为转化后的一位c[i],再以n除以base的商作为新的n,继续进行转化,直至除法商0为止。最后将所得的c[i]作为下标,从数组b中找出对应的数码表示,即b[c[i]]。
(4)~(5)此循环初始时,i和j充当str的头和尾指针,循环执行过程中,两指针同时以步长1向str的中间移动,比较所指字符是否相等,若不等则表明str不是回文字符串。