PTA 7-1 逆置一维数组 (10 分)
编写程序,以指针的方式,就地逆置一维数组。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先输入数据个数n,然后输入n个整数。
输出格式:
对于每组测试,在一行上输出逆置之后的结果。数据之间以一个空格分隔。
样例">输入样例:
2
4 1 2 5 3
5 4 3 5 1 2
输出样例:
3 5 2 1
2 1 5 3 4
不懂是指针的话可以理解一下这个,这是题目的常规做法:
#include <stdio.h>
int main()
{int a,b=0,c=0,p[100],d,e,m;scanf("%d",&a);for(;b<a;b++){scanf("%d",&m);for(c=0;c<m;c++){scanf("%d",&p[c]);}for(c=0,d=m-1;c<m/2;c++,d--){e=p[d];//一定要除以2,不然没变化p[d]=p[c];p[c]=e;}for(c=0;c<m;c++){if(c==0){printf("%d",p[c]);}else{printf(" %d",p[c]);}}printf("\n");}return 0;}
这是题目的指针做法(数组指针):
#include <stdio.h>
int main()
{int a,b=0,c=0,d,e,m;scanf("%d",&a);for(;b<a;b++){scanf("%d",&m);int p[m];int (*k)[m];//数组指针 k=&p;//p交地址给k指针 for(c=0;c<m;c++){scanf("%d",&p[c]);}//用指针代替数组运算 for(c=0,d=m-1;c<m/2;c++,d--){//c<m/2中的m一定要除以2,不然没变化e=(*k)[d];(*k)[d]=(*k)[c];(*k)[c]=e;}for(c=0;c<m;c++){if(c==0){printf("%d",p[c]);}else{printf(" %d",p[c]);}}printf("\n");}return 0;}
最后:
第一个代码是我以前没注意看是用指针写的,反正对了我就没理了
新学期,又来了很多人学习C语言,看到那么多人都搜到了我这一题,我感觉就不好意思了,特地赶回来写一下标准的答案,给予你们借鉴。
2022.11.28
最近抽出点时间,本来想改进的,想了想之后,我觉得这样已经很好了
首先呢,这道题指针的话,其实本意是让咱们熟悉一下指针,并不要求必须用指针,
指针在我看来,主要在数据结构方面,比较复杂的情况才用到,比如顺序表,链表,树等等之类,其中的插入删除操作是用指针操作的,不必因为这道题,而感觉指针很难理解,下次这种情况用非指针方式写出来即可,指针只是不适合这个情况,肯定也写得出,就是比非指针方式更加麻烦,加油。
2023.4.13
PTA 7-1 逆置一维数组 (10 分)相关推荐
- 1.6编程基础之一维数组 10大整数加法
1.6编程基础之一维数组 10大整数加法 OpenJudge - 10:大整数加法 1168:大整数加法 信息学奥赛一本通(C++版)在线评测系统 P1601 A+B Problem(高精) A+B ...
- 【PTA】6-1 顺序表基本操作(10 分)
题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...
- PTA程序设计基础6 7-2 字符串合成 (10 分) C语言解法
用户输入一个字符串,将下标为偶数的字符串提出来合并成一个新的字符串A,再将下标为奇数的字符串提出来合并成一个新的字符串B,再将字符串A和B连接起来输出. 输入格式: 输入一行字符串,如:abcdefg ...
- pta 6-7 使用函数求最大公约数 (10 分)
本题要求实现一个计算两个数的最大公约数的简单函数. 函数接口定义: int gcd( int x, int y ); 其中x和y是两个正整数,函数gcd应返回这两个数的最大公约数. 裁判测试程序样例: ...
- C语言:数组的初始化,打印,逆置(使用函数实现)。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h>//void Init(int a[], int b) //数组初始化函数(已注释), ...
- 顺序表2:顺序表的逆置
一.顺序表逆置基本逻辑和实现 1.顺序表逆置的逻辑 将顺序表丛中间一分为二. 如果这个顺序表元素个数为i: 让第一个元素和最后一个元素互换, 第二个和倒数第二个元素互换: - 第i/2个元素和第i/2 ...
- 实现带头结点的单链表元素就地逆置
每日数据结构基础题2-1 题目:试编写在带头结点的单链表L中对链表的元素进行逆置(所谓就地是指辅助空间复杂度为O(1)) 方法一 完整代码如下: 方法二 完整代码如下: 题目:试编写在带头结点的单链表 ...
- C语言编程>第二十一周 ② 请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中。
例题:请补充main 函数,该函数的功能是:把一维数组中的元素逆置,结果仍然保存在原数组中. 注意:仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容. 代码如下: #include& ...
- 将数组前n个和后m-n个整体逆置的实现
#include <iostream>using namespace std;/*void inverst(int *R,int s,int t){int k,w;for(k=s;k< ...
最新文章
- 图书管理系统5W1H
- 深入浅出任务队列机制,非常浅
- linux(六)之文本操作
- linux下svn客户端安装及环境配置
- TabLayout基本属性全解
- [ACNOI2021]OEIS yyds
- MySQL命令行登录数据库
- 开源网络负载测试工具测评
- Character controller
- 基于GitLab+Docker+K8S的持续集成和交付
- 不用安装Excel使用PSExcel自动处理Excel文件
- 一篇文章轻松搞定SpringSecurity权限框架!
- ai替换混合轴例子_可解释的vs可解释的AI:一个直观的例子
- 阿里云一键登录(对接移动端) PHP
- 【Excel】如何使用RegexString正则表达式
- 站长天下:buyren网上购物论坛的发展
- MT4如何添加交易品种?
- mysql中floa类型数据和mysql命令
- C语言 乒乓球比赛问题
- python小游戏 五子棋小游戏设计与实现