大家好,欢迎来到IT知识分享网。
do…while语句
语法结构:
do 语句; while(表达式);
do while
循环与while
循环非常相似,只有一点不同:
while
语句 先判断表达式,再执行循环语句;do while
语句 先执行循环语句,再判断表达式。
如:
#include <stdio.h> int main() { int i = 10; do { printf("%d\n", i); }while(i<10); return 0; }
本代码中,i的值并不符合表达式,但在do while语句下还是会先执行一次,之后再停止。
do while结构中的continue和break
int main() { int i = 0; do { if(5 == i) break; printf("%d\n", i++); }while(i<10); return 0; }
代码执行结果为 1 2 3 4
int main() { int i = 0; do { if(5 == i) continue; printf("%d\n", i++); }while(i<10); return 0; }
代码执行结果为 1 2 3 4 死循环
总结:do while 语句中break、continue 和while语句中功能相同。
练习:
1.在一个有序数组中查找具体的某个数字n。
2. 计算 1!+2!+3!+……+10!
3.编写代码,演示多个字符从两端移动,向中间汇聚。
参考代码放在结尾了
goto语句
注:goto语句只能在本函数内进行跳转,不可以跨函数跳转。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。所以这时候就用到了goto语句, goto语言对于嵌套循环的退出还是很有用的。
如:
for(...) for(...) { for(...) { if(disaster) goto error; } } … error: if(disaster) //处理错误情况
如上,程序中无论嵌套了多少层,只要遇到goto
语句,就会跳到goto
所标记的语句标签处
试题答案:
1.
int main() { int arr1[] = { 1,2,3,4,5,6,7,8,9 }; int left = 0; int right = sizeof(arr1) / sizeof(arr1[0]); int k = 0; int mid = 0; scanf("%d", &k); while (left <= right) { mid = (left + right) / 2; if (arr1[mid] > k) right = mid - 1; if (arr1[mid] < k) left = mid + 1; if (arr1[mid] == k) break; } if (left <= right) printf("找到了,该数下标为%d\n", mid); else printf("该数不在数组中\n"); return 0; }
2.
int main() { int i = 0; int m = 0; int sum = 0; int b = 1; scanf("%d",&m); for (i = 1; i <= m; i++) { b = b * i; sum = sum + b; } printf("1~%d的乘阶和为%d", m, sum); }
3.
int main() { char arr1[] = "welcome to bit..."; char arr2[] = ""; int left = 0; int right = strlen(arr1)-1; printf("%s\n", arr2); //while循环实现 while(left<=right) { Sleep(1000); arr2[left] = arr1[left]; arr2[right] = arr1[right]; left++; right--; printf("%s\n", arr2); } //for循环实现 for (left=0, right=strlen(src)-1; left <= right; left++, right--) { Sleep(1000); arr2[left] = arr1[left]; arr2[right] = arr1[right]; printf( "%s\n", target); } retutn 0; }
3题另一种方法
int main() { char arr1[] = { "welcome to bit" }; int left = 0; int right = strlen(arr1) - 1; int i = 0; while (left <= right) { for (i = 0; i <= strlen(arr1) - 1; i++) { if (i<=left || i>=right) printf("%c", arr1[i]); else printf("#"); // Sleep(200); } //system("cls"); //printf("\n"); left++; right--; } return 0; }
注:strlen函数表示返回括号中参数\0之前的长度,参数为字符类型,返回类型为整形
strcmp函数用于比较两个字符串是否完全相等,完全相等返回0 反之则返回1,
strlen和strcmp均属于string.h头文件,使用前需提前装载
Sleep函数表示暂停代码执行,括号中参数表示暂停时间,单位为毫秒
systeam函数表示执行windows系统中的代码指令(使用时须带上双引号) 如cls shutdown等
Sleep和systeam属于windows.h头文件,使用前需提前装载
至此C语言初阶学习分支语句和循环语句最终篇完结,如果有什么问题,欢迎大家在评论区,讨论、指正。
下次将更新『C语言初阶』第三章函数,敬请期待~
也希望此文对于你能够有所帮助,谢谢大家~
码字不易,还望支持
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/133648.html