平海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条)

报告相同问题?

悬赏问题

  • ¥30 编写程序,使用XPath爬取模拟图书网站的数据
  • ¥15 安卓13,动态广播无法接受
  • ¥50 docker运行容器端口如何映射(不重启服务、不重建容器)
  • ¥30 使用XPath爬取模拟图书馆网站的数据
  • ¥50 基于TwinCAT3实现力传感器的实时读取
  • ¥20 python求解八元一次不定方程,无数解中随机输出几组即可(相关搜索:用python)
  • ¥50 libreoffice导出PPTX到PDF中的错误换行问题
  • ¥15 python实现网页视频下载
  • ¥15 如何通过深度图获得物体的完整、正确点云?
  • ¥15 有没有操作系统适用白丁的经典的书籍,如何解决?(标签-学习)