可执行文件的文本输出部分显示在控制台

时间:2017-02-06 11:18:00

标签: c loops printing console dev-c++

我编写了一个简单的C程序,可以打印几个计算的输出,如下所示。问题是,我看不到具有预期值的输出,似乎输出只能部分看到,我不知道为什么。代码有效,不会发生编译/构建错误。我不确定这是否特定于编译器(我使用 Dev C ++ )或者它是编译器无关的?

当我为小' n'运行代码时如17,29,103 exc。结果显示正确,但一段时间后它开始不打印前几个元素。

对于n = 171,它不显示前24个元素。

我的代码如下;

#include<stdio.h>
#include<stdlib.h>

int mod_exponent(int g,int m, int n);

int main(){
    int g,m,n,m1,i,t;
    g=2; n=171;

    for (m=0;m<=n;m++){
        t=mod_exponent(g,m,n);

        if(t!=-1)
            printf("%d^%d=%d mod %d\n \n", g,m,t,n) ;
    }

    return 0;  
}

int mod_exponent(int g,int m, int n){
    int s,r,m1,i,j,k,q,d[100];

    if (g<=0||m<0||n<=0){
        printf("wrong parameters\n") ;
        return -1;
    }

    m1=m;i=0;
    while(m1>=2){
        q=m1/2;
        d[i]=m1-q*2;
        m1=q; 
        i=i+1;
    }

    d[i]=m1; k=i;
    if(d[0]==1)
        r=g;

    if(d[0]==0) 
        r=1;

    s=g;
    for(i=1;i<k;i++)
        s=s*s %n;

    if(d[i]==1){
        r=r*s%n;
    }
    return r;
}

输出应如下所示:2 ^ 0 = 1 mod 171,2 ^ 1 = 2 mod 171,... 2 ^ 171 = 167

但它从24开始它看起来像:2 ^ 24 = 85 mod 171,2 ^ 25 = 170 mod171 171,... 2 ^ 171 = 167

1 个答案:

答案 0 :(得分:1)

A - 解释

您的代码实际上正在运行,问题是程序的输出刚超过控制台输出的缓冲区。因此,作为一个简单的解决方案,您应该将程序的输出写入文本文件。如果您使用的是Windows,请打开命令行窗口,然后将输出传递给文件(使用>>运算符)并使用文件编辑器通过文件检查输出(记事本,记事本++ vs。)如下;

假设您编译的可执行文件名是 so.exe ;

C:\Users\Levent\Desktop\so>so >> output.txt

C:\Users\Levent\Desktop\so>output.txt

B - 步骤

  1. window key + r打开命令行窗口并写入cmd,按enter键。
  2. enter image description here

    1. 将目录更改为二进制文件夹
    2. 使用 file.exe&gt;&gt;运行可执行二进制文件output.txt的
    3. 使用任意文本编辑器(如记事本?)
    4. 打开文件

      C - Windows CMD上的示例

      enter image description here

      D - 输出

      您的代码输出如下;

      2^0=1 mod 171
      
      2^1=2 mod 171
      
      2^2=2 mod 171
      
      2^3=4 mod 171
      
      2^4=4 mod 171
      
      2^5=8 mod 171
      
      2^6=4 mod 171
      
      2^7=8 mod 171
      
      2^8=16 mod 171
      
      2^9=32 mod 171
      
      2^10=16 mod 171
      
      2^11=32 mod 171
      
      2^12=16 mod 171
      
      2^13=32 mod 171
      
      2^14=16 mod 171
      
      2^15=32 mod 171
      
      2^16=85 mod 171
      
      2^17=170 mod 171
      
      2^18=85 mod 171
      
      2^19=170 mod 171
      
      2^20=85 mod 171
      
      2^21=170 mod 171
      
      2^22=85 mod 171
      
      2^23=170 mod 171
      
      2^24=85 mod 171
      
      2^25=170 mod 171
      
      2^26=85 mod 171
      
      2^27=170 mod 171
      
      2^28=85 mod 171
      
      2^29=170 mod 171
      
      2^30=85 mod 171
      
      2^31=170 mod 171
      
      2^32=43 mod 171
      
      2^33=86 mod 171
      
      2^34=43 mod 171
      
      2^35=86 mod 171
      
      2^36=43 mod 171
      
      2^37=86 mod 171
      
      2^38=43 mod 171
      
      2^39=86 mod 171
      
      2^40=43 mod 171
      
      2^41=86 mod 171
      
      2^42=43 mod 171
      
      2^43=86 mod 171
      
      2^44=43 mod 171
      
      2^45=86 mod 171
      
      2^46=43 mod 171
      
      2^47=86 mod 171
      
      2^48=43 mod 171
      
      2^49=86 mod 171
      
      2^50=43 mod 171
      
      2^51=86 mod 171
      
      2^52=43 mod 171
      
      2^53=86 mod 171
      
      2^54=43 mod 171
      
      2^55=86 mod 171
      
      2^56=43 mod 171
      
      2^57=86 mod 171
      
      2^58=43 mod 171
      
      2^59=86 mod 171
      
      2^60=43 mod 171
      
      2^61=86 mod 171
      
      2^62=43 mod 171
      
      2^63=86 mod 171
      
      2^64=139 mod 171
      
      2^65=107 mod 171
      
      2^66=139 mod 171
      
      2^67=107 mod 171
      
      2^68=139 mod 171
      
      2^69=107 mod 171
      
      2^70=139 mod 171
      
      2^71=107 mod 171
      
      2^72=139 mod 171
      
      2^73=107 mod 171
      
      2^74=139 mod 171
      
      2^75=107 mod 171
      
      2^76=139 mod 171
      
      2^77=107 mod 171
      
      2^78=139 mod 171
      
      2^79=107 mod 171
      
      2^80=139 mod 171
      
      2^81=107 mod 171
      
      2^82=139 mod 171
      
      2^83=107 mod 171
      
      2^84=139 mod 171
      
      2^85=107 mod 171
      
      2^86=139 mod 171
      
      2^87=107 mod 171
      
      2^88=139 mod 171
      
      2^89=107 mod 171
      
      2^90=139 mod 171
      
      2^91=107 mod 171
      
      2^92=139 mod 171
      
      2^93=107 mod 171
      
      2^94=139 mod 171
      
      2^95=107 mod 171
      
      2^96=139 mod 171
      
      2^97=107 mod 171
      
      2^98=139 mod 171
      
      2^99=107 mod 171
      
      2^100=139 mod 171
      
      2^101=107 mod 171
      
      2^102=139 mod 171
      
      2^103=107 mod 171
      
      2^104=139 mod 171
      
      2^105=107 mod 171
      
      2^106=139 mod 171
      
      2^107=107 mod 171
      
      2^108=139 mod 171
      
      2^109=107 mod 171
      
      2^110=139 mod 171
      
      2^111=107 mod 171
      
      2^112=139 mod 171
      
      2^113=107 mod 171
      
      2^114=139 mod 171
      
      2^115=107 mod 171
      
      2^116=139 mod 171
      
      2^117=107 mod 171
      
      2^118=139 mod 171
      
      2^119=107 mod 171
      
      2^120=139 mod 171
      
      2^121=107 mod 171
      
      2^122=139 mod 171
      
      2^123=107 mod 171
      
      2^124=139 mod 171
      
      2^125=107 mod 171
      
      2^126=139 mod 171
      
      2^127=107 mod 171
      
      2^128=169 mod 171
      
      2^129=167 mod 171
      
      2^130=169 mod 171
      
      2^131=167 mod 171
      
      2^132=169 mod 171
      
      2^133=167 mod 171
      
      2^134=169 mod 171
      
      2^135=167 mod 171
      
      2^136=169 mod 171
      
      2^137=167 mod 171
      
      2^138=169 mod 171
      
      2^139=167 mod 171
      
      2^140=169 mod 171
      
      2^141=167 mod 171
      
      2^142=169 mod 171
      
      2^143=167 mod 171
      
      2^144=169 mod 171
      
      2^145=167 mod 171
      
      2^146=169 mod 171
      
      2^147=167 mod 171
      
      2^148=169 mod 171
      
      2^149=167 mod 171
      
      2^150=169 mod 171
      
      2^151=167 mod 171
      
      2^152=169 mod 171
      
      2^153=167 mod 171
      
      2^154=169 mod 171
      
      2^155=167 mod 171
      
      2^156=169 mod 171
      
      2^157=167 mod 171
      
      2^158=169 mod 171
      
      2^159=167 mod 171
      
      2^160=169 mod 171
      
      2^161=167 mod 171
      
      2^162=169 mod 171
      
      2^163=167 mod 171
      
      2^164=169 mod 171
      
      2^165=167 mod 171
      
      2^166=169 mod 171
      
      2^167=167 mod 171
      
      2^168=169 mod 171
      
      2^169=167 mod 171
      
      2^170=169 mod 171
      
      2^171=167 mod 171