循环结构:
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;
}*/