_Phoebe__ 2022-01-28 13:54 采纳率: 96.9%
浏览 45
已结题

这个代码跑不出来 想知道哪里错了

输入01序列 长度为n
将随便两个0和1交换位置 使最后的序列和原序列不一样


#include<stdio.h>
int main(){
    int n,cnt1=0,cnt2=0;
    int a[2000000]={0},a1[2000000]={0},a2[2000000]={0};
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
        }
    for(int i=0;i<n;i++){
        for(int j=i+1;j<=n;j++){//想的是如果i和i+1位置一个是1一个是0就交换
        if(a[i]==1&&a[j]==0){
    int temp;
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
        }
    }
}
    for(int i=0;i<n;i++)
    printf("%d",a[i]);
    return 0;
    
} 

谢谢大家!

  • 写回答

4条回答 默认 最新

  • 於黾 2022-01-28 14:55
    关注

    既然是随便2个,那你不需要双重for循环
    就让第0个和其中的某一个交换,反正只要不一样不就行了
    交换完就break啊,不要一直这样交换下去

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

报告相同问题?

问题事件

  • 系统已结题 2月15日
  • 已采纳回答 2月7日
  • 创建了问题 1月28日