c语言:结构化的程序设计语言。 包括:顺序结构,选择结构,循环结构
选择结构: 分支语句-if和switch
循环结构:循环语句while ,for, do while
c语言语句分为五类:1.表达式语句 2.函数调用语句 3.控制语句 4.复合语句 5.空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(c语言支持三种结构:顺序结构、选择结构、循环结构),他们由特定的语句定义符组成,c语言有九种控制语句。
可分成以下三类:
1.条件判断语句也叫分支语句:if语句、switch语句;
2.循环执行语句:do while语句、while语句、for语句;文章来源:https://www.toymoban.com/news/detail-470486.html
3.转向语句:break语句,goto语句continue语句、return语句文章来源地址https://www.toymoban.com/news/detail-470486.html
if和else if语句:
#include <stdio.h>
// int main()
// {
// 3 + 5;
// printf("hehe");
// ;//空语句
// return 0;
// }
// int main()
// {
// int age = 0;
// //输入
// scanf("%d",&age);
// if (age < 18)
// {
// printf("小学生\n");
// } else
// {
// printf("长大了\n");
// }
// return 0;
// }
int main()
{
int age = 0;
//输入
scanf("%d",&age);
//<18青少年
//18~30青年
//31~50中年
//51~80中老年
//80~100老年
//100+ 老寿星
// if (age < 18)
// {
// printf("青少年\n");
// } else if (age>=18 && age <=30)
// {
// printf("青年\n");
// } else if(age>30 && age <=50)
// {
// printf("中年\n");
// } else if (age>50 && age<=80)
// {
// printf("中老年\n");
// } else if (age > 80 && age <= 100)
// {
// printf("老年\n");
// } else
// {
// printf("老寿星");
// }
// if(age>18)
// printf("成年\n");
// printf("找对象了\n"); if语句默认管理一条语句
if(age>18)
{
printf("成年\n");
printf("找对象了\n");
}
return 0;
}
多层if判断陷阱:
int main()
{
int a = 0;
int b = 2;
if(a==1)
{
if (b==2)
{
printf("hehe\n");
} else
{
printf("haha\n");
}
}
//打印空,都没有满足条件
return 0;
}
switch条件判断语句:
//switch语句进行判断
int main()
{
int day = 0;
scanf("%d",&day);
// switch(整型表达式)
// {
// 语句项
// //是一些case语句:
// case 整型常量表达式:
// 语句
// }
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都执行break
int main()
{
int day = 0;
scanf("%d",&day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default:
printf("输入错误\n");
break;
}
}
练习题:求出m和n的值
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++; //m=3 ,n=1
case 2:
n++; //m=3,n=2
case 3:
switch (n) //switch允许嵌套使用
{
case 1:
n++;
case 2:
m++;//m=4,n=2
n++;//m=4,n=3
break;
}
case 4:
m++; //m=5,n=3
break;
default:
break;
}
printf("m = %d, n = %d\n",m,n);
}
循环语句:for,while,do while
(1)while循环
// int main()
// {
// //while语法结构
// // while(表达式)
// // 循环语句;
// // int i =2;
// // while(i)
// // printf("hehe\n");
// int a = 0;
// printf("%d",a);
// return 0;
// }
//在屏幕上打印1到10
//break 终止循环,跳出循环
//continue
// int main()
// {
// int i=1;
// while(i <= 10)
// {
// if (i ==5)
// {
// //break; //1,2,3,4
// continue; //1,2,3,4
// }
// printf("%d\n",i);
// i++;
// }
// return 0;
// }
// int main()
// {
// int n = 1;
// while(n <= 10)
// {
// if (n == 5)
// {
// continue;//跳过本次循环continue后边的代码,while循环的判断部分
// }
// printf("%d",n);
// }
// return 0;
// }
int main()
{
int ch = getchar(); //A
printf("%c\n",ch); //A
putchar(ch); //打印字符
return 0;
}
int main()
{
int ch = 0;
//EOF - end of file 文件结束标志
//#define EOF (-1)
//在函数读取失败的时候返回了EOF
//sacanf函数读取成功,返回的是读取到的数据的个数
//读取失败返回EOF
//getchar读取成功返回字符的ASCII值
//读取失败返回EOF
// ctrl+Z -回让sacnf 或者getchar 返回EOF
while ((ch = getchar() != EOF))
{
putchar(ch);
}
return 0;
}
int main()
{
//123456
char password[20] = {0};
printf("请输入密码:>");
scanf("%s",password);
printf("请确认密码(Y/N):");
char input = 0;
//scanf("%c",&input);
//把\n处理掉
//getchar(); //n
//清理掉缓冲区中剩余的数据
// while(getchar() != '\n')
// {
// ;
// }
// 清空缓冲区
fflush(stdin); //stdin 清空输入缓冲区,尽量少用,达不到效果,在新版的vs上这个函数功能被取消了
input = getchar();
if('Y' == input)
{
printf("确认成功\n");
} else
{
printf("确认失败\n");
}
return 0;
}
//只打印数字
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if(ch < '0' || ch > '9')
{
continue;
} else
{
putchar(ch);
}
return 0;
}
}
(2)for循环
//for循环
// int main()
// {
// int i = 1; // 1初始化变量值
// while(i<=10) // 2判断
// {
// printf("%d",i);
// i++; // 3调整
// }
// return 0;
// }
//for循环语法
//for (表达式1;表达式2;表达式3)
/// 循环语句:
int main()
{
int i = 0;
for(i=1;i<=10;i++)
{
if(i ==5)
{
//break;
continue;
}
printf("%d",i);
printf("hehe\n");
}
return 0;
}
// int main()
// {
// int arr[10] = {1,2,3,4,5,6,7,8,9,10};
// int i =0; //[0,10)
// //初始化和调整的省略就是啥都不做
// //判断部分省略了,意味着判断上恒为真的
// for(i = 0;i < 10;i++)
// {
// printf("%d\n",arr[i]);
// }
// return 0;
// }
// int main()
// {
// int i = 0;
// int j = 0;
// for (i = 0; i<4;i++)
// {
// for(j=0;j<4;j++)
// {
// printf("hehe\n");
// }
// }
// return 0;
// }
// int main()
// {
// int x,y;
// for(x = 0,y = 0;x<2 &&y<5; ++x,y++)
// {
// printf("hehe\n");
// }
// return 0;
// }
// int main()
// {
// int i = 0;
// int k = 0;
// for(i = 0,k=0;k=0;i++,k++) //判断为flase 不进行下一步
// {
// k++;
// }
// return 0;
// }
// do while()循环
//do while 循环的语法
// do
// {
// 循环语句;
// } while (表达式);
//使用do while语句打印1~10
// int main()
// {
// int i = 1;
// do
// {
// if(i ==5 ){
// //break;
// continue;
// }
// printf("%d\n",i);
// i++;
// } while (i<=10);
// return 0;
// }
// 计算 n的阶乘
// 5! = 1*2*3*4*5
// n! = 1~n 累积相乘
//不考虑溢出的情况
// int main()
// {
// int n = 0;
// scanf("%d",&n);
// int i = 0;
// int ret = 1;
// for(i=1;i<=n;i++)
// {
// ret = ret*i;
// }
// printf("%d\n",ret);
// return 0;
// }
//计算 1!+2!+3!... + 10!
int main()
{
int n = 0;
int i = 0;
scanf("%d",&n);
//int n = 10;
int sum = 0;
int ret = 1;
for (int i=1;i<=n;i++)
{
ret = ret*i;
sum += ret;
}
printf("%d\n",sum);
return 0;
}
//在一个有序数组中查找具体的某个数字n
int main()
{
// int arr[] = {1,2,3,4,5,6,7,8,9,10}; //升序
// int k = 7;
// int i = 0;
// for (i = 0; i<10;i++)
// {
// if(arr[i] == k)
// {
// printf("找到了,下标是:%d\n",i);
// break;
// }
// }
// if(i == 10)
// {
// printf("找不到了\n");
// }
//折半查找算法
//二分查找算法
//1确定被范围的左右下标left、right
//根据left和right,确定中间元素的下标mid
//根据mid锁定的元素,和查找的元素比较,确定新的查找范围。left和right
int arr[] = {1,2,3,4,5,6,7,8,9,10}; //升序
// printf("%d\n",sizeof(arr)); //计算数组的总大小,单位是字节
// printf("%d\n",sizeof(arr[0])); //4 求一个元素的大小
// printf("%d\n",sizeof(arr) / sizeof(arr[0]));
int k = 7;
int sz = sizeof(arr) / sizeof(arr[0]);
//1
int left = 0;
int right = sz-1;
int flag = 0;
//2
while(left <= right){
int mid = (left + right)/2;
if(arr[mid] == k)
{
printf("找到了,下标是%d\n",mid);
flag = 1;
break;
} else if(arr[mid] < k)
{
left = mid +1;
} else
{
right = mid -1;
}
if (flag == 0)
{
printf("没找到\n");
}
}
return 0;
}
#include <string.h>
#include <stdlib.h>
//#include <windows.h>
//Sleep需要一个windows.h的头文件
//编写代码,演示多个字符从两端移动,向中间汇聚
int main()
{
char arr1[] = "welcome to school!";
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);//单位是毫秒
system("clear"); //system函数可以执行系统命令,cls是清理屏幕
left++;
right--;
}
return 0;
}
//编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)
int main()
{
int i = 0;
char password[20] = {0};
for(i=0;i<3;i++)
{
printf("请输入密码:>");
scanf("%s",password);
//判断密码是否真确
//两个字符串比较相等是不拿使用==,应该使用strcmp库函数
//if(password == "123456") 错误
//strcmp返回0表示两个字符串相等
//strcmp返回>0表示第一个字符串大于第二个字符串
//strcmp返回<0表示第一个字符串小于第二个字符串
if(strcmp(password,"123456") == 0) //strcmp函数需要string.h库
{
printf("登录成功\n");
break;
} else
{
printf("密码错误\n");
}
}
//1 2
if(i == 3)
{
printf("退出程序,登录失败\n");
}
return 0;
}
//goto语句
// void test()
// {
// flag;
// printf("test\n");
// }
// int main()
// {
// again:
// printf("hehe\n");
// printf("hehe\n");
// printf("hehe\n");
// printf("hehe\n");
// goto again;
// //goto flag; //goto语句只能在一个函数内部跳转,不能跨函数跳转
// return 0;
// }
//关机程序
// 1.程序运行起来后,一分钟内电脑关机
//2. 如果输入:我是猪,就取消关机
int main()
{
char input[20] = {0};
//程序倒计时关机
system("shutdown -s -t 60");
again:
printf("请注意,你的电脑在一分钟内关机,如果输入:我是猪,就取消关机\n");
scanf("%s",input);//输入
if(strcmp(input,"我是猪")== 0)
{
system("shutdown -a");
} else
{
goto again;
}
return 0;
}
到了这里,关于C基础-分支和循环语句的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!