编译结果应该是10个*,但运行只输出一个,如何解决?

#include<stdio.h>

main()
{

int k;
for(k=0;k<10;k++);
  
printf("*\n");



}

这个很明显,就是for循环要加大括号
如果不加,就运行for循环下面的第一行或者是右边的第一行
(也就是说运行和for循环最近的语句)
但问题是都没有
所以for循环为空
于是继续运行下面的语句
只输出一个*;
如果你要修改
有3种办法

//第一种
for(k=0;k<10;k++)
printf("*\n");
//第二种
for(k=0;k<10;k++) printf("*\n");
//第三种
for(k=0;k<10;k++)
{
  printf("*\n");
}

是10行一个还是就只有一个?

for循环不要加分号

如果是多语句循环,把循环体用花括号{}括起来,把for循环后的分号加在花括号后
单语句for后面就不必加分号了,不然是一个空循环,不会执行后面的循环体

#include<stdio.h>
 
main()
{
 
int k;
for(k=0;k<10;k++)
  
printf("*\n");
 
 
 
}


加大括号
for(k=0;k<10;k++){
printf("*\n");
}

for循环加分号了

img
循环后加上分号循环都进不去,代表结束循环

*
Press any key to continue
以上是运行结果,只出来一个*号。

执行了10次 “;”,执行了一次printf