分支语句(选择结构)
- if
- switch(整形表达式)
if else 的例子
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
return 0;
}
如果满足if条件就直接返回x,不执行后面的代码
if (condition)
{
return x;
}
return y;
不容易出错的写法
int num = 1;
if (5 == num)
{
printf("aajjj");
}
一百以内奇数
int main()
{
int i = 1;
//for (i = 1;i < 101;i++)
//{
// if (i % 2 == 1)
// {
// printf("%d\n", i);
// }
//}
while (i < 101)
{
printf("%d\n", i);
i += 2;
}
return 0;
}
输出日期 switch决定从哪进,break决定从哪出
int day = 0;
scanf_s("%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;
default:
printf("输入错误\n");
break;
}
- 循环语句(循环结构)
- while
- for
- do while
continue用于终止本次循环,continue后面的代码不执行,直接跳过
break用于终止循环,同意不执行后面的代码
int i = 1;
while (i < 10)
{
if (i == 5)
{
continue;
}
printf("%d\n", i);
i++;
}
输入输出
scanf\printf
读取一个字符
getchar 读取到字符时返回字符的ASCII码值,失败返回EOF
打印一个字符
putchar
//读取字符
int ch = 0;
while ((ch = getchar() )!= EOF)
{
putchar(ch);
}
读取密码
int main()
{
printf("请输入密码\n");
char password[20] = { 0 };
scanf("%s", &password);
//getchar();
//处理\n
while (getchar() != '\n')
{
;
}
printf("请确认\n");
int ch = getchar();
if (ch == 'y')
{
printf("成功\n");
}
else
{
printf("失败\n");
}
char arr[20] = { 0 };
scanf("%[^\n]",arr);//一直读取,直到遇到\n
return 0;
}
\0是转义字符,是字符串结束的标志
for循环 初始化,判断,调整都可以省略
int main()
{
int i = 0;
for (i = 0;i < 10;i++)
{
printf("%d\n", i);
}
return 0;
}
坑
int i = 0;
int k = 0;
for (i = 0, k = 0;k = 0;i++)
{
k++;//不是死循环,而是判断条件为假,不执行
}
do while 先执行后判断 至少执行一次
求1!+......+10!
int i = 1;
int j = 1;
int sum = 1,s=0;
for (i = 1;i <= 10;i++)
{
for (j = 1;j <= i;j++)
{
sum *= j;
}
s += sum;
}
for(i=1;i<=10;i++)
{
sum*=i;
s+=sum;
}
二分查找有序数组
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 7;
int s = sizeof(arr) / sizeof(arr[0]);
int left = 0;
int right = s - 1;
int flag = 0;
while (left <= right)
{
int mid = left + (right-left) / 2;
//int mid = (left + right) / 2;
if (arr[mid] < k)
{
left = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else
{
printf("找到了,下标%d\n", mid);
flag = 1;
break;
}
}
if (flag == 0)
{
printf("找不到\n");
}
return 0;
}