第二次作业

学习指针的时候,预习部分做的不够充分,课上存在的知识漏洞也没有及时弄懂,导致指针这一章节的学习走了许多弯路。

如cpp9编程第三题

7-3 数组元素循环移动 (15 分)

在主函数中输入10个整数到数组中,调用函数完成将数组循环移动k位(要求函数参数为⑴数组名 ⑵数组元素的个数 ⑶循环移动的位数k)。当K>0时,实现循环右移;当K<0时,实现循环左移。循环右移一位的意义是:将数组全体元素向后一个下标位置移动一个元素的位置,原数组最后一个元素移动到数组最前面第0个元素的位置。提示:当K<0时,转换成等价的循环右移。要求函数的形参是指针变量。

  以下是代码。

#include<iostream>
using namespace std;
void swap(int a[],int k)
{
 if(k<0)
 {
  int n=(-k);int b[10];int j=0;
  for(int i=0;i<n;i++,j++)
  b[j]=a[i];
  for(int i=0;i<9-n+1;i++)
  a[i]=a[i+n];
  j=0;
  for(int i=9-n+1;i<10;i++,j++)
  a[i]=b[j];
 }
 if(k>0)
 {
  int b[10];int j=0;
  for(int i=9-k+1;i<10;i++,j++)
  b[j]=a[i];
  for(int i=9;i>=k;i--)
  a[i]=a[i-k];
  j=0;
  for(int i=0;i<k;i++,j++)
  a[i]=b[j];
 }
}
int main()
{
 int a[10],k;
 for(int i=0;i<10;i++)
 cin>>a[i];
 cin>>k;
 swap(a,k);
 for(int i=0;i<10;i++)
 {
  if(i==9) {cout<<a[i];break;}
 cout<<a[i]<<" ";}
 return 0;
}

关键一:关于数据右移和左移问题,已经在前面章节出现过详细讲解。可当时没有及时消化,导致思路卡顿了很长时间,但是这样的基础问题是应该立刻想出解法并打出代码的。这也给我准备期末考试敲醒了警钟。

关键二:没有看清输出格式的要求。循环输出时直接

for(int i=0;i<10;i++)

{  cout<<a[i]<<" ";} 这样的结果是最后一个数字后多打了一个空格。但是就是这样一个小问题,让我检查了许久以为是中间的思路出现了问题,这也给了我提示:考试的时候切记审题,务必注意输出格式。

posted @ 2018-12-07 12:37  FITZ陈思宇  阅读(163)  评论(0编辑  收藏  举报