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

    题目6-1 计算两数的和与差

    //代码部分

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

    //设计思路
    1)文字部分

    1.观察主函数,输出部分与输入部分都具备,且函数不需要返回值;
    2.确定题意,本题要求为输出主函数中a和b的和(psum)与差(pdiff);
    3.运用指针把psum,pdiff输出;

    2)指针在本题中作用为传递两个及以上变量;

    //调试错误

    并未遇到调试错误
    题目6-2 拆分实数的整数与小数部分
    //代码部分

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

    //设计思路
    1)文字部分

    1.确定题意,本题要求为拆分主函数中x的整数部(intpart)与小数部(fracpart),并输出;
    2.观察主函数,输出部分与输入部分都具备,且函数不需要返回值
    3.运用关于int知识拆分出x整数部(intpart);
    4.以x减去整数部(
    intpart)得到小数部(*fracpart);

    2)指针在本题中作用为传递两个及以上变量;

    //调试错误

    并未遇到调试错误

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

    //代码部分

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

    //解题思路
    1)文字部分

    1.确定题意,本题要求为在指定数组list中查找元素x,并在查找到元素时输出查找到元素的下标或未查找到时输出“not found”;
    2.观察主函数,输出部分与输入部分都具备,主函数需要返回值赋给index;
    3.确定index在主函数中作用为代表list数组中x的下标;
    4.通过for语句在数组list中查找x,并且定义一个index记录x的下标作为返回值;

    2)流程图

    3)指针在本题中可替代数组使用,亦可不使用;

    //调试错误

    并未遇到调试错误

    题目6-2 找最大值及其下标
    //代码部分

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

    //解题思路
    1)文字部分

    1.确定题意,本题要求为在指定数组a中查找最大元素与它的下标,并输出;
    2.观察主函数,输出部分与输入部分都具备,主函数需要返回值赋给max;
    3.确定max在主函数作用为代表a数组最大值;
    4.通过for和if语句在数组a中查找最大值,并在fun函数中定义max储存最大值作为返回值;

    2)流程图

    3)指针在本题作用为储存最大值的下标,用于输出;

    //调试错误

    并未遇到调试错误
    题目6-1 最小数放前最大数放后

    //代码部分

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

    //解题思路
    1)文字部分

    1.确定题意,本题要求为在指定数组arr中将数组最小值与数组第一个替换,将数组最大值与最后一个数替换,并在替换后输出数组;
    2.观察主函数,主函数无输入输出部分,主函数无需返回值;
    3.确定函数接口作用: input作用为输入;max_min作用为找到最大最小值并进行替换;output作用为输出;
    4.Input,output作用易实现,max_min函数可利用for函数确定最大最小值下标;
    5.使用最值下标进行交换;

    2)流程图
    input

    max_min

    output

    3)指针在本题中作用为在不同函数间传递数组arr;

    //调试错误

    并未遇到调试错误

    题目6-2 指针选择法排序

    //代码部分

    void sort(int *x,int n)
    {
      int i,min=n-1,k;
      for(i=0;i<n;i++)
      {
        if(x[min]>x[i])
        {
          k=x[min];x[min]=x[i];x[i]=k;
        }
      }
      if(n>0)
      {
      n--;
      sort(x,n);
      }
    }
    

    //解题思路
    1)文字部分

    1.确定题意,本题要求为对x数组中的10个数进行由大到小的排序;
    2.观察主函数,主函数有输入输出部分,主函数无需返回值;
    3.可使用冒泡排序法对x进行排序;

    2)流程图

    3)指针在本题中作用为替代数组,可不使用;

    //调试错误

    并未遇到调试错误

    题目6-1 判断回文字符串

    //代码部分

    bool palindrome( char *s )
    {
      int i=0,n=0;
      for(;s[i]!='';i++)
        n++;
      for(i=0;i<=(n/2);i++)
      {
        if(s[i]!=s[n-i-1])
        return 0;
      }
      return true;
    }
    

    //解题思路
    1)文字描述

    1.确定题意,本题要求为判断字符串s是否为顺读和倒读都一样的字符串。
    2.观察主函数,主函数有输入输出部分,主函数需要返回值,返回值为bool型;
    3.定义n用于记录字符串s长度,通过对比s[i]与s[n-i-1]确定字符串s是否为回文;

    2)流程图

    3)指针在本题中作用为替代数组,可不使用;

    //调试错误

    并未遇到调试错误

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

    //代码部分

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

    //设计思路
    1)文字部分

    1.确定题意,本题要求为将字符串t中从第m个字符开始的全部字符复制到字符串s中;
    2.观察主函数,主函数有输出部分与输入m部分,无输入t部分,主函数不需要返回值,同样可观察出函数ReadString作用为输入t;
    3.将数组s初始化为空串,定义n为字符串长度;
    4.判断m与n的关系确定s是否为空串,若不是则将t[i]赋值给s[i+1-m];

    2)流程图

    3)指针在本题中作用为替代数组,可不使用;

    //调试错误

    并未遇到调试错误

    额外加题:为了防止信息被别人轻易盗取,需要把电码明文通过加密方式变换成为密文。变换规则如下:小写字母y变换为a,小写字母z变换为b,其他字母变换成为该字母ASCII码顺序后2为字幕,比如o变换成q。要求给出你的姓名全拼加密后的结果。
    //代码部分

    //变换规则如下:小写字母y变换为a,小写字母z变换为b,
    //其他字母变换成为该字母ASCII码顺序后2为字幕,比如o变换成q。要求给出你的姓名全拼加密后的结果。
    #include<stdio.h>
    int main()
    {
    	char *s; 
    	int i;
    	scanf("%s",s);
    	for(i=0;*(s+i)!='';i++)
    	{
    		if(s[i]>='a'&&s[i]<='x')
    		s[i]=s[i]+2;
    		else if(s[i]=='y')
    		s[i]='a';
    		else if(s[i]=='z')
    		s[i]='b';
    	}
    
    	printf("%s",s);
    } 
    

    //设计思路
    1)文字部分

    1.确定题意,本题要求为将除了y,z的小写字母变为顺序后两位字母,y变为a,z变为b;
    2.设定字符串*s储存字符串;
    3.用for函数历遍数组S元素并进行加密;
    4.输出数组;

    2)流程图

    //调试错误
    并未遇到调试错误

    //运行结果

    1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?

    这两周中学习了关于指针相关的一些知识,并复习了一些上个学期的内容,在这两周z的学习中我感觉学到了一些有关于数组和指针关系的知识,并且对于指针通常的使用范围也有了一些了解,同样的,我认为自己在指针和数组的不同处这点有些不了解,指针和数组的地址分配上也没有什么概念

    2、将PTA作业的源代码使用git提交到托管平台上,要求给出上传成功截图和你的git地址
    地址:https://git.coding.net/q871057265/ZY.git

    3、点评3个同学的本周作业
    徐铭博:http://www.cnblogs.com/xmb1547828350/p/8597402.html
    赵寅胜:http://www.cnblogs.com/2017023960ZYS/p/8604534.html
    史泽文:http://www.cnblogs.com/shilcz/p/8611461.html
    4、请用表格和折线图呈现你本周(3/12 8:00~3/26 8:00)的代码行数和所用时间、博客字数和所用时间


  • 相关阅读:
    纯CSS3实现3D动画导航,html5 webRTC技术实现免费网页电话拨打
    Base64编解码Android和ios的例子,补充JNI中的例子
    新春寄语
    彩票号码OC呈现
    iOS CFNetwork报错
    Android常用库
    高性能服务端访问设计
    Tomcat的ISO-8859-1
    迅达云s3cmd客户端mac平台部署说明
    Android.os.NetworkOnMainThreadException
  • 原文地址:https://www.cnblogs.com/ryo-/p/8644256.html
Copyright © 2011-2022 走看看