平海ovo 2018-11-07 13:55 采纳率: 50%
浏览 442
已采纳

为什么第一种做不出来,和第二种有什么区别?

 #include <stdio.h>
void P(int x[])
{
    int m,n,t;
        scanf("%d%d",&m,&n);
        t=x[m];
    x[m]=x[n];
    x[n]=t;

}
void R(int x[],int y)
{    int u;
    for(int i=0;i<y/2;i++)
    {u=x[i];
    x[i]=x[y-1-i];
    x[y-1-i]=u;
    }


}
void D(int x[],int y)
{
        int t;
        scanf("%d",&t);
    for(int i=0;i<y;i++)
    x[i]/=t;
}
void M(int x[],int y)
{
        int t;
        scanf("%d",&t);
    for(int i=0;i<y;i++)
    x[i]*=t;
}
void S(int x[],int y)
{    int t;
        scanf("%d",&t);
    for(int i=0;i<y;i++)
    x[i]+=x; 
}


int main()
{
    int n,m,i,j;
    int p[1000]={0};
    scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
    scanf("%d",&p[i]);
    char a;
        for(j=0;j<m;j++)
    {

        getchar();
        a=getchar();
        switch(a)
    {
        case'S':S(p,n);break;
        case'M':M(p,n);break;
        case'D':D(p,n);break;
        case'R':R(p,n);break;
        case'P':P(p);break;
    }
    }
    for(i=0;i<n;i++)
    {
    printf("%d",p[i]);
    if(i!=n-1)
    printf(" ");
}

 } 
 #include <stdio.h>
int main()
{
    int n,m,i,j,s;
    int p[1000]={0};
    scanf("%d%d",&n,&m);
        for(i=0;i<n;i++)
    scanf("%d",&p[i]);
    char a;
        for(j=0;j<m;j++)
    {

        getchar();
        a=getchar();
        switch(a)
    {
        case'S':scanf("%d",&s);for(i=0;i<n;i++)p[i]=p[i]+s;break;
        case'M':scanf("%d",&s);for(i=0;i<n;i++)p[i]=p[i]*s;break;
        case'D':scanf("%d",&s);for(i=0;i<n;i++)p[i]=p[i]/s;break;
        case'R':for(i=0;i<n/2;i++){int u;
        u=p[i];
        p[i]=p[n-1-i];
        p[n-i-1]=u;

    }
          break;
        case'P':{
                    int m,n,t;
                scanf("%d%d",&m,&n);
                 t=p[m];
                p[m]=p[n];
                p[n]=t;break;}
    }
    }
    for(i=0;i<n;i++)
    {
    printf("%d",p[i]);
    if(i!=n-1)
    printf(" ");
}

 } 

两种方法都是解决同一个问题,为什么第二个能过,第一个出错了呀,求大神指点

  • 写回答

2条回答 默认 最新

  • SKy—weixin 2018-11-07 15:51
    关注

    void S(int x[], int y)
    {
    int t;
    int i; //在c语言中要求将变量定义在前面,c++当中可以定义在任何位置
    scanf("%d", &t);
    for ( i = 0; i < y; i++)
    x[i] += t;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办