找回密码
 欢迎注册
楼主: 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.        
  16.         //*((char *)(d->_mp_d)+60)=0;
  17.         printf("\n\n%s\n",d->_mp_d);
  18.        
  19.         getchar();
  20. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 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<stdio.h>
  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-3-29 10:33 , Processed in 0.064880 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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