账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    小白 C语言 OJ不能跑 本地可以 怎么搞
    33
    0
    int Setbit(int* A,int RowSize){
        int i = 0;int Sum = 0;
        for(i = 0;i < RowSize;i++)
            if(A[i] == 0)
            Sum ^= 1<<(RowSize-i-1);
        return Sum;
    }//Setbit;
    
    bool Readbit(int S,int i,int RowSize){
        return S&( 1 <<  (RowSize-1-i));
    }//readbit;
    
    void setzero(int** matrix,int RowSize,int ColSize,int Col, int Row){
        int Z = 0;
        for(Z = 0; Z < RowSize;Z ++)  *(*(matrix+Col)+Z) = 0; 
        for(Z = 0;Z < ColSize;Z ++) *(*(matrix+Z)+Row) = 0;
    }//setzero
    
    void setZeroes(int** matrix, int matrixRowSize, int matrixColSize) {
        
        int a,b,c;int Z = 0;
        a = 0;b = c = 0;
        int *s = (int*)calloc(matrixColSize,sizeof(int));
        for(a = 0; a < matrixColSize; a++){
            int *A = (int*)malloc(sizeof(int)*matrixRowSize);
            memcpy(A,matrix[a],matrixRowSize*sizeof(int));
            s[a] = Setbit(A,matrixRowSize);    
        }//setbit
        
        for(a = 0; a < matrixColSize; a++){
            if(s[a] !=0 ) 
                for(b = 0; b < matrixRowSize; b++)
                    if( Readbit(s[a],b,matrixRowSize))
                    setzero(matrix,matrixRowSize,matrixColSize,a,b);    
        }
        free(s);
    }
    int main(){
        
            int N,M;int i,j;i = j = 0;
        scanf("%d %d",&N,&M);
        int **matrix = (int**)malloc(sizeof(int*)*N);
        for(i = 0; i < N;i ++){
            matrix[i] = (int*)calloc(M,sizeof(int));
            for(j = 0; j < M; j++){
                scanf("%d",&matrix[i][j]);
            }
        }        
        printf("N === %d M === %d\n",N,M);
        for(i = 0; i < N; i++){
            for( j = 0; j < M; j ++){
                printf("matrix[%d][%d] == %d\t",i,j,matrix[i][j]);
            }
            printf("\n");
        }//打印读入的二维数组
        
        setZeroes(matrix,M,N);
        
        for(i = 0; i < N; i++){
            for( j = 0; j < M; j ++){
                printf("matrix[%d][%d] == %d\t",i,j,matrix[i][j]);
            }
            printf("\n");
        }//打印置零后的二维数组
        return 0;
    }

    请问,平时用的Ubuntu14.04 编程,每次遇到相同问题,该如何在本地,用那些命令 调试。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 换我堕落ミ 普通会员 1楼
      当你的C语言代码在本地编译和运行没有问题,但在OJ(在线评测系统)上无法通过时,可能存在以下几种情况: 1. **环境差异**:OJ的编译器版本、操作系统环境可能与你的本地环境不同,导致某些特性或库函数的支持程度不同。例如,一些高级的C11特性或者特定编译器扩展功能在OJ的环境中可能不支持。 2. **输入输出格式不符**:OJ对程序的标准输入输出有严格的要求,如scanf()、printf()等函数的使用需要严格按照题目要求的格式进行,否则可能会因为读取或输出格式错误而被判题系统判定为错误。 3. **代码逻辑错误**:虽然代码在你的测试数据下能够正确运行,但可能存在一些边界条件或特殊情况没有处理好,当OJ使用更全面或特殊的测试数据时,这些问题就会暴露出来。 4. **内存限制**:OJ通常会对程序的运行时间和空间占用有限制,如果你的代码在大数据量下存在内存泄漏或者时间复杂度过高的问题,在OJ上就可能无法通过。 5. **代码规范**:部分OJ平台对于代码风格、命名规则等有一定要求,如果不符合也可能导致无法通过。 解决办法: - **仔细阅读题目描述及样例输入输出**,确保对题目的理解和解题思路无误,并且输入输出格式符合要求。 - **检查并修改代码中可能存在的边界条件问题**,增强代码的健壮性。 - **尽量避免使用可能导致内存泄漏或效率低下的编程方式**,优化算法以降低时间复杂度和空间复杂度。 - **了解OJ使用的编译器和相关环境设置**,并尽可能使自己的代码兼容这些环境。 - **提交前,利用多种测试数据进行充分的本地测试**,包括边界条件、特殊案例等。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部