zoukankan      html  css  js  c++  java
  • 第一次作业(2)

    6-1 计算两数的和与差

    1、设计思路

    第一步:根据题意对函数进行定义。
    第二步:分析得该函数所求为op1与op2的和与差,将所得和与差分别为psum和pdiff。
    第三步:得出代码。

    2、实验代码

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

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


    问题:编译错误
    解决:在定义函数时像定义变量一样在结尾加上了逗号,删除了逗号后答案便正确了。

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

    1、设计思路

    第一步:定义函数。
    第二步:根据题意分析,要将一个数的整数部分和小数部分分开,首先会想到int由此得到整数部分,然后用原来的数减去整数部分便能得到小数部分。
    第三步:指针intpart指向x的整数部分,fracpart指向其小数部分。

    2、实验代码

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

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

    该题没有遇到问题。

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

    1、设计思路

    第一步:定义函数。
    第二步:如果没有找到与x相等的数则返回-1,所以先定义k并赋予初值-1。在比较中只有遇到与x相等的数时k才会被赋予其他的值否则最后返回-1。由于k为最小坐标,所以在遇到第一个与x相等的数后跳出循环。
    第三步:得出代码。

    2、实验代码:

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

    3、流程图

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


    这是我最开始的答案,结果是部分错误。因为我将return放在了for循环中并没有停止,所以出现了错误。修改无果找了其他出路。

    6-2 找最大值及其下标

    1、设计思路

    第一步:定义函数。
    第二步:将指针max指向a[]首元素地址,在for循环中当遇到大于它的数时重新赋值max且b指向其下标,一直循环到最后返回最后的max。
    第三步:得出代码。

    2、实验代码:

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

    3、流程图

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


    在该题中我出现的问题在于对max初值的定义的错误,我习惯性地将它定义为0了。而a表示a[i]的首元素地址,再将后面的与max比较。

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

    1、设计思路

    第一步:定义函数。
    第二步:本题其实就是三个小函数的集合,每一个函数都是在比较大小然后按照题意交换位置,小的数换到前面大的数换到后面,循环。
    第三步:输出。

    2、实验代码

    #include<stdio.h>
    void input(int *arr,int n)
    {
    int i=0;
    for(i=0;i<n;i++)
    {
    scanf("%d",&arr[i]);
    }
    } 
    void max_min(int *arr,int n)
    {
    int j=0,x=0,y=n-1;
    for(j=0;j<n;j++)
    {
    if(arr[x]>arr[j])
    {
    int swap;
    swap=arr[x];arr[x]=arr[j];arr[j]=swap;
    }
    }
    for(j=n-1;j>0;j--)
    {
    if(arr[y]<arr[j])
    {
    int temp;
    temp=arr[y];arr[y]=arr[j];arr[j]=temp;
    }
    }
    }
    void output(int *arr,int n)
    {
    int k=0;
    for(k=0;k<n;k++)
    {
    printf("%3d",arr[k]);
    }
    }
    

    3、流程图

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

    这道题我刚开始做时完全没有思路,觉得很复杂,所以是通过其他同学的帮助完成的。

    6-2 指针选择法排序

    1、设计思路

    第一步:定义函数。
    第二步:循环判断,并根据题意交换位置。
    第三步:结束循环。

    2、实验代码

    void sort(int *x,int n)
    {
    int i,j;
    int a;
    for(i=0;i<n;i++)
    {
    for(j=i;j<n;j++) 
    {
    if(*(x+i)<*(x+j))
    {
    a = *(x+i);
    *(x+i) = *(x+j);
    *(x+j) = a;
    }
    }
    }
    return 0;
    }
    

    3、流程图

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


    少了return 0,没有停止循环。

    6-1判断回文字符串

    1、设计思路

    第一步:定义函数。
    第二步:当不是空格时开始判断一直到最后,因为最后一位时所以减1,进行比较,如果k=i则返回true。
    第三步:结束代码。

    2、实验代码

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

    3、流程图

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


    没有考虑到不能时的情况。

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

    1、设计思路

    第一步:定义函数。
    第二步:前移。
    第三步:结束。

    2、实验代码

    void strmcpy( char *t, int m, char *s )
    {
    int i,j,k;
    k=strlen(t);
    strcpy(s,t);
    for(i=m-1;i>0;i--)
     {  
    for(j=i;j<k;j++){  
    *(s+j-1)=*(s+j);  
    }  
    }  
    *(s+k-m+1)=''; 
    }
    

    3、流程图

    4、本题调试过程遇到的问题及解决办法

    学习总结和进度

    1、总结两周里所学的知识点有哪些学会了?哪些还没有学会?
    本周我们主要学习将新知识点指针与数列、地址联系起来,作业都是与函数相关联的,对指针的运用还不熟悉。
    2、我的git地址是: https://coding.net/u/zhouxuan12

    3、点评
    http://www.cnblogs.com/exo123/p/8575595.html
    http://www.cnblogs.com/fengzx/p/8612048.html
    http://www.cnblogs.com/dx2017/p/8560765.html
    4、

  • 相关阅读:
    不同操作系统的宏定义区分
    WINDOWS下VS编译opencv并加载自定义模块
    基于模板匹配的马赛克检验
    [转]C++模板详解
    [Linux命令]Unix/Linux信号量的使用
    [C/C++基础]读写文件
    [Linux命令]查看Linux系统相关命令
    【Linux命令】查找命令
    【QT相关】文件、目录基础操作
    【MFC相关】图片显示
  • 原文地址:https://www.cnblogs.com/zhouxuan99/p/8597350.html
Copyright © 2011-2022 走看看