break语句
求素数的时候需要将数字除以2345678直到num/2,即使得出这个数不是素数,仍需要将剩下的数都除上一遍,i会不断增大直到=num/2。
#include <stdio.h>
int main()
{
int i,num;
int flag = 1;
printf("请输入一个整数:\n");
scanf("%d",&num);
for (i = 2; i < num / 2; i++)
{
if (num % i == 0)
{
flag = 0;
//break;
}
}
if(flag)
{
printf("%d是一个素数。\n",num);
}
else
{
printf("%d不是一个素数。\n",num);
}
printf("i=%5d",i);
return 0;
}
如果在循环后加入break语句,则会跳出该循环直接执行下面的语句。
#include <stdio.h>
int main()
{
int i , j;
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
if ( j == 3)
{
break;
}
}
}
printf("i=%d, j=%d \n",i,j);
return 0;
}
可以看到当内循环每次执行到j==3后不再继续执行内循环,都会跳出执行外循环。
如果想要当j==3时,跳出整个循环,需要在外循环上再增加一个break;
#include <stdio.h>
int main()
{
int i , j;
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
if ( j == 3)
{
break;
}
}
if (j==3)
{
break;
}
}
printf("i=%d, j=%d \n",i,j);
return 0;
}
continue语句
当执行continue语句的时候,循环体里剩下的语句不会被执行,而是进入下一次循环。
#include <stdio.h>
int main()
{
int ch;
while ( (ch = getchar()) != '\n')
{
if (ch == 'C')
{
continue;
}
putchar(ch);
}
putchar('\n');
return 0;
}
getchar获取字符值,putchar输出字符值。返回的是ASCII码,int型
如果输入的字符里出现的C,则不显示。
不同点:while语句和for语句
将下面的for语句改成while语句
#include <stdio.h>
int main()
{
int i;
/*for (i=0; i<100;i++)
{
if( i % 2)
{
continue;
}
}
*/
i=0;
while (i<100)
{
if(i % 2)
{
continue;
}
i++;
}
return 0;
}
for语句可以正常执行,而while语句则进入了死循环。
原因是while语句中的continue会使得程序跳过i++。
细碎知识点补充:
当对变量进行赋值时,++i与i++是不一样的
j=i++先赋值再加,j=++i先加再赋值
逗号表达式
条件运算符
goto语句
用了容易死循环