c语言第二次作业pta
4-1 求单链表结点的阶乘和 (15分) 本题要求实现一个函数,求单链表L结点的阶乘和。这里默认所有结点的值非负,且题目保证结果在int范围内。
函数接口定义:
裁判测试程序样例:
输入样例:
输出样例:
{
int sum=0,i,N=1;
while(L!=NULL)
{
N=1;
for(i=1;i<=L->Data;i++)
{
N=N*i;
}
sum=sum+N;
L=L->Next;
}
return sum;
}
4-2 提桶寻宝 (10分)
给你准备好一个小桶,告诉你一片广袤的天地,随手一指,挖宝去吧~ 说计算机话!
好吧,题目是这样的:
假设一个二维区域内藏有财宝,对于给定的此前寻到的财宝数量以及坐标(x,y),按照以下规则在该位置寻回财宝,并更新财宝数量。
规则: ?
?
? 如果x、y均为奇数,则获得原有三分之一数量的财宝,小数部分忽略不计 如果x、y均为偶数,则获得 5 财宝 如果x、y奇偶性不同,则不获得财宝
注意:财宝数量、坐标x、坐标y都是int类型范围内的非负整数,在同一个位置可以重复寻找并获得财宝。
函数接口定义:
输入样例:
输出样例:
{
if(x%2==0)
{
if(y%2==0)
{
*pBucket=*pBucket+5;
return (1);
}
else
return (0);
}
else
{
if(y%2!=0)
{
*pBucket=*pBucket+*pBucket/3; return (1);
}
else
return (0);
}
}
4-3 递增的整数序列链表的插入 (15分)
本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。
函数接口定义:
输入样例:
输出样例:
{
List pt1,pt2,pt;
if(L->Next==NULL)
{
pt=(List)malloc(sizeof(List)); pt->Data=X;
pt->Next=NULL;
L->Next=pt;
return L;
}
pt1=L;
pt2=L->Next;
while(pt2!=NULL&&X>=pt2->Data) {
pt1=pt2;
pt2=pt2->Next;
}
pt=(List)malloc(sizeof(List)); pt->Data=X;
pt->Next=pt2;
pt1->Next=pt;
return L;
} 4-5 函数实现字符串逆序 (15分) 本题要求实现一个字符串逆序的简单函数。 函数接口定义:
输入样例:
输出样例:
{
// p指向字符串头部
char *s=p;
// q指向字符串尾部
char *q = s ;
while(*q)
q++;
q -- ;
// 交换并移动指针,直到p和q交叉
while(q > s)
{
char t = *s ;
*s++ = *q ;
*q-- = t ;
}
return p ;
} 4-6 长整数转化成16进制字符串 (15分)
本题要求实现一个将长整数转化成16进制字符串的简单函数。 函数接口定义:
输入样例1:
输出样例1:
输入样例2:
输出样例2:
{
char q;
static int i=0,j=0;
if(x<0)
{
x=-x;
*p='-';
p++;
}
q=x%16;
if(q<10)
q=('0'+q);
else