找回密码
 欢迎注册
楼主: wayne

[讨论] C/C++,打印整数1到1000,不使用循环,条件语言

[复制链接]
发表于 2011-7-14 11:57:57 | 显示全部楼层
#include #define a printf("%d ",i++); #define b(x) x x x x x #define Print1000 b(b(b(a a a a a a a a))) //1000=5*5*5*8 //#define b(x) x x x x x x x x x x //#define Print1000 b(b(b(a)) ... G-Spider 发表于 2011-7-14 11:00
#define Print1000 b(b(b(b(a) a a a))) //1000=5*5*5*(5+3) 没试过,能不能这样改?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 06:43:48 | 显示全部楼层
就是不让好好说话呗,我也凑凑热闹 不过我这个不太简洁,估计得费番力气才能少于30行. 由于较复杂,我只打到20
  1. #include <stdio.h>
  2. #include<gmp.h>
  3. #pragma comment( lib, "libgmp-510.lib" )
  4. void main()
  5. {
  6. mpz_t a,b,c,d,e;
  7. mpz_init(a); mpz_init(b); mpz_init(c); mpz_init(d); mpz_init(e);
  8. mpz_set_str(a,"392020382020372020362020352020342020332020322020312020302020",16);
  9. mpz_set_str(b,"001100001100001100001100001100001100001100001100001100001100",16);
  10. mpz_ui_pow_ui(c,16,60);
  11. mpz_add(d,a,b);
  12. mpz_mul(c,c,d);
  13. mpz_add(d,c,a);
  14. char * p =(char *)(*(((int *)d)+2));
  15. *(p+60)=0;
  16. printf("%s\n",p);
  17. getchar();
  18. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 08:24:03 | 显示全部楼层
啊哈,连大整数都想到了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-7-20 12:37:33 | 显示全部楼层
32# shshsh_0510 额,看不懂啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 13:12:19 | 显示全部楼层
本帖最后由 G-Spider 于 2011-7-20 14:22 编辑 34# wayne ascii中,20h对应空格,30h~39h对应0~9 以此为基础做一些运算。
  1. #include <stdio.h>
  2. #include "gmp.h"
  3. #pragma comment( lib, "libgmp-3.lib" )
  4. void main()
  5. {
  6. mpz_t a,b,c,d;
  7. mpz_inits(a,b,c,d);
  8. mpz_set_str(a,"392020382020372020362020352020342020332020322020312020302020",16);
  9. mpz_set_str(b,"1000001000001000001000001000001000001000001000001000001",16);
  10. mpz_ui_pow_ui(c,16,60);
  11. mpz_mul_ui(d,b,256*0x11);
  12. mpz_add(d,a,d);
  13. mpz_mul(d,c,d);
  14. mpz_add(d,d,a); //a b c 未变
  15. //*((char *)(d->_mp_d)+60)=0;
  16. printf("\n\n%s\n",d->_mp_d);
  17. getchar();
  18. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 18:13:45 | 显示全部楼层
35# G-Spider 如果哪个超大的数有一个简洁的算式表示就好了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 18:37:07 | 显示全部楼层
36# shshsh_0510 我也在找这样的展开公式,呵呵。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-7-20 21:48:29 | 显示全部楼层
try catch不算条件吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-8-9 14:46:41 | 显示全部楼层
1 #include 2 int main(int argc) 3 { 4 printf("%d\n",argc); 5 return ( argc==1000 || main(argc+1)); 6 } 最直观的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-21 11:51:09 | 显示全部楼层
  1. int main(int i)
  2. {
  3. return (i<1001 && printf("%5d", i) && main(i++));
  4. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-21 21:20 , Processed in 0.034309 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表