循环结构:
1.goto无条件转移语句
//goto
//无条件转移语句
//
//label:
//goto label;
//goto 结合if语句使用
//尽量不要使用goto
//只能在当前函数内跳转
int main(int argc, const char * argv[])
{
int i=0;
print://
printf("hello world
");
i++;
if (i<10) {
goto print;
}
return 0;
}
实例:goto实现1-100相加
#include <stdio.h>
int main(int argc,const char *argv[])
{
int sum=0;
int i=1;
label:
sum+=i;
i++;
if (i<=100) {
goto label;
}
printf("sum = %d
", sum);
return 0;
}
2.while循环结构
//while
//while(表达式)
//{
// 循环体语句列表;
//}
//表达式为真, 执行循环体, 为假退出循环
#include <stdio.h>
int main(int argc,const char *argv[])
{
int i=1;
int sum = 0;
while (i<=100) {
sum+=i;
i++;
}
printf("sum = %d
", sum);
return 0;
}
实例:统计从键盘输入一行字符个数
方法一:
int main(int argc,const char *argv[])
{
int cnt=0;//统计个数
char ch;
while (scanf("%c", &ch),ch!='
') {//stdin
cnt++;
}
printf("cnt = %d
",cnt);
return 0;
}
方法二:
int main(int argc,const char *argv[])
{
int cnt=0;
while (getchar()!='
') {//getchar 每次从标准输入文件中读取一个字符,并把这个字符返回
cnt++;
}
//printf("cnt = %d
", cnt);//stdout标准输出文件
fprintf(stdout, "cnt = %d
", cnt);
return 0;
}
3.do...while
//do
//{
// 循环体;
//}
//while(条件表达式);
//先执行循环体, 然后判断表达式是否成立
//求1-100以内的奇数的和(do while)
int main(int argc, const char *argv[])
{
int sum =0;
int i=1;
do
{
if (i%2)
{
sum += i;
}
i++;
}
while (i<=100);
printf("sum = %d
", sum);
return 0;
}
4. for循环结构
//for
//for (赋值语句; 条件表达式; 变化语句) {
// 循环体;
//}
int main(int argc,const char *argv[])
{
int i;
for (i = 0; i<10; i++) {
printf("hello world
");
}
return 0;
}
实例:打印1-100内所有奇数(for实现)
int main(int argc,const char *argv[])
{
for (int i=1; i<=100; i++) {
if (i%2) {
printf("%d ", i);
}
}
//printf("
");
putchar('
');//输出一个字符
return 0;
}
eg. continue,break关键字使用
int main(int argc,const char *argv[])
{
for (int i=0; i<10; i++) {
if (i==5) {
continue;//结束本次循环,继续下一次循环
//break;//跳出整个循环
}
printf("i = %d hello world
", i);
}
return 0;
}
实例:求出1-100内所有的素数
//求1~100内所有的素数
/*int main(int argc,const char *argv[])
{
int i,j;
for (i=1; i<=100; i++) {
for (j=2; j<i; j++) {//i % (2 ~ i-1)
if (i%j==0) {
break;
}
}
if (i!=j) {
continue;
}
printf("%d ", i);
}
return 0;
}*/