第二次作业

指针与数组循环移动
本文分享了在学习指针过程中遇到的难点,通过解决数组元素循环移动的问题,强调了预习和理解基础知识的重要性。同时,提醒在编程时注意审题,避免因小错误浪费过多时间。

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

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

转载于:https://www.cnblogs.com/orcking/p/10082261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值