一道程序员考试题目,请高手指教,不胜感激。
【函数说明】
设长正整数用数组存储,如有 k 位的长整数m用数组 a[] 存储:
m = a[k]*10(k-1)+a[k-1]*10(K-2)+……+a[2]*10+a[1]*1
并用a[0]存储长整数m的位数,即a[0]=k。
通常,存储长整数数组的每个元素只存储长整数的一位数字。长整数运算时,为了运算方便,
产生的中间结果的某位数字可能会大于 9。这时,就应调用本函数将它规整,使数组的每个元素
只存储长整数的一位数字。规整运算函数 formal(int *a) 就实现这个特殊要求。
【函数】
void formal(int *a)
{ int p;
for (p = 1; p < a[0] || a[p] >= 10; p++) {
if (p >= a[0] __(1)__;
a[p+1]+ = a[p]/10; a[p] = __(2)__;
}
if (p > a[0]) __(3)__;
}
我做的答案是:
1)a[p+1]=0;
2)a[p]=a[p]%10;
第三个不知道该怎么填,我想不通,P怎么能大于a[0]呢。前两个填的对不对,我也不知道。请高手指点,不胜感激。
问题点数:30、回复次数:4Top
1 楼lang2000()回复于 2003-09-02 22:20:59 得分 15
我认为1)、2)正确
3)a[0]++;
因为a[0]为长整数位数,如a[1]=12,a[0]=1
调用formal后,a[2]=1,a[1]=2,a[0]=2Top
2 楼xjzhangg(苹果)回复于 2003-09-02 22:28:10 得分 0
lang2000() ,P怎么能大于a[0]呢.Top
3 楼diwaa(地娃)回复于 2003-09-02 22:32:56 得分 15
整个程序中没有改变a[0]的,但是a表示的数据 的位数是要增加的那就是当p>a[0]是,
所以第三个空应改变a[0]
3)a[0]=pTop
4 楼xjzhangg(苹果)回复于 2003-09-02 22:41:50 得分 0
明白了,谢谢两位Top




