第一次作业

第一次作业

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 = op1*1.0 + op2*1.0;
*pdiff = op1*1.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  阅读(287)  评论(8编辑  收藏  举报