平海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 爬虫爬取网站的一些信息
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错