PTA c语言分享(第五弹:实验5 一维数组)

不知不觉到了一维数组了,把c语言比作打游戏的话

接下来就是尝试去打基础小怪了!加油把,骚年!!!

 1.

#include <stdio.h>

int main(){
    int N,n,i,k,min,max,t=0,b=0,a[10],h;
    scanf("%d",&N);
    getchar();
   
    for(i=0;i<N;i++)
    {
       scanf("%d ",&a[i]);
       }
    
       min=a[0];
       max=a[0];
       
    for(k=1;k<N;k++)
       {
         if(a[k]<=min)
         {
           min=a[k];
           t=k;
         }
       }
        
        h=a[0];
        a[0]=a[t];
        a[t]=h;
     
    for(k=1;k<N;k++){
       if(a[k]>=max)
       {max=a[k];
       b=k;}
       }
      
       h=a[N-1];
       a[N-1]=max;
       a[b]=h;
       
     for(i=0;i<N;i++)
     {printf("%d ",a[i]);}
       
    return 0;
}

2.

#include <stdio.h>

int main(){
    int N,i,a[100],x,k,t,j,b=0;
    scanf("%d",&N);
   
   
    for(i=0;i<N;i++)
    {
      scanf("%d ",&a[i]);
    }
    scanf("%d",&x);
       
    for(k=0;k<N;k++)
    {
       if(x<=a[k])
       {
        t=k;
        break;
       }
       if(x>a[N-1]){b=1;break;}
    }
    
     if(b==0)
     {
       for(j=N;j>k;j--)   
       {
        a[j]=a[j-1];
       }
       a[t]=x;
     }

    if(b==1){a[N]=x;}
    
    for(i=0;i<N+1;i++)
    {printf("%d ",a[i]);}
    
    return 0;
}

3.

#include <stdio.h>

int main(){
    int n,m,i,a[100],t,j,c=0;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {scanf("%d ",&a[i]);
    }
    scanf("%d",&m);
    
    
    for(i=0;i<n;i++)
    {   if(a[i]==m)
       {
        for(t=i;t<n-1;t++)
        { a[t]=a[t+1]; }
        
        n--;
        i--;
       
        for(j=0;j<n;j++)
       {printf("%d ",a[j]);}
       
        printf("\n");
        c=1;
       }
    }
    
   if(c==0)
   {
    for(j=0;j<n;j++)
    printf("%d ",a[j]);
   }
   
return 0;
}

4.

#include <stdio.h>

int main(){
    int m,a[10],n,b[10],i,t,j,c[100],g,z;
    scanf("%d",&m);
    for(i=0;i<m;i++)
    {scanf("%d ",&a[i]);
    }
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {scanf("%d ",&b[i]);
    }
    g=m+n;
    //接收数据
    for(i=0;i<m;i++)
    {   c[i]=a[i]; }
    
    for(i=0;i<n;i++)
    {   c[i+m]=b[i]; }
        
    //删除多余数据    
    for(i=0;i<g-1;i++)
    {
        for(t=i+1;t<g;t++)
        {
            if(c[i]==c[t])
            {
              for(j=t;j<g;j++)
              {
                c[j]=c[j+1];
              }
            i--;       //注意i代表的c[i]的值前移了一位,所以要保证未比较数值比较,需-1
            g--;      //同理,g代表数组个数-1
            }
        }
    }
    
    //比较大小
    for(i=0;i<g-1;i++)
    {
        for(j=i+1;j<g;j++)
        {
           if(c[i]>c[j])
           {
              z=c[j];
              c[j]=c[i];
              c[i]=z;
           }
        }
    }
    
    for(i=0;i<g-1;i++)
    {   
        printf("%d ",c[i]);
    }
    printf("%d",c[g-1]);
    return 0;
}

5.

#include <stdio.h>

int main(){
    int i,t,a[10],m,c=1,di=0,k;            //m表示次数,c是比较量
    for(i=0;i<10;i++)
    {  scanf("%d ",&a[i]);}
    
  
    for(i=0;i<9;i++)
    {     m=1;
        for(t=i+1;t<10;t++)
        {if(a[i]==a[t])
            m++;                   //m负责每个数的重复次数计数          
          
        }      
      if(m>c)               //c负责输出时把最多次数的次数输出
         {
            c=m;
            di=i;
         } 
    }
   
    printf("%d出现了%d次",a[di],c);
    return 0;
}

6.

int main(){
    int a[4],i,j,k;

    for(i=0;i<4;i++)
    scanf("%d",&a[i]);

    for(k=0;k<3;k++)  //重复三次 怕连续三个均为0
    {
        for(i=0;i<3;i++)
        {
           if(a[i]==0)//当该格为空的时候
           {
              for(j=i;j<4;j++)//右边的往左移动,a[3]此时理论上接受a[4],但a[4]不存在
              {
                a[j]=a[j+1];
              }
            a[3]=0;
           }
        }
    }

    for(i=0;i<3;i++)
    {
        if((a[i]==a[i+1])&&(a[i]!=0))//如果前后值相等,前后相加放前面
        {
           a[i]+=a[i+1];
           for(j=i+1;j<4;j++)
           {
             a[j]=a[j+1];//右边的往左移动,a[3]此时理论上接受a[4],但a[4]不存在
           }
           a[3]=0;        //记得最后一位a[3]放个0
        }
    }

    for(i=0;i<4;i++)
    {
       if(i==3)
       printf("%d\n",a[i]);
       else
       printf("%d ",a[i]);
    }

    return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值