问答题 [函数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); do{c[i]={{U}} (1) {{/U}}; i++; n=n/base; }while({{U}} (2) {{/U}}); printf("Transmit new base:"); for(- -i;i>=0;- -i)printf("%c",{{U}} (3) {{/U}}); } [函数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;{{U}} (4) {{/U}}) if({{U}} (5) {{/U}}) 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不是回文字符串。