让计算机打印输出50个星号
以我们现在的知识,第一种方法我们可以
printf("**************************************************");
第二中方法我们可以
printf("*");
printf("*");
......重复50次
我们看起来第一种方式简单一些,但如果是500000个星号呢?
第二种方法就是重复地执行printf("*");这行代码,如果我们学会了让让程序重复执行的命令那就简单多了,这节要学习的goto语句就是做这个用的,请看下面的代码:
int main()
{
printf("一个循环语句的例子\n");
mark:printf("*");
goto mark;
printf("hello\n");
}
我们在printf("*);这句的前面做了一个标记,给一句c代码做标记的方法是标记名加冒号的形式,标记名你可以随便起但要符合"字母数字下划线组成不能以数字开头"的规则,例如这里我就起了个mark作为标记名。
goto这个关键字你可以理解成跳转到的意思,那么程序的第三行goto mark;就可以翻译成跳转到标记为mark的地方执行。
我们分析下程序的执行过程:
执行printf("一个循环语句的例子\n");
标记第二行的开始位置位置,起名为mark。
执行printf("*");
跳转到mark位置。
执行printf("*);
跳转到mark位置。
执行printf("*);
跳转到mark位置。
执行printf("*);
......
这样就达到了重复执行printf("*);的目的,你可以运行下程序试试,你会发现程序一直在输出星号,实际上printf("hello\n");这句是得不到执行机会的,因为程序一直在重复执行printf("*);这句。
我们怎样才能控制重复执行的次数呢,这就需要我们用一个变量来计数,请看下面的例子:
知识补充:
int i=0; 相当于 int i; i=0; 两步操作,这是一种简写方式,注意这句话要写在前面因为c语言要求定义变量的语句要写在开头的位置。
i=i+1; 把i的值取出来加1后再存回到i变量里,实现了i变量里的值增加1的运算
例子代码:
int main()
{
int i=0;
printf("一个循环语句的例子\n");
mark:printf("*");
i=i+1;//这个i变量就像一个能查数的人一样,每执行一次printf("*");i的值就加1
if(i<10)//这样当i数到10的时候,if条件为假不执行goto,循环就结束了。
{
goto mark;
}
printf("hello\n");
}
上面的例子用了一个变量i和一个if判断达到了控制循环次数的目的。
这里重复执行的代码为
printf("*");
i=i+1;
if(i<10);
每重复执行一次i的值都不一样,所以if(i<10)才可能不成立,循环才能退出。
我们可以认为i是控制这个循环的变量,i<10是循环的条件,