2024.03.11/03.13 一维数组练习题一

本文介绍了如何在一维数组中实现正序、反序输出以及平移数据的操作,包括C++代码示例,并强调了初学者在教学后可能会遇到的问题,如语法格式、数组长度控制等。
摘要由CSDN通过智能技术生成

数组输入,输出,访问

用一维数组输入10个数进去,再进行输出(正序,反序);

#include<bits/stdc++.h>
using namespace std;
int main(){

int a[10];
for(int i=0;i<10;i++) 
{
    cin>>a[i];
}
cout<<endl;
for(int i=0;i<10;i++) 
{
    cout<<a[i];
}
cout<<endl;
for(int i=9;i>=0;i--) 
{
    cout<<a[i];
}
 return 0;
}

反序输出

【题目描述】

输入n个数,要求程序按输入时的逆序把这n个数打印出来,已知整数不超过100个。也就是说,按输入相反顺序打印这n个数。

【输入】

输入一行共有n个数,每个数之间用空格隔开。

【输出】

如题要求:一行,共有n个数,每个数之间用一个空格隔开。

【输入样例】

1 7 3 4 5

【输出样例】

5 4 3 7 1

解法:由于不知道有多少数要输入,所以将输入作为循环条件,当换行跳出循环。反序输出时,从用到的最后一个下标开始访问,往前访问输出。

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[100]={};
    int i=1,t=0;
    while(cin>>a[i]) 
    {
        t++;
        i++;
        if(getchar()==10) break; //换行ASCII码 10    
    }
    for(int i=t;i>=1;i--)
    {
        cout<<a[i]<<" ";
    }

 return 0;
}
  • LF意思是linefeed,换行,\n,ASCII码为10

  • getchar(): 这是一个标准库函数,用于从标准输入(通常是键盘)读取一个字符,并返回其ASCII值。

平移数据

【题目描述】

将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。

【输入】

第一行为数组a的元素个数;

第二行为n个小于1000的正整数。

【输出】

平移后的数组元素,每个数用一个空格隔开。

【输入样例】

10
1 2 3 4 5 6 7 8 9 10

【输出样例】

2 3 4 5 6 7 8 9 10 1

  1. 解法1:真正改变数组。用一个变量保存第一个元素,从第二个元素开始,依次赋值给前一个元素。再把第一个元素的值赋值给最后一个元素。

  2. 解法2:输入时直接按照平移后效果存放。然后直接输出

  3. 解法3:不改变数组,只是从第2个元素开始输出到最后,再输出第一个元素。

  4. 其他解法可自行思考尝试。

#include<iostream>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[100]={};
    /*//法一:输入后改变数组结构,暂存第一个元素,后面元素前移,再将暂存的第一个元素给最后一个元素 
    for(int i=0;i<n;i++)
    {
        cin>>a[i]; 
     } 
    int temp=a[0];
    for(int i=1;i<n;i++)
    {
        a[i-1]=a[i];
    }
    a[n-1]=temp;
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
    */
    /*//法二:输入时直接按照平移后效果存放。然后直接输出 
    cin>>a[n-1] ;
    for(int i=0;i<n-1;i++)
    {
        cin>>a[i];
    }
    for(int i=0;i<n;i++)
    {
        cout<<a[i]<<" ";
    }
*/

    //法三:输入时按顺序输入,输出从第二个元素开始输出,最后输出第一个元素
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
     } 
     for(int i=1;i<n;i++)
     {
         cout<<a[i]<<" ";
     }
     cout<<a[0];

        return 0;
}

教学后记

: 由于刚学一维数组,普遍对语法格式,以及数组长度,访问控制不够熟悉。需要多画图辅助去分析。(教学后记用来自己做完后报错了找不出错误则从这几点继续查找错误语句修正代码

  1. 定义一位数组int a[100]={ }; 的等号 ‘ = ’容易遗漏
  2. 若从下标i=0开始遍历数组,则长度为n时,范围是i<n,容易把第0个下标的元素位置遗漏或忽略,导致访问出错,输出结果就不对。
  3. 个别还是遗漏了语句最后的 ‘ ;’结束符号!
  4. 使用时注意有没有超出数组长度。
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值