PTA第一次作业
第一题:计算两个数的和与差。
1 设计思路
(1)主要描述题目算法
第一步:阅读题目与函数。
第二步:先定义四个标识符a,b,sum,diff,对a,b赋值,然后将a的值传递给op1,将b的值传递给op2,将sum的地址传递给指针psum,将diff的地址传递给指针pdiff,最后输出两个数的和与差。
第三步:输出两数的和与差。
第四步:a+b是两个数的sum,a-b是两个数的差,因此在调用函数sum_diff中两个数的和psum等于op1+op2,两个数的差diff等于op1-op2。
void sum_diff( float op1, float op2, float *psum, float *pdiff ){*pdiff=op1-op2;
*psum=op1+op2;
}
(2)本题调试过程碰到问题及解决办法
无
第二题:拆分实数的整数与小数部分
(1). 主要描述题目算法
第一步:阅读题目并了解函数及其定义。
第二步:找到对应函数中的实参和形参。
第二步:将X分为整数然后赋值给intpart,用x减去整数就是小数部分,然后将小数部分的值赋值给fracpart.
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart=(int)x;
*fracpart=x-*intpart;
}
(2)本题调试过程碰到问题及解决办法
问题:没有把x转化为整型。
改正方法:转化之后再赋给*intpart。
PTA第二次作业
第一题:在数组中查找指定元素
(1). 主要描述题目算法
第一步:阅读题目并了解函数及其定义,找到对应函数中的实参和形参并写出函数接口。
第二步:用变量i来遍历数组,如果有list[]==x的情况就代表了这个元素为了防止多次遍历。
第三步:然后把数组中所有的元素与指定元素x进行判断,如果不符合要求return -1如果只要有一个符合要求就return i。
int search( int list[], int n, int x )
{
int i;
int subscript = 0;
for(i=0;i<n;i++)
{
if(list[i]==x)
{
subscript=1;
return i;
break;
}
}
if(subscript==0)
return -1;
}
(2)流程图
(3)本题调试过程碰到问题及解决办法
遍历概念不太清楚导致自己编译很多遍才全部正确,以后要多学多练。
第二题:寻找最大值及其下标
(1). 主要描述题目算法
第一步:阅读题目并了解函数及其定义
第二步:先定义变量i然后利用变量遍历数组。
第三步:然后定义一个最大值
int fun(int *a,int *b,int n)
{
int i;
int max=a[0];
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
*b=i;
}
}
return max;
}
(2)流程图
(3)本题调试过程碰到问题及解决办法
指针使用错误,数值和地址弄混。
*和&使用错误
PTA第三次作业
第一题:
第二题:
PTA第四次作业
第一题:
第二题:
学习总结
(1)在这两周中对于指针的知识理解不透彻,自己也在看moc弥补。还有就是编程时间较少,有些手生,打起代码不流畅。
(2)点评网址
(3)托管代码