我只在我用C语言编程的第二周。到目前为止,我们所做的一切都是hello world并且了解了数据类型以及每个数据类型中有多少位/字节/等,以及简单的输入/输出之类的东西基础数学。
本周的作业(由我的教授在线发布)是编写一个程序,将我的名字输出到屏幕15次。
根据我到目前为止所学到的,除了简单地输入printf(“MyName \ MyName \ n ... etc”)15次之后,我该如何做?
感觉这项任务与我们到目前为止学到的内容无关?是否可能他给了我们错误的任务或什么?我甚至不知道从哪里开始。
(请记住,我应该根据他到目前为止教给我们的内容来做这件事)
答案 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);
}