C语言是一门结构化的程序设计语言,分为三种结构:顺序结构,选择结构,循环结构。
一、分支语句
1.if语句
if语法结构1:
if(表达式)
语句;
int main()
{
int age = 16;
if (age < 18)
printf("未成年\n");
return 0;
}
if语法结构2:
if(表达式)
语句1;
else
语句2
int main()
{
int age = 20;
if (age < 18)
printf("未成年\n");
else
printf("已成年\n");
return 0;
}
if语法结构3:
if(表达式)
语句1;
else if(表达式2)
语句2;
else
语句3;
int main()
{
int age = 31;
if (age < 18)
printf("未成年\n");
else if (age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("壮年\n");
return 0;
}
如果条件成立要执行多条语句,要用代码块{}
else和其离得最近的、未匹配的if进行匹配
2.switch语句
switch()里面只能放整型
{
case1:
语句;
case2:
语句;
}
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
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;
}
case只用整型常量表达式
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
}
return 0;
}
二、循环语句
1.while循环
int main()
{
int i = 1;
while (i < 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
break 终止循环
continue 结束本次循环,直接进入下一次循环
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)//EOF-end of file文件结束标志,ctrl+z结束
{
putchar(ch);
}
return 0;
}
——→补充:getchar,scanf称为输入函数,工作原理是:首先创造一个输入缓冲区,输入内容后输入函数会读取输入缓冲区里的东西
scanf只会读取空格前的内容
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
2.for循环
for(初始化部分;条件判断部分;调整部分)
int main()
{
int i = 0;
for (i = 1; i < 10; i++)
{
printf("%d\n", i);
}
return 0;
}
for循环的初始化、判断、调整都可以省略,判断部分被省略,则恒为真
3.do...while循环
int main()
{
int i = 1;
do
{
printf("%d", i);
i++;
} while (i <= 10);
return 0;
}
三、以下是一些练习题
1.计算1!+2!+3!+···+10!
int main()
{
int n = 0;
int i = 0;
int sum = 0;
for (n = 1; n <= 10; n++)
{
int jc = 1;
for (i = 1; i <= n; i++)
{
jc *= i;
}
sum += jc;
}
printf("%d", sum);
return 0;
}
2.二分查找法(仅对有序数组有效)
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)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
printf("找到了,下标是:%d,值为%d", mid,arr[mid]);
break;
}
}
if (left > right)
{
printf("找不到");
}
return 0;
}
3.从两侧逐字符显示
#include<windows.h>
#include<stdlib.h>
int main()
{
char arr1[] = "Welcome to our 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(200);//休息0.2秒
system("cls");//执行系统命令的一个函数,cls-清空屏幕
left++;
right--;
}
printf("%s\n", arr2);
return 0;
}
4.输入三次密码
int main()
{
int i = 0;
char password[20] = { 0 };
for (i = 0; i < 3; i++)
{
printf("请输入密码:>");
scanf("%s", password);
if (strcmp(password, "123456")==0)//==不能用来比较两个字符串是否相等,应该使用一个库函数strcmp
{
printf("输入正确!");
break;
}
else
{
printf("密码错误\n");
}
}
return 0;
}