猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
无循环或有条件打印1至1000
任务:打印从1到1000的数字,而不使用任何循环或条件语句。不要只写printf()or cout语句1000次。
您将如何使用C或C ++做到这一点?
慕虎7371278
浏览 565
回答 3
3回答
墨色风雨
编译时间递归!:P#include <iostream>template<int N>struct NumberGeneration{ static void out(std::ostream& os) { NumberGeneration<N-1>::out(os); os << N << std::endl; }};template<>struct NumberGeneration<1>{ static void out(std::ostream& os) { os << 1 << std::endl; }};int main(){ NumberGeneration<1000>::out(std::cout);}
0
0
0
DIEA
这实际上是编译为没有任何条件的程序集:#include <stdio.h>#include <stdlib.h>void main(int j) { printf("%d\n", j); (&main + (&exit - &main)*(j/1000))(j+1);}编辑:添加了“&”,因此它将考虑地址,从而避免了指针错误。标准C中的上述版本,因为它不依赖于函数指针的算术运算:#include <stdio.h>#include <stdlib.h>void f(int j){ static void (*const ft[2])(int) = { f, exit }; printf("%d\n", j); ft[j/1000](j + 1);}int main(int argc, char *argv[]){ f(1);}
0
0
0
ITMISS
#include <stdio.h>int i = 0;p() { printf("%d\n", ++i); }a() { p();p();p();p();p(); }b() { a();a();a();a();a(); }c() { b();b();b();b();b(); }main() { c();c();c();c();c();c();c();c(); return 0; }我很惊讶似乎没有人发布此消息-我认为这是最明显的方法。 1000 = 5*5*5*8.
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
C++
typedef入门问题
1 回答
C
typedef入门问题
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续