搜索

教你如何保存小黑框的运行结果

查看数: 1996 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-11-8 20:00

正文摘要:

比如要输出2147483647之内的素数,认真看完啊哈C的小伙伴都可以写出代码, 但是小黑框关闭后CPU辛辛苦苦算出来的那些数字没有了,怎样才能把运算结果保存到txt文件中呢? 其实只要在你的代码中加一条语句就OK了。 ...

回复

rosynirvana 发表于 2015-11-15 22:03:03
链接错误,肯定是写错了函数名之类的
rosynirvana 发表于 2015-11-15 21:44:12
福华 发表于 2015-11-15 21:30
system(“pause”);暂停用,因为啊哈C不会替我暂停
CodeBlock装了不会用

不是,前面有了exit(0); 那句system("pause");不会运行的
福华 发表于 2015-11-15 21:30:18
rosynirvana 发表于 2015-11-8 22:34
如果要说prime函数嘛

system(“pause”);暂停用,因为啊哈C不会替我暂停
CodeBlock装了不会用
福华 发表于 2015-11-15 21:11:13
4399APPLE 发表于 2015-11-8 20:37
另外一件事就是,你的prime有点啰嗦了...

仔细看了,简洁不少
福华 发表于 2015-11-15 21:09:01
4399APPLE 发表于 2015-11-8 20:34
或者直接编辑→标记→复制
不怎么推荐重定义stdin,stdout,stderr,定义出去后很难再定义回来
或者可以F ...

为了方便和简单,所以用了一行语句重定义stdout
更复杂的处理要用FILE 和相关函数
福华 发表于 2015-11-12 20:13:04
4399APPLE 发表于 2015-11-8 20:37
另外一件事就是,你的prime有点啰嗦了...

嗯,回头看
rosynirvana 发表于 2015-11-8 22:34:58
如果要说prime函数嘛
  1. #include <math.h>

  2. int prime(int n)
  3. {
  4.         int upper, i;
  5.         if(n < 2)
  6.                 return 0;
  7.         if(n == 2)
  8.                 return 1;
  9.         if(n % 2 == 0)
  10.                 return 0;

  11.         upper = sqrt(n);
  12.         for(i=3; i<=upper; i+=2)
  13.                 if(n % i == 0)
  14.                         return 0;
  15.         return 1;
  16. }
复制代码


首先我是支持函数多出口的,否则用goto来写最自然
知道了传进来的i是int,那就应该验证i<2的所有情况
先依次处理i<2, i==2, i是偶数三种情况再开始试除
另外sqrt肯定是个比较慢的过程,这个值只更新一次,如果不确定编译器会不会替你优化,记得放在循环外面。有些人把for的条件写成i*i<=n,这是错误的,因为必须要计算很多次乘法

另外主函数里面exit(0)后面为什么还有system("pause")这种完全无用的语句

最后这样计算某个区间的函数效率太低,可以去题解区看看我写的函数表的算法
zhuzhu81998 发表于 2015-11-8 21:45:55
赞一个!!
4399APPLE 发表于 2015-11-8 20:37:32
另外一件事就是,你的prime有点啰嗦了...
  1. int prime(int n)
  2. {
  3.     int i;

  4.     if(n == 2)
  5.         return 1;
  6.     if(!(n % 2) || n == 1)
  7.         return 0;

  8.     for(i = 3;i <= sqrt(n);i += 2)
  9.         if(!(n % i))
  10.             return 0;
  11.     return 1;
  12. }
复制代码
4399APPLE 发表于 2015-11-8 20:34:12
本帖最后由 4399APPLE 于 2015-11-8 20:39 编辑
  1. $gcc test.c -o test && test > filename.txt
复制代码
或者直接编辑→标记→复制
不怎么推荐重定义stdin,stdout,stderr,定义出去后很难再定义回来
或者可以FILE,然后fprintf

福华 发表于 2015-11-8 20:00:58
占个楼层备用

点评

I know.  发表于 2017-12-16 12:57
快速回复 返回顶部 返回列表