第二次博客作业

第二次博客作业

目前学习中,存在的最大知识漏洞就是有关指针的问题。漏洞产生的原因是预习时候没懂的地方上课的时候仍然没弄明白,可能和自身原因有关,上课时候精力不够集中。因为这个漏洞,近期作业中出现的很多有关指针的并不复杂的题目也出了问题。

具体例子如下面这道题:本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:

void strmcpy( char *t, int m, char *s );
函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

#include <iostream>
#include <cstring>
using namespace std;
#define MAXN 20
 
void strmcpy( char *t, int m, char *s );
 
int main()
{
    char t[MAXN], s[MAXN];
    int m;
 
    cin>>m;
    cin.ignore();
    cin.getline(t,MAXN);
    strmcpy(t,m,s);
    cout<<s;
 
    return 0;
}
 
/* 你的代码将被嵌在这里 */
 

这题思路很简单,但考点很明确就在于指针

以下是我的程序:void strmcpy( char *t, int m, char *s )

{  int i,j,len;

   strcpy(s, t);

     len = strlen(s);

          for(i=m-1;i>0;i--)

          {    for(j=i;j<len;j++)

          {       *(s+j-1)=*(s+j);    } 

          }  *(s+len-m+1)='\0';}

就是因为对指针的不明确,最后的寻找复制对象的步骤一开始写不出来。

下面是一道我认为有难度的题目,就是涉及到函数和指针应用的。

数组元素换位 (15 分)

在主函数中输入n个整数到数组中,调用函数(要求被调参数为⑴数组名 ⑵数组元素的个数)完成将数组中的最小值与第0个元素对调,将数组中的最大值与最后一个元素对调,主函数中输出调换后的数组。要求函数用指针变量作形参。

输入格式:

第一行是一个整数n,表示元素个数; 第二行是n个整数,表示数组的n个元素。

输出格式:

输出调换元素后的数组,以空格分隔。

以下是我的代码:

#include <iostream>

using namespace std;

void change(int *a,int n)

{

       int min=0,i;

       for(i=1;i<n;i++)

       {

              if(*(a+i)<*(a+min))

              {

                     min=i;

              }

       }

       int t;

       t=*a;

       *a=*(a+min);

       *(a+min)=t;

      

       int max=0,k;

       for(i=1;i<n;i++)

       {

              if(*(a+i)>*(a+max))

              {

                     max=i;

              }

       }

       int l;

       l=*(a+n-1);

       *(a+n-1)=*(a+max);

       *(a+max)=l;

}

int main()

{

       int n;

       cin >> n;

       int a[n];

       int i;

       for(i=0;i<n;i++)

       {

              cin >> a[i];

       }

       change(a,n);

       for(i=0;i<n;i++)

       {

              cout << a[i];

              if(i<n-1)

              {

                     cout << " ";

              }

       }

}

解题的时候,首先看到针对很多不同情况设计的程序,因此为了程序清晰,决定先设计两个函数,使其达到交换最小数和最大数的作用。在设计函数是,思路是先利用循环语句逐一比较,找出最大和最小值,用数组来代替具体的数。在主函数中,先输入总数,来确定数组中数的个数,然后运用函数解决问题。最开始我的问题在于如何找到最大和最小值,并且由于对数组不熟悉,所以不会将两个数进行交换。后来翻书和利用搜索引擎解决了问题。

以上,就是我第二次博客作业全部内容。

posted on 2018-12-08 22:08  Mr-Miller  阅读(147)  评论(0编辑  收藏  举报