当前位置: 首页> 游戏> 单机 > C语言学习笔记[26]:循环语句do...while①

C语言学习笔记[26]:循环语句do...while①

时间:2025/7/11 1:30:13来源:https://blog.csdn.net/the_white_hole/article/details/140518503 浏览次数:0次

do...while语句

do...while的语法格式

do循环语句;
while(表达式);

用do...while语句实现打印0~10

#include <stdio.h>int main()
{int i = 0;do{printf("%d\n", i);i++;} while (i <= 10);return 0;
}

do...while是先进行一次循环以后,再进行判断的 

do...while语句中的break

#include <stdio.h>int main()
{int i = 0;do{if(i == 5)break;printf("%d\n", i);i++;} while (i <= 10);return 0;
}

do...while语句中的break用于结束循环 

do...while语句中的continue

#include <stdio.h>int main()
{int i = 0;do{if(i == 5)continue;printf("%d\n", i);i++;} while (i <= 10);return 0;
}

do...while语句中的continue用于跳过此次循环中continue后面的代码,并直接进行下一次循环的判断。 

因此上述代码由于跳过了i++,所以只能打印1 2 3 4后进入死循环

while循环、for循环、do...while循环的练习

我们学习了while循环、for循环以及do...while循环,我们现在对他们进行一些练习

计算n的阶乘

#include <stdio.h>int main()
{int n = 0;int i = 0;int a = 1;printf("输入n的值,从而计算n的阶乘");scanf("%d", &n);for(i = 1; i <= n; i++){a *= i;}printf("%d的阶乘为%d", n, a);return 0;
}

计算1!+2!+3!+...+10!

//代码1
int main()
{int n = 1;int ret = 0;do{int sum = 1;int i = 1;do{sum *= i;i++;} while (i <= n);ret += sum;n++;} while (n <= 10);printf("%d\n", ret);return 0;
}
// 代码2
int main()
{int n = 1;int sum = 1;int ret = 0;do {sum = n * sum;ret = ret + sum;n++;} while (n <= 10);printf("%d\n", ret);return 0;
}

代码1内层循环每次都从1!开始重新计算,但是我们已知 n!=(n-1)!*n,我们可以在计算阶乘的时候直接进行相加,因此可以写出代码2

在一个有序数组中查找具体的某个数字n

对于有序数组中查找内容,我们可以使用二分查找法

二分查找的原理:

  1. 首先,从数组的中间元素开始搜索。
  2. 如果中间元素正好是要查找的元素,则搜索过程结束。
  3. 如果某一特定元素大于中间元素,则在数组的右半部分继续搜索。
  4. 如果某一特定元素小于中间元素,则在数组的左半部分继续搜索。
  5. 重复以上步骤,直到找到目标元素或者搜索范围为空(即找不到目标元素)。
#include <stdio.h>int main()
{//arr是未知的int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int f = 0;printf("输入需要查找数字:\n");scanf("%d", &f);int sz = sizeof(arr) / sizeof(arr[0]);int left = 0;int right = sz - 1;int mid = 0;do{mid = (left + right) / 2;if(arr[mid] == f){printf("找到了,位置为:arr[%d]\n", mid);break;}else if(arr[mid] < f){left = mid + 1;continue;}else{right = mid - 1;continue;}} while (left <= right);if(left > right)printf("没有找到\n");return 0;
}

关键字:C语言学习笔记[26]:循环语句do...while①

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: