For/Do while语句/更多的是练习题
For语句
For(表达式1初始化;表达式2判断;表达式3调试部分)
{
}
例子:
int main()
{
int i = 0;
for (i=1;i<=10;i++)
{
printf("%d\n",i);
}
return 0;
}
流程图:注意continue的位置,以及表达式3的位置。
break :
int main()
{
int i = 0;
for (i=1;i<=10;i++)
{
if (i == 5);
{
break;
}
printf("%d\n",i);
}
return 0;
}
和while的break 差不多。
continue:
int main()
{
int i = 0;
for (i=1;i<=10;i++)
{
if (i == 5)
{
continue;
}
printf("%d\n",i);
}
return 0;
}
结果是1 2 3 4 6 7 8 9 10。
for相较于while来说,它的调试部分永远不会被跳过。
一些for的变种:
关于省略的问题
int main()
{
//for循环的三个表达式从语法上来说可以省略
// 判断部分省略-判断部分恒为真-死循环
for (;;)
{
printf("hehe\n");
}
return 0;
}
如果省略初始化部分的表达式1,那么也会变得不一样。
注意以下两个程序有何不同:
int main()
{
int i = 0;
int j = 0;
for (i=0; i<3; i++) {
for (j=0; j<3; j++) {
printf("hehe\n");
}
}
return 0;
}
对比
int main()
{
int i = 0;
int j = 0;
for (; i<3; i++) {
for (; j<3; j++) {
printf("hehe\n");
}
}
return 0;
}
另一种变种:
int main()
{
int x,y;
for (x=0,y=0; x<2&&y<5; ++x,y++) {
printf("hehe\n");
}
return 0;
}
DO While语句
语法:
do
循环语句;
while(表达式);
执行流程:
Continue:
int main()
{
int i = 1;
do
{
if (i == 5) {
continue;//直接跳过执行部分剩下的内容,进入到判断部分。
}
printf("%d ",i);
i++;
}while(i<=10);
printf("\n");
return 0;
}
do while语句的特点就是至少会执行一次。
练习:
算n!
int main()
{
int n = 0;
int i = 0;
scanf("%d",&n);
int R = 1;
for (i=1; i<=n; i++) {
R = R * i;
}
printf("%d\n",R);
return 0;
}
折半查找
在一个数组中,查找所要寻找的数的下标
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k = 99;//要查找的元素
//目标是,在arr这个有序的数组中,查找k的值
int sz = sizeof(arr)/sizeof(arr[0]);//数组的元素个数
int left = 0;
int right = sz-1;
if (k>arr[right] || k < arr[left]) {
printf("Not Founded\n");
}
else
{
for (; ; ) {
int mid = (left + right)/2;
if (arr[mid]<k)
{
left = mid +1;
}
else if (arr[mid]>k)
{
right = mid - 1;
}
else (arr[mid] == k);
{
printf("%d\n",mid);
break;
}
}
}
return 0;
}