1.顺序结构
顺序结构顾名思义,就是程序自上而下依次执行,例如下面求两个数的和。
#include
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);//输入两个数,中间用空格隔开
int sum = a + b;
printf("%d\n", sum);
return 0;
}
2.分支结构
也叫选择结构,它不像顺序结构不管怎么样都是从上往下依次执行,它要先判断是否满足所需的条件才会执行该代码块里面的代码。
①if(条件)
{
分支体
}
#include
int main()
{
int a = 0;
scanf("%d", &a);//输入一个数赋值给a
if (a > 0)//判断这个数是否大于0
{
printf("%d\n", a);
}
printf("你输入的数小于或等于0");
return 0;
}
分析:
若if{ }里面的分支体只有一条语句,这个“{ }”符号可写可不写;但是有两条语句或两条以上必须得写上“{ }”。
②if(条件)
{
分支体
}
else
{
分支体
}san
#include
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 0)//“ % ”求余字符
printf("偶数\n");
else
printf("奇数\n");
return 0;
}
③嵌套型的
if(t条件)
{
分支体
}
else if(条件)
{
分支体
}
else if(条件)
{
分支体
}
.........
else
{
分支体
}
#include
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
printf("少年\n");
else if (age >= 18 && age < 40)
printf("青年\n");
else if (age >= 40 && age < 60)
printf("壮年\n");
else if (age >= 18 && age < 40)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
// 逻辑上是不满足要求的
//if (18 <= age < 40)//会报错
注意:最后一个else不能写上条件,否则编译器会报错。
④多重选择switch()语句
switch (表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
┇
case 常量表达式n: 语句n
default: 语句n+1
}
#include
int main()
{
int day = 0;
scanf("%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("输入错误,请输入1-7的数字\n");
break;
}
return 0;
}
注意:case 1语句执行完它后面的语句后,若不想执行下面的代码,需要在最后加上break语句,不然会继续往下执行,直到遇到break或遇到最后的default,执行完它里面的代码也会结束该switch。
switch语句也是允许嵌套的。
3.循环结构
可以重复的执行多个语句,循环次数有条件语句限制。常见的循环语句有三种:while(),do{ }while()和for()循环。
①while()循环
while(条件)
{
循环体
}
在屏幕上打印一到十。
#include
int main()
{
int i = 1;
while (i<=10)
{
printf("%d\n", i);
i++;
}
return 0;
}
运行结果:
注意:如果条件为真,执行循环体一次,然后再次判断条件。在条件为假之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代。
②do
{
循环体
} while(条件);
#include
int main()
{
int i = 1;
do
{
printf("%d\n", i);
i++;
} while (i <= 10);
return 0;
}
运行结果:
注意:不管条件是否成立,循环体里面的语句至少都会执行一次。因为代码是从上往下依次执行的,先进do里面执行循环体的语句再来判断条件是否满足。
while(条件); 括号后面的分号一定要写上。
③for()循环
for(初始化;判断;更新)
{
循环体
}
打印0到9:
#include
int main()
{
int i = 0;
for (i = 0; i < 10; i++) //建议使用前闭后开区间
{
printf("%d\n",i);
}
return 0;
}
运行结果:
注意:for语句使用3个表达式控制循环过程,分别由分号隔开。初始化表达式在执行for语句之前只执行一次;然后对判断表达式求值,如果表达式为真,执行循环一次;接着对更新表达式求值,再次检查测试表达式。
for的初始化、判断和更新都可以省略。for(;;)
中间的判断部分如果省略,就意味着判断恒为真,就构成死循环。
如果条件允许,个人不建议省略for循环的3个表达式。
最后
用选择和循环模块来模拟修改密码系统:
#include
int main()
{
char input[20] = { 0 };
printf("请输入密码:>");
scanf("%s", input); //读取字符串的时候,遇到空格就结束了
//getchar();//拿走\n
//清理缓冲区
int tmp = 0;
while ((tmp = getchar()) != '\n')
{
;//空语句
}
printf("请确认密码(Y/N):>");
int ch = getchar();
if (ch == 'Y')
{
printf("确认成功!\n");
}
else
{
printf("确认失败!\n");
}
return 0;
}
运行结果:
getchar() - 获取(输入)一个字符
getchar读取失败的时候返回EOF
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)