本人大一,自动化专业,刚开始学习C语言。(大佬勿喷)
1.if和else 语句
形式为 {if(条件判别式)
(执行语句)}
条件成立,则执行语句,否则将往下走。
在判断某些事情时,只有两种情况,这时可用else。
if(判别式)
(执行语句1)
else
(执行语句2)
当判别式成立,执行1;反之,执行2。
当事情变得复杂时,需要用else if
***值得注意的是,当出现多个if和else时,else总与它最近的一个未配对的if语句匹配。下面来一道例题
#include<stdio.h>
int main()
{
int a=0,b=2;
if(a==1)
if(b==2)
printf("hehe\n');
else
printf("haha"\n);
这段代码的最终结果啥都不打印,因为else与上一个未配对的if匹配。
如果想要打印出haha,需要加上括号,将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");
}
2.关系操作符
关系运算符共有六种
>,<,<=,>=,==,!=
==为等于,=为赋值。
关系表达式返回值为1或0;0为假,1为真。
*****重要的是,多个运算符不宜连用
例如i<j<k。这个式子在数学中成立,但编译器会从左向右进行比较。
#include<stdio.h>
int main()
{
int age;
scanf("%d",&age);
if(18<=age<36)
printf("青年人");
}
这个式子输入值为10也会打印出青年人。
运算时执行(18<=10)<36,所以结果为真。
3.条件操作符
1.exp1? exp2:exp3
若exp1为真,则执行exp2,否则执行exp3。
输入两个数,输出较大者。
#include<stdio.h>
int main()
{
int a,b;
scanf("%d %d",&a,&b);
int m=a>b? a: b;
printf("%d\n,m);
}
4.逻辑操作符
!;取反运算符(改变真假)
&&:与运算符(全面为真,一假则假)
| |: 或运算符(有真为真,全假则假)
判断年份是否为闰年
有两种方式,1是可以整除4而且不能整除100;2是能整除400。
#include<stdio.h>
int main()
{
int year;
scanf("%d",&year);
if((year%4==0 && year%100!=0)||(year%400==0))
printf("%d",year);
}
5.switch语句
switch语句相当于多个else if的简化版。有更好的可读性。
其形式为switch(expression){
case value1:statement
case value2:statement
default:statement
}
根据expression的表达结果在case中找到与之对应的,若找不到则执行default的语句。
#include<stdio.h>
int main()
{
int i;
scanf("%d",&i);
switch(i%3){
case 0:
printf("余数是0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
}
注意的是,1.case和后面的数字要有空格
2.每一个case语句执行后需要在其后面加上break,才能跳出循环,否则会继续执行下一条。
6.while循环
while循环与if形式相类似
while(判断表达式)
执行语句
while循环可以帮助我们打印出一个整数的逆序数。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
while(n)
{
printf("%d ",n%10);
n/=10;
}
}
7.for循环
while循环语句有时判断表达式与执行表达式并非很紧密,for循环解决了这一点。
形式为:for(初始化;判断表达式;执行表达式)
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
printf("%d ",i);
}
用for循环写出来三个部分比较集中,有利于代码的维护。
下面练习打印出1到100之间3的倍数的数字之和。
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=3;i<=100,i+=3)
{
sum=sum+i;
printf("%d ",sum);
}
}
8.do while循环
形式为do
执行语句
while(表达式)
它与while循环的区别在于do while语句循环次数至少为一次,也是最开始的一次,先执行一次,再判断是否继续下去。
下面用do while 循环计算出一个整数的位数。
#include<stdio.h>
int main()
{
int i,a;
scanf("%d",&i);
do
{
i%10;
a++;
while(i)
}
printf("%d",a);
}
9.break和continue语句
***break语句用于终止循环,只要执行break,就会跳出所在循环。
***continue语句是指跳过本次循环的代码,重新进入循环。
break语句在while和for语句效果是一样的,但continue却有所区别。
#include<stdio.h>
int main()
{
int i=0;
while(i<=10)
{
if(i==5)
continue;
printf("%d ",i);
i=i+1;
}
}
#include<stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
{
if(i==5)
continue;
printf("%d ",i);
}
}
第一个输出的值为1 2 3 4
第二个输出的值为1 2 3 4 6 7 8 9 10
下面练习打印出1到100的质数
#include<stdio.h>
int main()
{
int i;
for(i=2;i<=100;i++)
{
int j;
int flag=1;
for(j=2;j<=i-1;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
printf("%d ",i);
}
}
以上是本人认为C语言分支和循环语句总结的一些知识。