作者:你我皆为凡人
博客主页:你我皆为凡人的博客
名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!
觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!
目录
文章目录
前言
一:分支语句(选择结构)
if语句
第一种if单分支表达:
第二种if,else双分支语句表达:
第三种if,if else ,else多分支语句表达:
Switch语句(应用于多分支)
✨Switch基本表达形式
✨如果有时候需求改变一下呢?还可以这样
✨1-7可以满足,但是如果输入一个没有的值呢?
✨以上的default是什么呢?
二:循环语句
while
while基本语法
当while循环中与break与continue碰撞出来的火花
for
for循环语法:
break与continue在for循环中碰撞出来的火花:
一些for循环的变种:
一道笔试题:
do while
do语句语法:
do while循环中与break与continue碰撞出来的花火:
三:练习题
计算 n的阶乘。
计算 1!+2!+3!+……+10!
在一个有序数组中查找具体的某个数字n。(讲解二分查找)
编写代码,演示多个字符从两端移动,向中间汇聚。
编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。
四:猜数字小游戏的实现以及goto语句的应用(关机小程序)
goto语句的应用(尽量少的去使用)
✨goto语句适用场景(一个关机小程序)
总结
本文讲解了C语言中关于分支语句中的if,Switch语句详细介绍,循环语句中的while循环,for循环,do while循环,以及一些练习题,还有最后根据分支与循环实现的猜数字小游戏以及goto语句实现的关机小程序,可以看完很好的去巩固本篇所学习的知识
提示:以下是本篇文章正文内容,下面案例可供参考
(分支语句也叫条件判断语句:if语句与Switch语句)
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//必须是整型表达式
{
case 1://必须整型常量表达式
printf("星期一\n");
break;//可以跳出循环
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
}
return 0;
}
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//必须是整型表达式
{
case 1://必须整型常量表达式
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)//必须是整型表达式
{
case 1://必须整型常量表达式
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default://不匹配所有case标签的值时,走default
printf("选择错误\n");
}
return 0;
}
如上图,当所有的case条件都不满足时,你输入了一个不是case里的数字,就会执行default在语句列表中增加一条default子句,把下面的标签default:写在任何一个 case 标签可以出现的位置。当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1表达式1为初始化部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环时候终止。表达式3表达式3为调整部分,用于循环条件的调整。
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)//初始化,判断终止条件,调整部分,让每次都变化
{
printf("%d ", i);
}
return 0;
}
//请问循环要循环多少次?
#include
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)//注意,k=0是赋值,根本不会进去,所以循环0次
k++;
return 0; }
do
循环语句;
while(表达式);
//计算 n的阶乘
//1*2*3*...*n
int main()
{
int i = 1;
int n = 0;
int ret = 1;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
ret *= i;
}
printf("%d", ret);
return 0;
}
//计算1!+2!+。。。10!
int main()
{
int i = 1;
int ret = 1;
int sum = 0;
for (i = 1; i <= 10; i++)
{
ret *= i;
sum += ret;
}
printf("%d", sum);
return 0;
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
//在一个数组中找k
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i
#include
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
int left = 0; //左边
int right = sz - 1;//右边
int k = 7;//要找的值
while (left<=right)
{
//int mid = (right + left) / 2;
int mid = left+(right-lift)/2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了,下标是%d", mid);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}
#include
#include
int main()
{
char arr1[] = "hello world!!!!";
char arr2[] = "###############";
int left = 0;
int right = strlen(arr1) - 1;
while (left<=right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s\n", arr2);
Sleep(1000);//1秒
system("cls");//可以清空屏幕,系统命令
left++;
right--;
}
printf("%s", arr2);
return 0;
}
#include
#include
int main()
{
char password[20] = { 0 };
int i = 0;
for (i = 0; i < 3; i++)
{
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password, "abcdef") == 0)
{
printf("密码正确\n");
break;
}
else
{
printf("密码错误\n");
}
}
if (i == 3)
{
printf("三次密码都错误,退出程序");
}
return 0;
}
//猜数字游戏实现
void memo()
{
printf("###########################\n");
printf("######### 1 play ########\n");
printf("######### 0 exit ########\n");
printf("###########################\n");
}
void play()
{
//1,生成一个1-100的随机数
int ret = rand() % 100 + 1;
int guess = 0;
//2,猜数字
//3,判断猜大了还是猜小了
while (1)
{
printf("请输入要猜的数字:");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
memo();
printf("请确认\n");
scanf("%d", &input);
switch (input)
{
case 1:
printf("玩游戏\n");
play();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新输入\n");
break;
}
} while (input);
return 0;
}
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。
从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。
但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过
程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。所以这个时候使用goto语句可以返回到任何你想让它跳出去的地方
注意:只能在同一个函数内部使用,不可以跨函数跳转
int main()
{
char input[20] = { 0 };
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑在60秒内即将关机,请输入:我是猪,就取消关机\n");
scanf("%s", &input);
if (strcmp(input, "我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
本篇文章具体讲解了关于C语言中分支语句与循环语句有哪些,基础语句是什么,让大家可以根据图片来看清楚到底是什么作用,最后也给大家准备了几道关于分支与循环的一些编程题,让大家可以看完练习一下巩固知识,只针对初学者,一些大佬可以当着复习了,最后感谢大家观看凡人的文章,如果觉得凡人讲的还不错,希望多多支持,感谢观看!!!