20160831中兴网上笔试试题
第一题:
输入整数4, 输出:
1
2*3
4*5*6
7*8*9*10
7*8*9*10
4*5*6
2*3
1
function main(x) {
var array = new Array();
var sum = 0;
for (var i = 0; i < x; i++) {
sum++;
array[i] = sum.toString();
for (var j = 2; j <= i + 1; j++) {
sum++;
array[i] += '*';
array[i] += sum.toString();
}
console.log(array[i]);
}
for (var i = x - 1; i >= 0; i--) {
console.log(array[i]);
}
}
test = prompt('', '');
main(test);
第二题:
反转链表的后半段
lnode* relist(lnode *list)
{
int n=0;
for(lnode *p=list;p!=NULL;p=p->next)
{
++n;
}
if(n%2)
{
n=(n+1)/2;//奇数个情况,如果有5个,则从第3个开始。
}
else
{
n/=2+1;//偶数个情况,如果有4个,则从第3个开始。
}
lnode *reHead,*flag;
int i=0;
for(lnode *p=list;p!=NULL;p=p->next)
{
++i;
if(i==n-1)
{
flag=p;
}
else if(i==n)
{
reHead=(lnode *)malloc(sizeof(lnode));
reHead->next=NULL;
reHead->value=p->value;
}
else if(i>n)
{
lnode *temp=(lnode *)malloc(sizeof(lnode));
temp->value=p->value;
temp->next=reHead;
reHead=temp;
}
}
delLi(&(flag->next));
flag->next=reHead;
return list;
}
void delLi(lnode **head)
{
lnode *th=*head;
for(lnode *temp=th;temp!=NULL;)
{
lnode *p=temp;
temp=temp->next;
free(p);
}
*head=NULL;
}