zoukankan      html  css  js  c++  java
  • 第1次作业

    PTA

    6-1 计算两数的和与差

    1.指针的作用
    在使用sum_diff函数时会有psum,pdiff多个返回值,更方便。
    2.实验代码

    void sum_diff( float op1, float op2, float *psum, float *pdiff )
    {
    	*psum=op1+op2;
    	*pdiff=op1-op2;
    }
    

    3.本题调试过程碰到问题及解决办法
    本题较简单,解决过程中并未遇到问题。

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

    1.指针的作用
    使用splitfloat函数,intpart,fracpart进行值传递。
    2.实验代码

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

    3.本题调试过程碰到问题及解决办法

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

    1.设计思路
    第一步:访问数组中的每个元素。设置if语句,如果元素与输入的x相等,把数组元素的下标赋给result,并结束循环。
    第二步:如果没有与x相同的元素,把-1赋给result。
    第三步:返回result,结束函数。
    2.流程图

    3.实验代码

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

    4.本题调试过程碰到问题及解决办法

    如图所示,没有。

    6-2 找最大值及其下标

    1.设计思路
    第一步:对最大值max初始化。
    第二步:使数组a[]中每个元素与max进行比较,如果a[i]大于max,将a[i]赋给max。
    第三步:将下标i赋给*b。
    第四步:返回max;
    2.流程图

    3.实验代码

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

    4.本题调试过程碰到问题及解决办法

    问题?不存在的。

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

    1.设计思路
    第一步:编写input函数。
    第二步:编写max_min函数函数,选出最大与最小的数组元素,并引用tmp进行数组位置的交换。
    第三步:编写output函数。
    2.流程图

    3.实验代码

    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 i=0,max=0,min=0,tmp;
         for (;i<n;i++)
        {
         if(arr[min]>arr[i])
            min = i;
         if(arr[max]<arr[i])
        max=i;
        }
        tmp=*arr;*arr=arr[min];arr[min]=tmp;
        tmp=arr[max];arr[max]=arr[n-1];arr[n-1]=tmp;
    }
    void output(int *arr,int n)
    {
    	int i;
    	for(i=0;i<n;i++)
    	{
    		
    		printf("%3d",*(arr+i));
    	}
    }
    

    本题调试过程碰到问题及解决办法
    pta我没有来得及改,只是在max_min函数中在交换时指针出了错误,后来我看了其他同学的代码后明白了原因。

    6-2 指针选择法排序

    1.设计思路
    第一步:使数组前一项与后一项进行比较。
    第二步:

    2.流程图

    3.实验代码

    void sort(int *x,int n)
    {
    	int *p,*q,*k,t;
    	for(p = x; p < x + n - 1;p++)
    	{
           k = p;
           for(q = p + 1;q < x + n;q++) 
    	   {
              if(*k < *q) 
    		  k = q;
           }
      if(p != k)
       {
        t = *p;
        *p = *k;
        *k = t;
       }
     }	
    }
    

    4.本题调试过程碰到问题及解决办法
    没遇到。

    6-1 判断回文字符串

    1.设计思路
    第一步:查询字符串里一共有多少个字符。
    第二步:判断字符串是否为回文。如果不是回文,返回false。
    第三步:如果是回文,返回true。
    2.流程图

    3.实验代码

    bool palindrome( char *s )
    {
    	int n=0,i,j,k=0;
    	for(i=0;s!='';s++)
    	{
    		n++; 
    	} 
       for(i = 0 ,j = n-1 ;i < n; i ++,j --)
       {
        if(*(s + i) == *(s + j))
    	{
            k ++;
        }else{
            return false;
        }
       }
       if(k == n)
       {
        return true;
       }
    } 
    

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

    1.设计思路
    当t[i-1]没读到‘0’时,进行循环,把t[i-1]复制到s[i-m]。循环结束后把''赋给s[i-m]。
    2.流程图

    3.实验代码

    void strmcpy( char *t, int m, char *s ){
    		int i;
    		for(i=m;*(t+i-1)!='';i++){
    		  *(s+i-m)=*(t+i-1);
    		}
    		*(s+i-m)='';
    	}
    

    学习总结和进度

    1.学习总结
    在本周的学习当中,我加强了对上学期的函数调用部分的运用。对指针的知识有些模糊,但隐约的感觉到了指针的重要性和便利性。
    2.git

    git地址
    3.折线图


    4.点评
    贾瑱
    李锐
    金海东

  • 相关阅读:
    [ZJOI2007]仓库建设(斜率dp优化)
    [HNOI2008]玩具装箱toy(斜率优化dp)
    2019牛客暑期多校训练营(第十场)F-Popping Balloons
    2019牛客暑期多校训练营(第十场)B-Coffee Chicken
    子集的生成—二进制枚举
    2019牛客暑期多校训练营(第九场)D-Knapsack Cryptosystem(思维+子集和)
    2019牛客暑期多校训练营(第九场) E-All men are brothers(并查集+组合数学)
    字符串的最小表示法
    2019牛客暑期多校训练营(第八场)
    [HDU4734] 不要62(数位dp入门)
  • 原文地址:https://www.cnblogs.com/kimhae/p/8597266.html
Copyright © 2011-2022 走看看