第一次作业

第一次作业

PTA第一次作业

* 6-1计算两数的和与差*

设计思路

(1)算法

第一步:明确要求,阅读题目
第二步:根据所给的函数接口确定变量
第三步:形参op1与形参op2的和赋值给psum所指向的sum;形参op1与形参op2的差赋给pdiff所指向的diff;

(2)流程图

代码

void sum_diff( float op1, float op2, float *psum, float *pdiff )
{

psum = op11.0 + op21.0;
pdiff = op11.0 - op2
1.0;

}

错误信息

有的符号用中文输入法打没找出来, 马虎大意

* 6-2 拆分实数的整数与小数部分*

设计思路

(1)算法

第一步:阅读题目,找出形参和形参,写出函数出口
第二步:将x强制转化成int类型,并将整数部分赋给int型地址intpart所指向的变量,将x-intpart赋给fracpart,即为小数部分

(2)流程图

代码

void splitfloat( float x, int *intpart, float *fracpart )
{
*intpart=(int)x;
*fracpart=x - (int)x;

}

PTA第二次作业

6-1 在数组中查找指定元素

设计思路

(1)算法

第一步:用for循环查找所有的数
第二步:由于x是待查找的元素,用if函数查找,如果找到则函数search返回相应元素的最小下标,否则返回−1。

(2)流程图

代码

int search(int list[],int n,int x){
int i;
for(i = 0;i < n;i++)
{
if(list[i] == x)
return i;
break;
}
return -1;
}

错误信息

没加break;

6-2 找最大值及其下标

设计思路

(1)算法

第一步:找到对应函数中的实参和形参,写出函数接口。
第二步:在函数中定义一个最大值变量并将首元素的max值赋给max,再用for循环对每两个元素进行判断
第三步:再通过for遍历来比较交换出该数组的最大值及其下标

(2)流程图

代码

int fun(int a,int b,int n)
{
int i,y,z=0;
for(i=0;i<n;i++,
a++)
{
if(
a > z)
{
y=*a;
*a=z;
z=y;
*b=i;
}
}
return z;

}

*PTA第三次作业

6-1 最小数放前最大数放后

设计思路

(1)算法

第一步:找出函数中的形参和实参
第二步:定义最大值max和最小值min和两个变量
第三步:最大值和数组最后一个元素交换,最小值和首元素交换。
第四步:遍历数组输出数组的每一个元素。

(2)流程图

代码

void input(int arr,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",arr+i);
}
}
void max_min(int arr,int n){
int min=arr[0],max=arr[0];
int i,temp;
int q=0,w=0;
for(i=0;i<n;i++){
if(min>
(arr+i)){
min=
(arr+i);
q=i;
}
if(max<(arr+i)){
max=
(arr+i);
w=i;
}
}
temp=(arr+0);(arr+0)=(arr+q);(arr+q)=temp;
temp=(arr+n-1);(arr+n-1)=(arr+w);(arr+w)=temp;
}
void output(int arr,int n){
int i;
for(i=0;i<n;i++)
{
printf("%3d",
(arr+i));
}
}

6-2 指针选择法排序

设计思路

(1)算法

第一步:找到调用函数,用两个for循环遍历所有数,比较大小
第二步:找出最大值,与第一个元素交换,以此类推

(2)流程图

代码

void sort(int x,int n)
{
int i,j,s,temp;
for(i=0;i<n-1;i++){
s=i;
for(j=i+1;j<n;j++){
if(
(x+s)<(x+j)){
s=j;
}
}
if(s!=i){
temp=
(x+i);(x+i)=(x+s);*(x+s)=temp;
}
}
}

PTA第四次作业

6-1 判断回文字符串

设计思路

(1)算法

第一步:找到函数接口定义bool palindrome
第二步:定义数组,遍历数组中元素,并做比较
第三步:如果s[i]!=s[j],则输出false,否则输出ture

(2)流程图

代码

bool palindrome(char*s)
{
int len = strlen(s);
int i=0, j=len-1;
for (i=0; i<=j; i++,j--){
if(s[i]==s[j]);
else return 0;
}
return 1;
}

6-2 使用函数实现字符串部分复制

设计思路

(1)算法

第一步:引用函数void strmcpy,、引用for循环
第二步 : 将数组t的第m位赋值给数组s,将最后的元素定义

(2)流程图

代码

include<string.h>

void strmcpy( char *t, int m, char * s)
{
int n,i;
memset(s,0,sizeof(s));
n=strlen(t);
if(m>n)
*s=NULL;
else
{
for(i=m-1;i<=n-1;i++)
s[i-(m-1)]=t[i];
}
}

学习总结

我评论的人

1.焦瑞君http://www.cnblogs.com/jiaoruijun/
2.党睿http://www.cnblogs.com/dangrui/
3.邓欣茹http://www.cnblogs.com/dxfish/

代码托管

posted on 2018-03-24 20:33  张piupiu  阅读(338)  评论(8)    收藏  举报