这目录
题目
原题
作答
1、简述一下for; while; do while;的语法
1.1 for(i=0; i<3; i++){printf(“Hi!\n”);}printf(“嘿!”);
i=0是初始化部分;i<3是循环判断条件部分(当满足此条件时才进入执行for循环中的语句);i++是执行完循环体语句后的操作
1.2 while (表达式){语句块;}
当表达式为真,则执行下面的语句;语句执行完之后再判断表达式是否为真,如果为真,再次执行下面的语句;
然后再判断表达式是否为真……就这样一直循环下去,直到表达式为假,跳出循环。这个就是 while 的执行顺序。
如:while(1){}则为死循环,如无exit或break会一直执行下去
1.3 do-while循环的一般形式为:do{语句块;}while(表达式);
do-while循环与while循环的不同在于:它会先执行“语句块”,然后再判断表达式是否为真,
如果为真则继续循环;如果为假,则终止循环。
因此,do-while 循环至少要执行一次“语句块”。
2、它们有什么区别, 条件和代码块的执行顺序分别是怎样的
结构不同、适用条件不同
执行顺序:
for 赋初值->判断->若满足条件(若不满足条件则直接不进行后续操作)->执行代码块->for()第二个;后的语句->再次判断->若满足则再次执行->再次执行for()第二个;后的语句->……直至不满足条件退出for循环
while 对while(表达式)内的表达式进行判断->若为真(非0)->执行语句块直至不满足表达式或break结束循环或exit退出
do while执行do后语句块直至不满足表达式或break结束循环或exit退出
3、实际开发中, 这三种循环分别适用哪种情况
当知道循环多少次的时候用FOR,当在某个条件达到之前需要一直循环的时候用while、如必须至少执行一次则用do while
4、break和continue有什么作用
4.1.break
用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环。
使用说明:
(1)只能在循环体内和switch语句体内使用break;
(2)当break出现在循环体中的switch语句体内时,起作用只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。
4.2.continue
continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。
注意:continue语句并没有使整个循环终止。
5、怎么使用break跳出嵌套循环
break语句只能跳出一层语句,使用break跳出嵌套循环的话,需要先使用break跳出内层循环再再次使用break一层层跳出循环。
代码
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
void In(double* a);
int main()
{
double x = 0; //用于循环终止条件内的变量
int choice; //选项
int choice1; //退出选项
system("title 【婳骨】の循环小测试");
while (1)
{
int i = 0; //循环条件中的变量
printf("欢迎来到【婳骨】の循环小测试\n");
printf("请输入想要检验的循环\n1、for循环\n2、while循环\n3、do while循环\n");
choice = getch();
switch (choice)
{
case '1':
printf("设置为for (i = 0; i < x; i++) “Hi!”在循环内,“嘿!”在循环外,则请输入x的值:\n");
In(&x);
for (i = 0; i < x; i++)
{
printf("Hi!\n");
}
printf("嘿!\n");
break;
case '2':
printf("设置为while(i < x)i初值为0,每次循环执行完后i++\nwhile循环中的语句为“大威天龙!”外为“淦!”则请输入x的值:\n");
In(&x);
while (i < x)
{
printf("大威天龙!");
i++;
}
printf("\n淦!\n");
break;
case '3':
printf("设置为do(打印“哈”,i++)while(i < x)i初值为0,每次循环执行完后\ndo while循环外为“嗝~”则请输入x的值:\n");
In(&x);
do
{
printf("哈");
i++;
} while (i < x);
printf("\n嗝~\n");
break;
default:
printf("输入的不对啦!!!\n");
}
printf("要不要退出呀~\n退出请输入0,继续请输入其余任意键\n");
choice1 = getch();
if (choice1 == '0')
{
printf("退出成功!感谢使用\n");
exit(0);
}
system("cls");
}
system("pause");
return 0;
}
void In(double* a) //对输入数据进行判断
{
do
{
if (scanf_s("%lf", a) == 1)
{
break;
}
char choice;
while ((choice = getchar()) != '\n' && choice != EOF);
printf("输入的不是数字!\n");
} while (scanf_s("%lf", a) != 1);
}
部分运行结果