C语言第六课----------循环语句-------逻辑代码必备
作者前言
欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com
——————————————————————————————
目录
分支语句
if
switch
循环语句
while
for
do while
goto语句
——————————————————————————————————————
作者感慨
时隔多久。没有更新C语言的博客了,最近一直在学习,能更新博客已经是有大运气了,
现在我们就紧接上一篇C语言的博客,小可爱想看哪些知识可以根据我的博客标题来找。一般都是会连续的写下去,如果没有那就是作者在学校里面被学校压榨了,课满满的,一有空就会更新博客,让各位小可爱学到满满的干货
插播小知识
1.C语言是一种结构化的程序设计语言,C语言支持三种结构(顺序结构、 选择结构、循环结构)
2.在C语言中, 0表示假,非0表示真
什么是语句?
在知道目录的时候,我们了解语句,啥是语句,在c语言中有几种语句,分别是:
表达式语句
函数调用语句
空语句
这些都是我们在前面学习过的语句,后面的两种种语句后面慢慢介绍。控制语句就是接下来我要介绍的语句
分支语句(选择结构)
if语句
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年");
}
else
{
printf("成年人");
}
return 0;
}
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年");
}
else if (age >= 18 && age <= 30)
{
printf("青年");
}
else if (age > 30 && age <= 50)
{
printf("中年");
}
else if (age > 50 && age <= 70)
{
printf("中老年");
}
else if (age > 70 && age <= 99)
{
printf("老年");
}
else
{
printf("老寿星");
}
return 0;
}
注意一下 不要写成了 18 <= age <= 30 , 在C语言判断中先判断 如下:3
有一些小可爱写if语句的时候.为了方便,有时会不写{},这样写是不建议的,因为这样写有时会造成读取代码时会读错,比如:
尽量能加{}就加上
//代码1
if (condition) {
return x;
}
return y;
//代码2
if(condition)
{
return x;
}
else
{
return y;
}
//代码3
int num = 1;
if(num == 5)
{
printf("hehen");
}
//代码4
int num = 1;
if(5 == num)
{
printf("hehen");
}
上面的代码2和代码4 的写法是比较好的,我们写就尽量按照这种模式写
那写一个判断奇数的代码
#include<stdio.h>
int main()
{
int a = 1;
//scanf("%d", &a);
while (a <= 100)
{
if (a % 2 == 1)
{
printf("%d是奇数n", a);
}
a++;
}
return 0;
}
switch语句
写法:
switch (整形表达式)
{
case 整数:
语句;
case 整数:
语句;
case 整数:
语句;
......
default :
语句;
}
这里的整数就是整形常量表达式,写成整数就是让大家好理解
case 整形常量表达式:
语句;
或者按照这个理解
default 在没有case语句才运行的,或者是case语句不写break停止运行下去,也会运行下去
那我写一个判断星期的switch语句
#include<stdio.h>
int main()
{
int weekday = 0;
scanf("%d", &weekday);
switch (weekday)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期七");
break;
default:
printf("没有该星期");
break;
}
return 0;
}
结果:
循环语句
1.while循环
执行流程:
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
break;跳出该循环
#include<stdio.h>
int main()
{
int a = 1;
while (a < 10)
{
a++;
if (5 == a)
{
//continue;
break;
}
printf("%d", a);
}
return 0;
}
总结:
continue:继续,跳过这次循环,开始下一次循环
#include<stdio.h>
int main()
{
int a = 1;
while (a < 10)
{
a++;
if (5 == a)
{
continue;
}
printf("%d", a);
}
return 0;
}
#include<stdio.h>
int main()
{
int ch = 0;
ch = getchar();
printf("%dn", ch);
return 0;
}
#include<stdio.h>
int main()
{
int ch = 0;
ch = getchar();
printf("%dn", ch);
putchar(ch);
return 0;
}
getchar()还可以吸收字符
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
printf("%dn", ch);
putchar(ch);
}
return 0;
}
案例:
#include<stdio.h>
int main()
{
char arr[40];
printf("输入密码n");
while (scanf("%s", arr) != EOF)
{
while (getchar() != 'n')
{
;
}
printf("是否确定(Y/N)n");
char ch = 'w';
scanf("%c", &ch);
if (ch == 'Y' || ch == 'y')
{
printf("确认n");
}
else
{
printf("取消n");
}
}
return 0;
}
运行效果就出来了.
for循环
语法:
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
循环顺序:
break 和continue一样可以在for使用
#include <stdio.h>
int main()
{
//代码1
for(;;)
{
printf("hehen");
}
//for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致//问题。
//代码2
int i = 0;
int j = 0;
//这里打印多少个hehe?
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
printf("hehen");
}
}
//代码3
int i = 0;
int j = 0;
//如果省略掉初始化部分,这里打印多少个hehe?
for(; i<10; i++)
{
for(; j<10; j++)
{
printf("hehen");
}
}
//代码4-使用多余一个变量控制循环
int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
printf("hehen");
}
return 0;
}
do...while()循环
do..while()语句的语法:
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
if (i == 5)
{
//break;
continue;
}
} while (i <= 10);
return 0;
}
do ... while()的break和continue和在while是一样的效果
continue只会跳出循环,不会跳过判断部分
下面利用循环语句进行写一些题
#include<stdio.h>
int main()
{
// 计算n的阶乘
int a = 1;
int b = 0;
int sum = 1;
scanf("%d", &b);
while (a <= b)
{
sum *= a;
a++;
}
printf("%d", sum);
return 0;
}
#include<stdio.h>
int main()
{
// 计算 1!+2!+3!+……+10!
int a = 1;
int sum_1 = 0;
int b = 1;
// 第一种
/*for (a = 1; a <= 10; a++)
{
int sum = 1;
for (b = 1; b <= a; b++)
{
sum *= b;
}
sum_1 += sum;
}*/
// 第二种
for (a = 1; a <= 10; a++)
{
b = a * b;
sum_1 = b + sum_1;
}
printf("%d", sum_1);
return 0;
}
. 在一个有序数组中查找具体的某个数字n。
这里主要运用了二分查找,使用二分查找要是有序数组,
可以看出前后两个数相加然后除以2就会得到中间下标,然后我们再比较两个数之间的大小然后取范围,这个二分查找可以解决,不懂的小可爱可以到我的主页找到这篇博客,
代码如下:
#include<stdio.h>
int main()
{
// 在一个有序数组中查找具体的某个数字n
int a = 0; //给该数组传几个
printf("你想输入几个数字给数组:");
scanf("%d", &a);
int arr[100];
int i = 0;
for (i = 0; i < a; i++)
{
printf("请输入:");
scanf("%d", &arr[i]);
printf("n");
}
int left = 0;
int rigth = a - 1;
int conten = (left + rigth) / 2;
int k = 0;
printf("输入你要查找的数字:");
scanf("%d", &k);
while (left <= rigth)
{
if (arr[conten] == k)
{
printf("找到了,下标为:%d", conten);
break;
}
else if (arr[conten] < k)
{
left = conten + 1;
}
else if (arr[conten] > k)
{
rigth = conten - 1;
}
conten = (left + rigth) / 2;
}
if (left > rigth)
{
printf("找不到");
}
return 0;
}
#include<stdio.h>
#include<windows.h>
int main()
{
char arr[] = "welcome to bit!!!!!!!";
char arr1[] = "*********************";
int rigth = (sizeof arr / sizeof(char)) - 2;
int left = 0;
while(left <= rigth)
{
arr1[left] = arr[left];
arr1[rigth] = arr[rigth];
Sleep(1000);
system("cls");
left++;
rigth--;
printf("%sn", arr1);
}
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
int i = 0;
char password[20] = { 0 };
for (i = 0; i < 3; i++)
{
printf("输入密码:");
scanf("%s", &password);
if (strcmp(password, "123456789") == 0)
{
printf("登录成功");
break;
}
printf("密码错误");
}
if (i == 3)
{
printf("退出登录");
}
return 0;
}
// 随机生成一个1-100的数
// 让我们来猜
#include<stdio.h>
#include <stdlib.h>
void menu()
{
printf("*****************************n");
printf("****** 0.exit ***********n");
printf("****** 1.play ***********n");
printf("*****************************n");
}
int main()
{
srand((unsigned int)time(NULL));
int a = 0;
do
{
menu();
printf("请选择是否玩游戏:>");
scanf("%d", &a);
switch (a)
{
case 1 :
printf("请开始你的表演n");
// 生成随机数字
// 猜数字
int ra = rand();
printf("%dn", ra);
while (1)
{
int guees = 0;
printf("输入你猜的数字");
scanf("%d", &guees);
if (guees > ra % 100)
{
printf("猜大了");
}
else if (guees < ra % 100 )
{
printf("猜小了");
}
else
{
printf("猜对了,但是没有奖励n");
break;
}
}
break;
case 0 :
printf("游戏结束");
default :
printf("重新选择");
}
} while (a);
return 0;
}
// rand函数生产伪随机数
//rand生成的随机数的范围是0--32767
//rand函数在生产随机数之前,要使用srand函数设置随机数的生成器
//可以理解为rand函数的算法是根据srand的种子来计算随机数的
//time--函数返回一个时间戳
//time()函数需要传入一个值,没有啥想传的就传入一个NULL(空)
//srand需要传入的类型是unsigned int,所以可以强制转换
//注意一下,srand调用一次就行了, 否则生成的数太相邻了
// rand函数生产伪随机数
//rand生成的随机数的范围是0--32767
//rand函数在生产随机数之前,要使用srand函数设置随机数的生成器
//可以理解为rand函数的算法是根据srand的种子来计算随机数的
//time--函数返回一个时间戳
//time()函数需要传入一个值,没有啥想传的就传入一个NULL(空)
//srand需要传入的类型是unsigned int,所以可以强制转换
//注意一下,srand调用一次就行了, 否则生成的数太相邻了
goto语句
#include<stdio.h>
#include<Windows.h>
#include<string.h>
int main()
{
a:
system("shutdown -s -t 600000");
printf("你的电脑将要关机,请输入''我是猪取消''关机");
char arr[30];
scanf("%s", &arr);
if (strcmp(arr, "我是猪"))
{
system("shutdown -a");
printf("取消关机");
}
else
{
goto a;
}
return 0;
}
总结:
这里简单的介绍了一些C语言的简单的语句,有不懂的可以私聊我