PTA第一次作业
第一题
计算两个数的和与差:
1.设计思路
(1)算法
定义四个浮点型的标识符a,b,sum,diff,对a,b分别赋值,函数调用、
a的值传递给op1,b的值传递给op2,sum的地址传递给指针变量psum,diff的地址传递给指针变量pdiff;输出两个数的和与差。
代码如下:
2.实验代码
```
void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
*psum=op1+op2;
*pdiff=op1-op2;
}
```
3.本题调试过程碰到问题及解决的办法:
错误信息1:函数定义的格式错误
错误原因:直接复制题目中给出的函数接口定义,后面携带分号
改正方法:删除";";
第二题:
拆分实数的整数与小数部分:
1.设计思路
(1)算法:
定义两个浮点数x,fracpart,和整型数inpart;
读入一个浮点数赋值给x;调用函数splitfloat;
将主函数中的x的值传递给x,将intpart和fracpart的地址传递给inpart和fracpart;
之后就可以分别输出整数部分与小数部分、
实验代码如下:
```
void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart = x;
*fracpart = x - *intpart;
}
```
3.本题调试过程碰到问题及解决的办法:无
第二次PTA作业
6-1 在数组中查找指定元素
本题要求实现一个在数组中查找指定元素的简单函数。
1.设计思路
遍历数组,寻找指定元素
程序代码如下
```
int search( int list[], int n, int x )
{
int i;
for(i=0;i<n;i++)
{
if(x==list[i])
return i;
}
return -1;
}
```
流程图如下:
错误以及问题:无。
6-2 找最大值及其下标
在一维整型数组中找出其中最大的数及其下标。
1.设计思路
(1)算法:
定义一个数组、循环变量i、最大值max、和数组中最大数的下标p。
对数组进行赋值。调用函数。在函数中找到最大值及其对应的下标。
输出数组元素的最大值及其下标。
代码如下:
```
int fun(int *a,int *b,int n)
{
int i;
int max = a[0];
for(i=1;i<n;i++)
{
if(max<a[i])
{
max=a[i];
*b=i;
}
}
return max;
}
```
流程图:
本题出现的问题及错误:未能实时记录。
C高级PTA作业(3)
6-1 最小数放前最大数放后
1.设计思路:
找到最小数并与第一个交换,找到最大数并与最后一个数交换。
代码如下:
```
void input(int *arr,int n) /*1*/
{
int i;
for(i=0;i<n;i++)
scanf("%d",arr+i);
}
void max_min(int *arr,int n)/*2*/
{
int max=*arr,min=*(arr+n-1);
int i,j=0,k=0;
for(i=0;i<n;i++)
{
if(*(arr+i)>max)
max=*(arr+i),k=i;
if(*(arr+i)<min)
min=*(arr+i),j=i;
}
int t;
t=*arr,*arr=*(arr+j),*(arr+j)=t;
t=*(arr+n-1),*(arr+n-1)=*(arr+k),*(arr+k)=t;
}
void output(int *arr,int n)/*3*/
{
int i;
for(i=0;i<n;i++)
{
printf("%3d",*(arr+i));
}
}
```
流程图:
本题遇到的问题:询问其他同学后理解。
所以代码一遍通过
6-2 指针选择法排序
1.设计思路:
定义指针变量p循环变量i,数组。将数组首元素的地址赋值给指针变量p。
读数组的各个元素赋值。使用选择排序法对数组进行从大到小的排序。
输出数组的各个元素。
代码如下:
```
void sort(int *x,int n)
{
int i,j,k;
for(i=0;i<n-1;i++)/*主循环*/
{
k=i;
for(j=i+1;j<n;j++)/*嵌套内循环*/
{
if(*(x+j)>*(x+k))
k=j;
}
if(k!=i)
{
int t;
t=*(x+k),*(x+k)=*(x+i),*(x+i)=t;
}
}
}
```
流程图:
本题题目中遇到的问题:无、
6-1 判断回文字符串
6-2 使用函数实现字符串部分复制
两次作业于deadline之前未能完成,后续单独补充说明。
我评论谁的作业:
王文博:http://www.cnblogs.com/wwb986187/p/8635502.html
梁圣然:http://www.cnblogs.com/messi6/p/8626565.html
李五壹:http://www.cnblogs.com/chenxidream/p/8562097.html
本周学习总结
学习指针,复习之前知识点
鉴于之前的作业均在deadline完成所以没有统计代码行数,下次改正!