分支语句和循环语句
分支语句和循环语句
1、分支语句(选择结构)
if语句
if(表达式) 语句;
if(表达式) 语句1;
else 语句2;
//多分支
if(表达式1)语句1;
else if(表达式2)语句2;
else 语句3;
#include <stdio.h>
int main()
{
if(表达式)
{
语句列表1;
}
else
{
语句列表2;
}
return 0;
}
switch语句
switch语句也是一种分支语句,常常用于多分支的情况
switch(整型表达式)
{
语句项;
}
其中语句项是一些case语句
default子句
如果表达式的所有case值都不匹配,程序不会终止,也不会报错。
因此可以在任何一个case可以出现的位置写default。
case语句若是不搭配break语句,则会在上一条case结束后执行下一条case。
代码演示
1、判断一个数是否为素数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
printf("请输入一个数字:\n");
scanf("%d", &a);
int flag = a % 2;
if (flag)
{
printf("是奇数\n");
}
else
{
printf("是偶数\n");
}
system("pause");
return 0;
}
2、输出1-100之间的奇数
#include <stdio.h>
#include <stdlib.h>
int main()
{
for (int i = 1; i < 101; i++)
{
if ((i % 2) != 0)
{
printf("%d ", i);
}
}
system("pause");
return 0;
}
3、输入数字输出对应的星期
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
printf("请输入一个数字:\n");
scanf("%d", &a);
switch (a)
{
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;
default:
break;
}
system("pause");
return 0;
}
4、输出周内和周么
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
printf("请输入一个数字:\n");
scanf("%d", &a);
switch (a)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("周内\n");
break;
case 6:
case 7:
printf("周么\n");
break;
default:
break;
}
system("pause");
return 0;
}
2、循环语句(循环结构)
1、while循环
while(表达式)
{
语句;
}
//当条件满足的情况下,表达式成立语句执行,直到表达式不成立,语句退出。
break在循环中的作用,循环语句遇到break,永久终止循环;
continue在循环中的作用,continue之后的语句本次循环不执行,直接进下一次的循环入口。
2、for循环
for(表达式1;表达式2;表达式3)
循环语句;
//表达1为循环初识条件,表达式2为条件判断,表达式3为迭代部分。
break在循环中的作用,循环语句遇到break,永久终止循环;
continue在循环中的作用,continue之后的语句本次循环不执行,直接进下一次的循环入口。
3、do-while循环
do
循环语句;
while(表达式);
//循环至少执行一次
代码演示
5、while语句
#include <stdio.h>
#include <stdlib.h>
#if 0
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
{
break;
}
printf("%d ", i);
i++;
}
system("pause");
return 0;
}
#else
int main()
{
int i = 1;
while (i <= 10)
{
i++;
if (i == 5)
{
continue;
}
printf("%d ", i);
}
system("pause");
return 0;
}
#endif
6、for循环
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
{
k++;
}
printf("%d\n", k);
system("pause");
return 0;
}
7、do-while循环
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
} while (i<10);
system("pause");
return 0;
}
模拟练习
1、计算n的阶乘
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int res = 1;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
res *= i;
}
printf("%d! = %d", n, res);
system("pause");
return 0;
}
2、计算阶乘加法
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int res = 1;
int sum = 0;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
res *= i;
sum += res;
}
printf("%d", sum);
system("pause");
return 0;
}
3、编写binsearch
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int binsearch(int x, int v[], int n)
{
for (int i = 0; i < n; i++)
{
if (v[i] == x)
{
return i;
}
}
return -1;
}
int main()
{
int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
printf("%d\n", binsearch(4, arr, 10));
system("pause");
return 0;
}
4、演示多个字符从两端向中间汇聚
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define SIZE 12
int main()
{
char ch1[SIZE] = "Hello World!";
char ch2[SIZE] = "$$$$$$$$$$$";
int left = 0;
int right = SIZE - 1;
while (left <= right)
{
ch1[left] = ch2[left];
ch1[right] = ch2[right];
left++;
right--;
printf("%s\n", ch1);
system("cls");
}
system("pause");
return 0;
}
5、模拟用户登录
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int i;
char password[20] = "";
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("输入次数超过三次,无法登录");
}
system("pause");
return 0;
}
6、猜数字游戏
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("################################\n");
printf("##########1、 play #######\n");
printf("##########0、 exit #######\n");
printf("################################\n");
}
void game()
{
int random_num = rand() % 100 - 1;
int input = 0;
while (1)
{
printf("请输入要猜的数字:");
scanf("%d", &input);
if (input > random_num)
{
printf("猜大了\n");
}
else if (input < random_num)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 0:
break;
case 1:
game();
default:
printf("选择错误,请重新选择\n");
break;
}
} while (input);
system("pause");
return 0;
}
7、二分查找
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(){
int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int left = 0, right = 9;
int to_find;
printf("请输入要查找的数字:");
scanf("%d", &to_find);
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] < to_find){
left = mid + 1;
}
else if (arr[mid]>to_find){
right = mid - 1;
}
else{
break;
}
}
if (left <= right){
printf("找到了\n");
}
else{
printf("没找到\n");
}
system("pause");
return 0;
}
上一篇: Python基础学习记录(带思维导图)
下一篇: Python | 流程控制