C 语言语句
分支语句
if语句
代码语言:c 复制//单分支
if(表达式)
语句;
//若表达式为真,则执行该语句,否则什么都不执行
if(表达式)
语句1;
else
语句2;
//若表达式为真,则执行语句1,否则执行语句2
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
//若表达式1为真则执行语句1,另外如果表达式2成立则执行语句2
//否则执行语句3,以表达式1为先,三个语句只可执行一个
//只有表达式1为假,后面才可继续往下运行
代码语言:c 复制#include<stdio.h>
int main()
{
int age=17;
if(age<18)
printf("未成年");
else
printf("成年");
return 0;
}
代码语言:c 复制//1.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int num = 0;
scanf("%d",&num);
if (num%2==1)
printf("该数为奇数");
else
printf("该数为偶数");
return 0;
}
代码语言:c 复制//2.
#include<stdio.h>
int main()
{
int i = 1;
while (i<100)
{
if (i%2==1)
{
printf("%d ", i);
}
i ;
}
return 0;
}
switch语句(表达多分支)
代码语言:c 复制#include<stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1://case接常量且为整型常量表达式
printf("星期一n");
break;//break用于switch语句的结束
case 2:
printf("星期二n");
break;
default://当输入值超出switch范围,进入default
printf("输入错误");
break;
}
return 0 ;
}
- break 若未出现则继续往下运行代码
- break 可省略
#include<stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日n");
break;//输入12345值都出现工作日
}
return 0 ;
}
while 语言语句(循环)
代码语言:c 复制
while(表达式)//若表达式为真则无限循环,若变为假则停止循环
{
代码语言:txt复制循环语句
}
代码语言:c 复制#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("ldl大帅哥 ");
i ;
}
return 0;
}
- break 在while中的作用
//终止循环
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if(i==5)
break;//i=5时终止循环
printf("%d ",i);//只打印到 4
i ;
}
return 0;
}
- continue 在while中作用
//终止本次循环
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
i ;
if(i==5)
continue;//i=5时回到while语句循环
//即终止i==5这次的循环
printf("%d ",i);//不打印 5
}
return 0;
}
- getchar()在while中的作用
//getchar()为一个输入函数
//在输入函数中有一个输入缓冲区
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int ch = 0;
int ret = 0;
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password);
//取走缓冲区中的"%s"还剩下n
while ((ch = getchar()) != 'n');
//读取到"n"字符后停止
printf("请确认(Y/N):");
ret = getchar();
if (ret == 'Y')
{
printf("确认成功");
}
else
{
printf("放弃确认");
}
return 0;
}
- putchar()为输出函数
#include<stdio.h>
int main()
{
int ch = 0;
while((ch = getchar())!=EOF)
{
if(ch<'0'||ch>'9')
continue;
putchar(ch);//相当于printf()
}
return 0;
}
for循环
代码语言:C 复制#include<stdio.h>
int main()
{
int i = 0;
// 初始化 判断 调整
for(i=1;i<10;i )
{
if(i==5)
break;//跳出循环
printf("%d ",i);
}
return 0;
}
- 注意:不可再for循环内修改变量,防止for循环失去控制
- 前闭后开写法
for(expr1;expr2;expr3)
{}
- 变种
//1.
for( ; ; )//括号内无表达式,表达式被省略
{
printf("");
}
//2.
for( , ; , ; , )//用多个表达式控制
{
printf("");
}
do...while()循环
代码语言:c 复制#include<stdio.h>
int mian()
{
int i = 0;
do
{
printf("%d");
i ;
}
while(i<10);
}
return 0;
- break与continue用法同上
二分查找法
代码语言:c 复制//从一个数组里找下标为7
#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int k = 7;
int sz = sizeof(arr)/sizeof(arr[0]);//计算元素个数
int left = 0;//左下标
int right = sz - 1;//右下标
while(left<=right)
{
int mid = (left right)/2;
if(arr[mid]<k)
{
left = mid 1;
}
else if(arr[mid]>k)
{
right = mid - 1;
}
else
{
printf("找到了,下标是:%d",mid);
}
}
if(left>right)
{
printf("找不到");
}
return 0;
}
多个字符两端向中间移动
代码语言:c 复制//"welcome to my world !"
//"#####################"
//实现将井号对应上方元素下移
#include<stdio.h>
#include<string.h>//strlen
#include<windows.h>//Sleep
#include<stdlib.h>//system
int main()
{
char arr1[]="welcome to my world !";
char arr2[]="#####################";
int left=0;
int right=strlen(arr1)-1;//右下标,strlen函数不计
while(left<=right)
{
arr2[left]=arr1[left];
arr2[right]=arr1[right];
printf("%sn",arr2);
Sleep(1000);//1000单位为毫秒,停留一秒
system("cls");//system为执行系统命令函数,'cls'为清空屏幕
left ;
right--;
}
printf("%sn",arr2);
return 0;
}
模拟密码登录
代码语言:c 复制//只登录三次
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>//strcmp函数
int main()
{
int i=0;
char password[20]={0};
for(i=0;i<3;i )
{
printf("输入密码:");
scanf("%s",password);
if(strcmp(password,"12160809")==0)//==不能用来比较字符串是否相等,应使用一个库函数-strcmp,括号内相等则为零
{
printf("登录成功n");
break;
}
else
printf("密码错误n");
}
if(i==3)
printf("三次密码均错误,立刻报警,你跑不掉了!- !");
return 0;
}