C语言是结构化的程序设计语言
分支语句----选择结构
1.if语句
2.switch
循环语句
1.while
2.for
3.do while
C语言中由一个分号;隔开的就是一条语句;
if语句
if(表达式)
语句;
if(表达式)
语句1;
else
语句2;
if(表达式)
语句1;
else if
语句2;
else
语句3;
代码演示:
#include <stdio.h>
int main()
{
int a = 10;
if (a >= 18)
printf("成年人\n");
else
printf("未成年\n");
return 0;
}
逻辑错误代码示例:
int a;
printf("请输入年龄:\n");
scanf("%d", &a);
if (a < 18)
printf("未成年\n");
else if (18 < a < 60) //会出现逻辑错误(18 < a)是正确的,值为1
printf("中年人\n");
else
printf("老年人\n");
return 0;

这样修正就行了,&&是逻辑与;
else if (a >= 18 && a < 60)
注意:else不是必须存在的;
else悬空:
int a = 1, b = 2;
if (a == 0)
if (b == 2)
printf("haha\n");
else
printf("hehe\n");
return 0;
应该是这样的:
int a = 1, b = 2;
if (a == 0)
{
if (b == 2)
{
printf("haha\n");
}
else
{
printf("hehe\n");
}
}
return 0;
else是跟上面最近的一个if匹配的;—但是可以通过花括号标明匹配关系
形成良好的代码风格:—空格、花括号、命名、缩进
不同代码风格演示:
//代码one
if(condition)
{
return x;
}
return y;
//代码two
if(condition)
{
return x;
}
else
{
return y;
}
这两种代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int test1()
{
if (1)
{
return 1;
}
return 2;
}
int test3()
{
if (1)
{
return 11;
}
else
{
return 22;
}
}
int main()
{
test1(); //单纯执行并不输出
printf("%d\n", test1());
//printf("%d\n", test2());
printf("%d\n", test3());
return 0;
}

事实证明这两种代码事实是一样的,第二种风格好;
补充:
int test1()
{
if (1)
{
return 1;
}
return 2;
return 3;
}
int test3()
{
if (1)
{
return 11;
}
else
{
return 22;
return 33;
}
这样也是一样的,不只是第一行!!

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////遇到的问题:
1.代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int test2()
{
if (1)
{
printf("1\t");
}
return 0;
}
int main()
{
printf("%d\n", test2());
return 0;
}
结果是:

2.如果代码是:
int test2()
{
if (1)
{
printf("1\t");
}
printf("2\n");
return 0;
}
结果是:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一种良好的代码风格:
if(num==5)
//如果上面这个形式少写一个=号,if里面永远是真,找不出来错误
if(5==num)
//如果这个少写一个=号,编译器错误,因为左操作数必须为左值,左边那个数不能被改
小练习:输出1-100之间奇数
思路:先产生1-100之间的数,然后判断是否为奇数,再决定是否输出;
int i ;
for (i = 1; i <= 100; i++)
{
if (1 == i % 2)
{
printf("%d\n", i);
}
}
for (int i = 1; i <= 100; i += 2)
{
printf("%d\t", i);
}
return 0;
int i = 1;
while (i <= 100)
{
printf("%d\t", i);
i = i + 2;
}
return 0;
注意点:i+=2///////////while //////
switch语句
switch语句也是一种分支语句,往往用于多分支的情况;
switch(整型表达式)
{
///语句项;
//case 整型常量表达式:
case 1:语句;
case 2:语句:
...
case n:语句
}
代码示例如下:
int m=0; //只能是整型,不可以是浮点型
printf("请输入数字:\n");
scanf("%d", &m); //不能写n=1,因为n是变量
switch (m)
{
case 1: //case 后面可以是1+0,是常量表达式就可以
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;
}
return 0;
}
break不是一定要加上,只要逻辑不错就行;
int m = 0;
printf("请输入数字:\n");
scanf("%d", &m);
switch (m)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
}
return 0;
结果是这样的:可以滑下去,但是如果有break的话,直接退出switch选择语句了;

写代码的一个好习惯:最后一个case语句要加上break(防止混叠);
出错提示代码如下:
default: //默认值
printf("error!\n");
break;
注意:switch语句允许嵌套使用;
if语句
当if语句后面的条件成立时,执行后面的语句,但是只执行一次;
while语句
while(表达式) //表达式成立时,执行循环语句
{
循环语句;
}
在while语句中,break用于永久的终止循环;
int a = 1;
while (a <= 10)
{
printf("%d ", a);
if (a == 6)
{
break;
}
a += 1; //如果没有这个语句,a的值不会增加死循环了
}
在while循环中,continue的作用是跳过本次循环continue后面的部分,来到判断部分;
分析一段死循环的代码:
int m = 1;
while (m <= 10)
{
printf("%d", m);
if (m == 5); //逻辑错误
{
continue;
}
m++;
}
return 0;
问题出现在哪里呢?-------出现在if()后面有一个分号;
示例:如果想输出除了6的1-10之间的数—合理运用continue、break;
//如果想输出除了6的1-10之间的数
int i = 1;
while (i <= 10)
{
if (i == 6)
{
i++;
continue;
}
printf("%d ", i);
i += 1;
}
return 0;
分析几个代码:
getchar:这个函数从键盘读取一个字符,返回一个整型类型的值(ASCII值),如果输入错误或者文件结束条件,则返回一个EOF(end of file);
putchar:输出一个字符;
示例:从键盘上读取一个字符,然后输出该字符;
int ch = 0;
while ((ch = getchar()) != EOF) //if也可以,但是只能读取一次,读取一个字符
{
printf("%c ", ch);
putchar(ch);
}
return 0;
作用:不断从键盘上读取字符并输出;
Ctrl+Z时,停止读取字符;
注意:getchar从键盘读取字符,并不是直接读取的,中间有一个缓冲区;
当输入H并敲击回车键后,缓冲区的内容是H\n,getchar首先读取H,并输出,再接着读取\n,会有一
个换行的效果,所以也是可以连续输入多个字符的,并不是直接读取字符串;
本文介绍了C语言中的if-else、switch、while和for等控制结构,包括语法、逻辑错误案例及良好代码风格的实践。通过实例演示了如何避免逻辑混淆和提高代码可读性。
6662

被折叠的 条评论
为什么被折叠?



