锐格系统测试题(实验题指针与数组)

纵有疾风起

5872
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>

void pre(int *p);

int main()
{
    int a[3];
    int i,j;
    int *p;
    p=a;
    while(~scanf("%d %d %d",p,p+1,p+2))
   {   p=a;
       pre(p);
       for(i=0;i<3;i++)
       {
        printf("%d ",*(p+i));
       }
   }
   return 0;
}
void pre(int *p)
{   int t;
    int *p1;
    p1=p;
    int i,j;
    for(i=0;i<2;i++)
    {  for(j=i+1;j<3;j++)
        if(*(p1+i)>*(p1+j))
          {
             t=*(p1+i);
             *(p1+i)=*(p1+j);
             *(p1+j)=t;
         }
    }
}

这个是正确的,但是我又遇到了网管不同意的情况,仙女落泪,仙女不知道为啥
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
void sort(int *p,int n);
int main()
{   int i;
    int *p;
    int n=3;
    while(1)
    {    p=(int *)malloc(sizeof(int ));
         for(i=0;i<n;i++)
           {
            scanf("%d",&p[i]);
          }
        sort(p,n);
        for(i=0;i<n;i++)
        {
         if(i<n-1) printf("%d ",p[i]);
         else printf("%d",p[i]);
        }
       printf("\n");
   }  return 0;
}
void sort(int *p,int n)
{   int i,t;
    for(i=0;i<n;i++)
    {
        if(p[i]>p[i+1])
        {   t=p[i+1];
            p[i+1]=p[i];
            p[i]=t;
        }
    }
}

我不知道为啥,哭泣
5875
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
void pre(int *p,int n,int m);
int main()
{
  int a[101];
  int i,j,n,m;
  int *p;
  while(~scanf("%d %d\n",&n,&m))
  {    p=a;
       for(i=0;i<n;i++)
       {scanf("%d ",p+i);
       }
      p=a;
      pre(p,n,m);
  }
    return 0;
}
void pre(int *p,int n,int m)
{ int i,j;
   int t;
    int b[101];
    for(i=0;i<n;i++)
    {      if(*(p+i)>=m)
           {
           printf("%d ",*(p+i));
           }
    }
}

5873
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
void pre(int *p,int n,int max,int min);
int main()
{
  int i,max,min,a[11],n;
  int *p;
  while(~scanf("%d %d %d\n",&n,&min,&max))
  {  p=a;
     for(i=0;i<n;i++)
     { scanf("%d",p+i); }
     p=a;
     pre(p,n,max,min);
  }
return 0;
}
void pre(int *p,int n,int max,int min)
{    int i;
    for(i=0;i<n;i++)
{   if((*(p+i)<max)&&(*(p+i)>min))
    {  printf("1 ");   printf("%d\n",*(p+i));break;}
    else if(i==n-1)
    {  printf("0 ");
        printf("%d\n",*(p+i));
    }
}
}

5876
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>

int fun(char a[]){
    if(a[0]!='-'&&a[0]!='+'&&!(a[0]>='0'&&a[0]<='9'))
        return 0;
    int exponent=10,ans=0,flag=0;
    int cnt=1;
    if(a[0]=='-')
        flag=1;
    if(a[0]>='0'&&a[0]<='9')
        ans+=(a[0]-'0');
    while(a[cnt]>='0'&&a[cnt]<='9'){
        int temp=a[cnt]-'0';
        cnt++;
        ans*=exponent;
        ans+=temp;
    }
    if(flag==1)
        ans=-ans;
    return ans;
}

int main()
{
     char a[100];
     while(~scanf("%s",a)){
            int ans=fun(a);
            printf("%d\n",ans);
    }
    return 0;
}

5877指针与数组
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
void sort(float m,float *p,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        if(*(p+i)>=m)
        {
            printf("%.2f ",m);break;
        }
        printf("%.2f ",*(p+i));
    }

    for(;i<n;i++)
    {
        printf("%.2f ",*(p+i));
    }
    printf("\n");
}

int main()
{
    int n,i,j;
    float a[100];
    float *p;
    float m;
    while(~scanf("%d",&n))
    {  p=&a;
       scanf("%f",&m);
       for(i=0;i<n;i++)
       {
           scanf("%f",p+i);
       }
       sort(m,p,n);
    }

    return 0;
}

我刚开始试了试用普通的数组进行冒泡排序,也过了,真的比这个简单,但是人家让用指针,咱就用吧,然后就是我的新电脑时不时在锐格上有不符合网管什么什么的要求,我也不知道为啥,但是重新登陆就好了,之前问学长学长也解决了,可是就是没彻底,不过也能用,还有就是,这个题让好长时间都在写链表的我想起来了指针的一点点,很好,继续指针吧!!!!

5878指针与数组
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
int main()
{    int n,m,i,j;
     while(~scanf("%d%d",&n,&m))
     {double a[n][m];
  double *p=a;
        int i,j;
        for(i=0;i<n;i++)
           for(j=0;j<m;j++)
             scanf("%lf",p+i*m+j);
    int hang;
    int lie;
    double  max=0;
   for(i=0;i<n;i++)
        { for(j=0;j<m;j++)
        {
           if(max<*(p+(i*m)+j))
          {max=*(p+(i*m)+j);hang=i;lie=j;}
        }
     }
printf("%.2lf %d %d\n",*(p+hang*m+lie),hang+1,lie+1);
 }
  return 0;
}

5879
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
//void pre(char *p,char *p1,int n,int m);
int main()
{
    int n,m,i;
    char a[101],b[101];
    char *p,*p1;
    while(scanf("%s",a)!=-1)
    {
        p=&a;//p1=&b;
      scanf("%d %d",&n,&m);
       for(i=n-1;i<m;i++)
       {
           printf("%c",*(p+i));
       }
       printf("\n");
    }
    return 0;

}

好啦,这里就告一段落了,这一节唤醒了我之前对指针的学习
加油!开启下一章

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值