第一次作业

作业要求一:
1、设计思路:
(1)算法描述:
第一步:定义p并赋初值;
第二步:计算出p++,(p)++,*(p++)并进行比较;
(2)流程图

2、实验代码:
(1)

int main()
{
    int a=2;
    int *p;
    p=&a;
    printf("%d %d %d",p++,(p)++,*(p++));
}```


(2)```#include <stdio.h>
int main()
{
    int p=2;
    printf("%d %d %d",p++,(p)++,*(p++));
}```

 
结论:p为整型时,p++与(p)++结果相同,但是编译器报错,p为指针类型时,p++与(p)++结果相同
1: 
错误原因:定义的p是整型变量,间接访问运算符无法使用
![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324213729734-698679812.png)

改正方法:使用间接访问运算符时要先定义指针变量,这样才有效
作业要求二:
题目6-1计算两数的和与差
1、	设计思路:
(1)	算法:
第一步:定义函数
第二步:计算两数的和与差
(2)	流程图:![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324213744574-155373367.png)


2、	实验代码
```void sum_diff( float op1, float op2, float *psum, float *pdiff )
{
    *psum=op1+op2;
    *pdiff=op1-op2;
}```

题目二
拆分实数的整数与小数部分:
1、	设计思路:
(1)算法:
第一步:定义函数
第二步:用强制转换类型将x转换成int类型,得到整数部分,用间接访问运算符将值赋值给intpart
第三步:x-*intpart为小数部分
(3)	流程图:
![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324213958139-1711178428.png)
2、	实验代码:
```void splitfloat( float x, int *intpart, float *fracpart)
{
  
  
  *intpart=(int)(x);
  *fracpart=x-*intpart;
  
}```
 
要求三:
1、	本周来主要学习地址和指针的概念,变量的指针和指向变量的指针变量,如何引用指针变量
2、	代码托管:https://github.com/mayujuan981017/-pta-.git
Pta第三次作业
6-1 最小数放前最大数放后
1、	设计思路:
(1)、算法:
第一步:定义最大值和最小值,定义一个变量;
第二步:将数组中的第一个元素赋值给最大值和最小值,用变量存放最值的下标;
(2)流程图:
![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324213848354-2048516338.png)

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 max=arr[0],p,i;
    p=0;
    for(i=1;i<n;i++)
    {
        if(max<arr[i])
        {
            max=arr[i];
            p=i;
        }
    }
    arr[p]=arr[n-1];
    arr[n-1]=max;
    int min=arr[0];
    p=0;
    for(i=1;i<n;i++)
    {
        if(min>arr[i])
        {
            min=arr[i];
            p=i;
        }
    }
    arr[p]=arr[0];
    arr[0]=min;
}
void output(int *arr,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%3d",arr[i]);
    }
}```
 
6-2 指针选择法排序
1、	设计思路:本题我利用的是冒泡排序
(1)	算法:
第一步:比较相邻的两个元素,如果第一个比第二个小,就交换它们;
第二步:对每一对相邻的元素作同样的工作,直到最后一对;
第三步:针对所有元素进行以上步骤,除了最后一个;
(2)	流程图:

 
6-2 指针选择法排序
1、	设计思路:本题目我采用的是冒泡法排序
(1)	算法:
第一步:比较相邻两个元素,如果第一个元素比第二元素小,就交换;
第二步:对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。最后一个元素应该是最大的;
第三步:针对所有元素进行以上循环,除了最后一个;
(2)	流程图:
 ![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324214145149-1210378939.png)

(3)	实验代码: ```void sort(int *x,int n)
{
    int i,j,t;
    for(j=0;j<n-1;j++)
    {
      for(i=0;i<n-1-j;i++)
      {
        if(x[i]<x[i+1])
        {
          t=x[i];x[i]=x[i+1];x[i+1]=t;
        }
        
      }
      
    }
    
}```


 
第四次作业:
6-1 判断回文字符串
1、	设计思路:
(1)	算法:
第一步:先测定字符串的长度;
第二步:循环的次数为长度的一半,将首尾的字符进行比较;
第三步:若判断相等,则计数器加1,如果计数器的值与循环的次数相等,那么说明是回文;
(2)	流程图:
 ![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324214230069-1171895625.png)

(3)	实验代码:    ```bool palindrome( char *s )
{
    int x,i,cnt=0;
    x=strlen(s);
 
        for(i=0;i<x/2;i++)
        {
        if(s[i]==s[x-1-i])
        {
            cnt++;
        }
        }
        if(cnt==x/2)
        {
            return true;
        }else
        {
            return false;
        }
   
    
}```
![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324214314434-142861869.png)

 
6-2 使用函数实现字符串部分复制
设计思路:
(1)	算法:
第一步:测出输入字符串的长度;
第二步:判断m是否超过输入字符串的长度,若超过则为空串,不超过进行第三步;
第三步:定义一个变量j,,第m个元素为s[j]的第一个元素,i++,直到i>=x结束循环,使s[j]的最后一个元素为字符串结束标志‘\0’

(2)	流程图:
![](https://images2018.cnblogs.com/blog/1342842/201803/1342842-20180324214400147-34536617.png)
(3)	实验代码:
 
    ```void strmcpy( char *t, int m, char *s )
{
    int x,i,j;

    
    x=strlen(t);
    if(m>x)
    {
        *s=NULL;
    }else
    {
        for(i=m-1,j=0;i<x;i++,j++)
        {
        s[j]=t[i];
        }
        s[x-m+1]='\0';
    }
    
}```

总结:本周学习了如何通过指针引用数组元素,用数组名做函数参数,比较了以变量名和数组名作为函数的参数,字符串的表示形式
评论:邓欣茹:http://www.cnblogs.com/dxfish/p/8597352.html
焦瑞君:http://www.cnblogs.com/jiaoruijun/p/8639383.html
申怡苗:http://www.cnblogs.com/Vinecy/p/8619059.html
辛静瑶:http://www.cnblogs.com/X-JY/p/8550457.html
李新华:http://www.cnblogs.com/Lixinhua18/p/8569649.html
posted on 2018-03-24 21:44  可乐汽水1  阅读(200)  评论(7编辑  收藏  举报