首页 > 其他分享 >指针与整型数组

指针与整型数组

时间:2022-10-08 12:14:36浏览次数:40  
标签:10 int void num 整型 数组 指针

1. 输入10个整数,将其中最小的数与第一个数对换,把最大的一个数与最后一个数对换。

#include <stdio.h>
int main()
{
    void in_num(int *x);
    void out_num(int *x);
    void exchange(int *x);
    int a[10];
    in_num(a);
    exchange(a);
    out_num(a);
    return 0;
}
void in_num(int *x)
{
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%d",x+i);
    }
}
void out_num(int *x)
{
    int j;
    for(j=0;j<10;j++)
    {
        printf("%d ",*(x+j));
    }
}
void exchange(int *x)
{
    void swap(int *p1,int *p2);
    int min,max,k,m,note_min,note_max;
    min=*x;
    for(k=0;k<10;k++)
    {
        if(*(x+k)<min)
        {
            min=*(x+k);
            note_min=k;//记住最小值在数组中的位置
        }
    }
    swap(x+note_min,x);
     max=*x;
     for(m=0;m<10;m++)
     {
         if(*(x+m)>max)
         {
             max=*(x+m);
            note_max=m;//记住最大值在数组中的位置
         }
     }
     swap(x+note_max,x+9);
}
void swap(int *p1,int *p2)
{
    int tmp;
    tmp=*p1;
    *p1=*p2;
    *p2=tmp;
}

2. 通过指针变量输出整型数组的10个元素。
要求:用指针变量指向数组元素,通过改变指针变量的值,先后指向数组各元素。

#include <stdio.h>
int main()
{
    int a[10],*p,i;
    p=&a[0];
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<10;i++,p++)
    {
        printf("%d ",*p);
    }    
    return 0;
}

3. 将数组a中n个整数按相反顺序存放。

#include <stdio.h>
int main()
{
    void swap(int *p1,int *p2);
    int a[100],*p,i,note;
    p=&a[0];
    for(i=0;i<100;i++)
    {
        scanf("%d",&a[i]);
        if(getchar()=='\n')//处理不定数组,若等于字符串\n时停下
        {
            note=i+1;//标记数组长度
            break;
        }
    }
    for(i=0;i<=note/2;i++)
    {
        swap(&a[i],&a[note-1-i]);//交换索引之和为n-1的元素对
    }
    for(i=0;i<note;i++)
    {
        printf("%d ",*(p+i));
    }
    return 0;
}
void swap(int *p1,int *p2)
{
    int tmp;
    tmp=*p1;
    *p1=*p2;
    *p2=tmp;
}

4. 用指针方法对10个整数按由大到小排序。(附前缀代码)

//StudybarCommentBegin
#include <stdio.h>
int main()
{
void input(int *p);
void sort(int *p);
void output(int *p);
int a[10],*p=a;
input(p);
sort(p);
output(p);
return 0;
}
//StudybarCommentEnd
void input(int *p)
{
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%d",p+i);
    }
}
void sort(int *p)
{
    int i,j,tmp;
    for(j=0;j<9;j++)//冒泡排序,避免索引i,j写反,及终止条件为n-1
    {
        for(i=0;i<9-j;i++)
        {
            if(*(p+i)<*(p+i+1))
            {
                tmp=*(p+i);
                *(p+i)=*(p+i+1);
                *(p+i+1)=tmp;
            }
        }
    }
}
void output(int *p)
{
    int i;
    for(i=0;i<10;i++)
    {
        printf("%d ",*(p+i));
    }
}

-END

标签:10,int,void,num,整型,数组,指针
From: https://www.cnblogs.com/peitongshi/p/16768517.html

相关文章

  • 【我开了C语言的金手指】三.数组
    (一)一维数组的创建和初始化1.数组的创建数组是一组相同类型元素的集合,其创建方式为:​​type_tarr_name[const_n]​​注:type_t是数组类型const_n是一个常量表达式,用来指定数......
  • 指针与函数
    1.通过指针变量访问整型变量#include<stdio.h>intmain(){inta,b;int*p1,*p2;scanf("a=%d,b=%d",&a,&b);p1=&a;p2=&b;printf("*p1=......
  • js数组去重,id相同对某值相加合并
    js数组去重,id相同对某值相加合并案例1:假设需要处理的数组结构。letarr=[{id:'1',value:10},{id:'1',value:20},{id:'2',value:10}]//最终想要的......
  • 453 最小操作次数使数组元素相等
      思路:题目说只需要找出让数组所有元素相等的最小操作次数,所以不需要考虑数组中各个元素的绝对大小,即不需要真正算出数组中所有元素相等时的元素值,只需要考虑数组中元......
  • 数组左方的区域
    数组左方的区域求一个数组左方的所有区域的和以及平均数第一种推荐算法:超级无敌简单暴力法O(n)(最优解解法)就是:每一行单独计算,然后把每一行单独计算的值给累计起来......
  • 剑指 Offer 03. 数组中重复的数字
    力扣链接:剑指Offer03.数组中重复的数字acwing链接最初的思路是,将所有数据放入桶中,数据存在,数据桶值就++,有数据重复就retrunnums[i],无数据重复就return-1,且需......
  • 困难-4. 寻找两个正序数组的中位数
    这题难了我几天,重写了几遍代码,一直感觉不对,算法复杂度没降下来,直到今天10月7日完成### 解题思路不停判断区间1是否相交区间2假如中位数存在num1中,不停地对nums1取中......
  • 【C语言】初始数组
    ......
  • 攻防世界favorite_number(php数组溢出+正则m绕过+Linux命令绕过)
    <?php//php5.5.9$stuff=$_POST["stuff"];$array=['admin','user'];if($stuff===$array&&$stuff[0]!='admin'){$num=$_POST["num"];if(preg_ma......
  • P3919 【模板】可持久化线段树 1(可持久化数组)
    还是用主席树来做(因为提到不同的版本),这时候的主席树不是以权值为下标的,就是普通的线段树,维护范围1~n,i存的是a[]中的数。1#include<bits/stdc++.h>2usingnamespac......