第一次作业-2班-时宇 PTA第四次作业暂挂

Posted 手残少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一次作业-2班-时宇 PTA第四次作业暂挂相关的知识,希望对你有一定的参考价值。

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完成所以没有统计代码行数,下次改正!

以上是关于第一次作业-2班-时宇 PTA第四次作业暂挂的主要内容,如果未能解决你的问题,请参考以下文章

PTA第四次作业

pta第四次作业

第四次PTA作业

第四次作业--树

OOP第四次作业(第一次总结)

第四次作业