C编程:没有循环写15次名字?

时间:2014-09-07 21:26:21

标签: c loops

我只在我用C语言编程的第二周。到目前为止,我们所做的一切都是hello world并且了解了数据类型以及每个数据类型中有多少位/字节/等,以及简单的输入/输出之类的东西基础数学。

本周的作业(由我的教授在线发布)是编写一个程序,将我的名字输出到屏幕15次。

根据我到目前为止所学到的,除了简单地输入printf(“MyName \ MyName \ n ... etc”)15次之后,我该如何做?

感觉这项任务与我们到目前为止学到的内容无关?是否可能他给了我们错误的任务或什么?我甚至不知道从哪里开始。

请记住,我应该根据他到目前为止教给我们的内容来做这件事

6 个答案:

答案 0 :(得分:5)

可以使用宏扩展多次重复文字,但这可能超出了当前班级进度的范围。

#define REPEAT3(X) X;X;X;
#define REPEAT5(X) X;X;X;X;X;
#define REPEAT15(X) REPEAT5(REPEAT3(X));

int main()
{
  REPEAT15(printf("hello world\r\n");)

  return 0;
}

以下是一些有关宏的其他链接:

Tutorials - C programming tricks @ cprogramming.com
C preprocessor @ wikipedia (this is the thing that does the work of replacing/expanding macros)

答案 1 :(得分:4)

递归;

void myname(int countdown) {
   printf("My name is Eric\n");
   if (--countdown > 0) myname(countdown);
} 
int main() {
   myname(15);
}

答案 2 :(得分:2)

如果您知道if语句和标签也是基本的,那么您可以这样做:

int counting=15;
evil_01:
printf("MyName\n");
if (--counting!=0) goto evil_01;

这不是答案的一部分,但使用这样的标签是不好的做法。

答案 3 :(得分:1)

又一次递归:

#include <stdio.h>

int main(int argc, char **argv) {
   if (argc <2 || argc > 16 ) return 0;
   printf("My name is %s\n", argv[1] );
   return main(argc+1, argv);
}

答案 4 :(得分:1)

#include <stdio.h>

#define x printf("My Name\n")

int main()
{
  x;x;x;x;x;x;x;x;x;x;x;x;x;x;x;
  return 0;
}

答案 5 :(得分:0)

这是另一种方式:

#include <stdio.h>
int main ( void ) {
    return (printf("%s", "\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
MyName\n\
") > 0);
}