if(表达式);//表达式: 真:非0,假:0
语句;==是判断相等, =是赋值。
if...else...语句
if(表达式)
语句1
else
语句2分支中包含多条语句:if...else...语句中加多条语句需要用{ }括起来。
在if else语句中,else可以与另一个if语句连用,构成多重判断。 第一种:
#include <stdio.h>
int n = 0;
int main()
{
scanf("%d", &n);
if (n == 0)
printf("输入的值是0\n");
else
{
if(n > 0)
printf("正数\n");
else
printf("负数\n");
}
return 0;
}第二种:
#include <stdio.h>
int n = 0;
int main()
{
scanf("%d",&n);
if(n==0)
printf("零\n");
else if(n>0)
printf("正数\n");
else
printf("负数\n");
return 0;
}悬空else问题:else与最近的if连用 。
大于 : > 小于 : < 大于等于 : >= 小于等于 : <= 相等 : == 不相等 : != ,a >= b关系表达式 常用于判断真假:真 1 , 假 0
int x = 0;
int main()
{
if(3 == 0)
{
printf("hehe\n");
}
return 0;
}注:多个关系运算符不宜连用
int a = 3;
int b = 20;
int c = 5;
int main()
{
if(a < b < c)//这个括号里应该改为(a < b && b < c)
{
printf("hehe\n");//这里会判断a < b为真(1),1 < c所以打印hehe
}
else
{
printf("haha\n");//改后就会打印haha
}
}三目操作符又叫条件操作符,形式如下:
exp1 ? exp2 : exp3注:如果exp1为真,exp2计算,exp3不算。 如果exp1为假,exp3计算,exp2不算。 示例如下:
int main()
{
int a = 0;
int b = 0;
scanf("%d%d",&a,&b);
int m = 0;
if(a > b)//这里到最后的代码可以改为: m = (a > b ? a : b);
{
m = a;
}
else
{
m = b;
}
printf("%d",m);
return 0;
}!:为逻辑取反运算符(改变单个表达式的真假)。 [并且]&&:逻辑与运算符(两侧表达式都为真,则为真)。 [或] ||:逻辑或运算符(一侧表达式为真,则为真)。
a | !a |
|---|---|
(非零)真 | 0(假) |
0(假) | 1(真) |
注:我们一般建议变量要初始化:int a = 0; 如果一个局部变量不初始化,它的值是随机值。 一个全局变量不初始化,它的值是零。 短路:如果左边表达式满足就不算右边的表达式,这种情况称为“短路”。 短路运算法则:这种仅仅根据左侧操作结果能知道整个表达式的结果,不再对右求值,这叫做短路计算。 短路运算法则: 对于&&,左为0(假),右边就不再执行,整体假。 对于 ||,左结果不为0(真),无需执行右边,整体真。
形式:
switch(expression)
{
case value1 : statement
case value2 : statement
default : statement//默认
}注意:switch后的expression必须是整形表达式 case后的值,必须是整型常量表达式。 if语句与switch语句的对比: 用if语句写:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
if(n%3 == 0)
printf("整除,余数为0\n");
else if(n%3 == 1)
printf("余数是1\n");
else
printf("余数是2\n");
return 0;
}用switch语句写:
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch(n%3)
{
case 0:
printf("整除,余数为0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}注:case后有空格。 每个case代码执行完成后,需加break。 switch语句中的break:我们在运用break时,要注意使用的语境,可根据所给的特定环境来合理使用break。 使用示例:
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
printf("工作日\n");
break;
case 6 :
case 7 :
printf("休息日\n");
break;
}
return 0;
}switch语句中的default:我们借助上述示例
#include <stdio.h>
int main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
printf("工作日\n");
break;
case 6 :
case 7 :
printf("休息日\n");
break;
default :printf("输入错误\n");
break;
}
return 0;
}我们可以看出来加上default后这个程序将更加的完善,在输入错误信息时,程序会提醒我们输入错误,这样做就会很好的避免用户输入无效信息而无法判别。 switch语句中case和default的逻辑顺序:没有顺序要求,但一般放最后处理的。
while循环语法结构:
while(表达式)
语句;练习1:打印数字1~10。
#include <stdio.h>
int main()
{
int i = 1;//循环变量的初始化
while(i <= 10)//判断
{
printf("%d\n",i);
i++;//调整
}
return 0;
}练习2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位。
#include <stdio.h>
int main()
{
int n = 0;
scanf("%d",&n);//123
while(n)
{
printf("%d",n % 10);//取最后一位
n = n / 10;//去最后一位
}//输出:321
return 0;
}语法形式:
for(表达式1;表达式2;表达式3)
语句;表达式1 —— 初始化部分 表达式2 —— 判断部分 表达式3 —— 调整部分
练习:打印数字1~10。
#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}语法形式:
do
语句;
while(表达式);练习:打印数字1~10。
#include <stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i = i + 1;
}while(i<=10);
return 0;
}注:循环体至少进行一次,do-while循环先执行后判断。
break的作用是用于永久的终止循环,只要break被执行,直接就跳出循环,继续往后执行。 continue的作用是跳过本次循环continue后边的代码,在for循环和while循环中有所差异的。 1、for循环的初始化、判断、调整三个部分是可以省略的。 2、for循环的判断部分如果省略的话,意味着判断恒成立。
练习:找出100~200之间的素数,并打印在屏幕上。 (注:素数又称质数,只能被1和本身整除的数字,偶数一定不是素数。)
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
int count = 0;
for(i = 101;i < 200;i+=2)
{
//判断i是否是素数
//产生2~i-1之间的数字
int flag = 1;//假设i是素数
int j = 0;//假设 m = a * b,a和b中至少有一个数字是<=√m
for(j = 2;j <=sqrt(i);j++)//sqrt是开平方函数,包含头文件<math.h>
{
if(i % j ==0)
{
flag = 0;//不是素数
break;
}
}
if(flag ==1)
{
printf("%d ",i);//101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
count++;
}
}
printf("\ncount = %d\n",count);//21
return 0;
}C语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。 示例如下:
#include <stdio.h>
int main()
{//next:这里会成为结果2
printf("hehe\n");
goto next;
printf("哈哈\n");
next://这里可以自己命名,这里是结果1
printf("呵呵\n");
//输出hehe和呵呵
return 0;
}结果①:hehe 呵呵 结果②:hehe 无限死循环 尽量少的使用goto语句,在多层循环的代码中,如果要快速逃出使用goto就会非常的方便。
本章内容较多,我会分为上下两个小节来给大家讲解,上半节我们讲解了if语句、三大操作符(关系操作符、条件语句、逻辑操作符)、switch语句、while循环、for循环、do-while循环、循环嵌套以及goto语句,这些内容会让我们了解不少分支和循环的知识,如有讲解不全望给建议!希望能对你们有帮助。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。