c语言是【结构化的】程序设计语言
1.顺序结构
2.选择结构 if switch
if else语句
在c语言中,0表示假,非0表示真,即-1也表示真。
#include<stdio.h>
int main() {
int a = 10;
a = -1; //在c语言中,0表示假,非0表示真,即-1也表示真
if (a) {
printf("真\n");
}
else {
printf("假\n");
}
return 0;
}
在下列代码中,因为if和else只能执行一句,所以在该代码中,if和else合起来算一条语句,并且else是就近匹配if的。
#include<stdio.h>
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(整型表达式) { 语句项; }
case 整型常量表达式:
语句;
break;
#include<stdio.h>
int main() {
int a = 0;
scanf("%d", &a);
switch (a) //必须为整型或者整型变量
{
case 1: //必须为整型或者整型常量表达式,但是枚举也可以
printf("周一\n");
break; //如果不加break,则直接执行下面的case 2、case 3的语句,直到遇见break跳出switch
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 : //default可以写在任何一个case标签可以出现的位置
//当switch表达式的值与所有case都不匹配时,就会执行default中的语句。
printf("输入错误");
break;
}
}
3.循环结构 while for do while
while语句
当while语句中遇到continue时,就会从continue开始跳过这次循环,直接开始下次循环。
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
continue; //因为直接跳过这次循环,所以i没有++,所以while会一直循环判断 5 <= 10
printf("%d ", i); //打印 1 2 3 4
i++;
}
return 0;
}
getchar()和putchar()
#include<stdio.h>
int main() {
int ch = getchar(); //getchar()返回的是该字符的ASCII码
putchar(ch); //putchar()根据传入的ASCII码值,然后显示对应的字符
return 0;
}
字符串缓存
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password);
printf("请确认密码(Y/N):");
int ch = getchar();
if ('Y' == ch)
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
可以使用下面的代码来消去
#include<stdio.h>
int main()
{
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password);
printf("请确认密码(Y/N):");
int temp = 0;
while ((temp = getchar()) != '\n'); //消除缓冲区中的其他字符或者空格,当最后还剩一个\n时,temp将\n取走
//然后判断不满足while条件,则跳出循环。
int ch = getchar();
if ('Y' == ch)
{
printf("确认成功\n");
}
else
{
printf("确认失败\n");
}
return 0;
}
下面这个代码的作用是只打印数字,跳过其他字符
#include<stdio.h>
int main()
{
char ch = 0;
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
{
continue;
}
putchar(ch);
}
return 0;
}
for语句
for语句的三个表达式都可以省略,但是在使用时不建议省略。
当for循环的判断部分省略了时,就意味着判断恒为真。
#include<stdio.h>
int main()
{
//for循环的判断部分省略了,就意味着判断恒为真
for (;;)
{
printf("呵呵\n"); //会死循环打印
}
return 0;
}