平海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 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)