目录
分支语句:if ,switch
循环语句:while ,for ,do while
goto语句
C语言语句
C语言是一门结构化的程序设计语言。有顺序,选择,循环结构。C语言中语句是有分号隔开的语句,比如之前声明一个变量,写输出函数。
分支语句(选择结构)
if, else ,else if。
之前也写过。if和else if后都可以写表达式,两个都不符合,那就else。写一个特殊的代码
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
else和第二个if匹配。实际打字即可发现。else与最近的未匹配的if进行匹配。这是一种悬空else,不看实际写起来else与哪个if对齐。
int num = 4;
if (num = 5)
{
printf("hehe\n");
}
return 0;
会打印hehe,因为num又被赋值为5,此时整个语句为真,然后就会执行输出。=是赋值,不是等于,所以可以执行。这样的代码可以运行,但不能告诉程序员这是个不合格的代码,容易出bug。改为5 == num,这样执行后什么都打印不出来,但是可以运行,这样就会得到提醒。常量和变量相比较时,常量放左边比较好。做一个练习:判断数字是不是奇数,输出1~100之间的奇数。可以有两种。
int i = 1;
while (i <= 100)
{
if (i % 2 != 0)
printf("%d ", i);
i++;
//或者
//printf("%d ", i);
//i += 2;
}
return 0;
switch语句
为了更好的选择。
switch (整型表达式)
{
语句项;
}
语句项就是case表达式
case 整形常量表达式:
语句;
现在看两个程序。
if else方法:
int day = 0;
scanf("%d", &day);
if (1 == day)
printf("monday\n");
else if (2 == day)
printf("tuesday\n");
比较复杂
another:
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("monday\n");
break;
case 2:
printf("tuesday\n");
break;
//......
case 7:
printf("일요일\n");
break;
}
此时打印就可以输入一个数字,然后打印出相应的星期。break的使用是用来及时退出,也是一个代码习惯,选中一个数字后,执行完对应的语句就退出整个代码块,去执行switch之后的代码。
switch (day)
{
case 1:
case 2:
//......
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
输入1~5,就可以打印工作日,输入6或7就可以打印休息日。7后面的break是习惯问题。应该有个好习惯,防止之后还有8的话,程序不出错。再者,在现在的程序里,如果输入没有的数字,程序会执行,但是没有结果,为了防止这个事件。在最后加入default
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
default和case顺序无所谓。这里面也可以出现if语句
case 1:
if (day == 1)
printf("hehe\n");
输入1之后就会打印hehe,工作日。continue就不要出现了,不一定跳到了哪。
循环语句
while循环
先看一下if语句,if是条件为真,就执行,比如
if(1)
printf("haha\n");
如果if改成while,那么就会一直打印haha,一个死循环。while需要一直循环,知道判断为假再停止。
while有break和continue语句。
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d\n", i);
i++;
}
return 0;
}
打印出1~4。如果是continue
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;
printf("%d\n", i);
i++;
}
return 0;
}
这样碰到continue后,本次循环后面的代码就会跳过了,就会回到上面,进入下一次循环,输出1234后就没有下文了,如果把i++放到if前面,那么就可以打印出除了5之外的数字。while中break是用于永久终止循环的,而continue用于终止本次循环。
多写一点东西。
int ch = getchar();
putchar(ch);
printf("%c\n", ch);
return 0;
当输入一个字符,就会打印出两个,一个是putchar,一个是printf。
int ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
执行后,输入一个数字,就打印这个数字,想结束程序,也不是输入EOF,而是ctrl+c,EOF是三个字符,程序读取三次,打印三个字符。EOF是文件结束标志,本质是-1这个值,是end of file。这个不用多理解。
结束。