1.常见的关系运算
运算符 | 意义 |
---|---|
== | 相等 |
!= | 不等 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
Note:所有的关系运算符的优先级都比算术运算符低,但比赋值运算高
2.条件判断 if-else
//if-else的使用示例
const int MINOR=30;
const int MAXOR=70;
int age=0;
printf("请输入您的年龄:");
scanf("%d",&age);
if(age<MINOR){
printf("当前正值青春年华,要好好学习,努力向上\n");
}else if(age>MAXOR){
printf("年龄虽然较大,但我们心态永远18!\n");
}else{
printf("时间就像海绵里的水,挤一挤总还是有的!\n");
}
3.循环for-while型
(1)while
//判断整数位数的示例,测试用例请不要大于10位!!!
int num,temp;
int count=1;
printf("请输入一个整数:");
scanf("%d",&num);
temp=num/10;//不断除10
while(temp>0){
count++;
temp=temp/10;
}
printf("您输入的数为%d位",count);
(2)do-while
//我们在上面的那个例子上稍加改进,就可以实现程序的反复执行了
char j='c';
do{
//判断整数位数的示例,测试用例请不要大于10位!!!
int num,temp;
int count=1;
printf("请输入一个整数:");
scanf("%d",&num);
temp=num/10;//不断除10
while(temp>0){
count++;
temp=temp/10;
}
printf("您输入的数为%d位\n",count);
printf("\t##########################\n");
printf("请确认是否继续('是'请输入字符'c'):");
scanf("%s",&j);
}while(j=='c');
(3)for
//实现n!阶乘
int n=0;
int result=1;
printf("请输入你需要计算的最大数:");
scanf("%d",&n);
for(int i=2;i<=n;i++){
result*=i;
}
printf("%d!的结果为%d\n",n,result);
4.循环的选择(Tips for Loops)
<1> 固定次数计算,用for
<2> 必须执行一次,用do-while
<3> 其他情况,用while
5.逻辑类型与运算
(1)bool类型[C99]
#include <stdio.h>
#include <stdbool.h>//C中使用bool类型需要导入的头文件
int main()
{
bool b=true;
printf("%d\n",b);//C中没有真正的bool类型,所以无法直接输出true
return 0;
}
(2)逻辑运算
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
! | 逻辑非 | !a | 若a为true,结果为false |
&& | 逻辑与 | a && b | a、b同时为真结果为真 |
|| | 逻辑或 | a || b | a、b至少其中一个为真结果为真 |
Notes:优先级的顺序:! > && > || AND 避免短路
6.条件运算符与逗号运算符
int count=15;
count = (count > 10) ? count-10 : count+10;//条件运算符示例
printf("%d\n",count);
//逗号运算示例
int c;
c=3+4,5+6;
printf("%d\n",c);//c=7
int d;
d=(3+4,5+6);
printf("%d\n",d);//d=11
Note:条件运算符是一个三目运算符,它的优先级高于赋值运算符,但低于其他运算符
7.多路分支
switch(type){
case 1:
printf("...");
break;
case 2:
printf("......");
break;
case 3:
printf(".........");
break;
default:
printf("....");
}
8.一些小知识
<1>常见运算符的优先级积累
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ( ) | 从左到右 |
2 | ! + - ++ – | 从右到左(单目的+和-) |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | < <= > >= | 从左到右 |
6 | == != | 从左到右 |
7 | && | 从左到右 |
8 | || | 从左到右 |
9 | = += -= *= /= %= | 从右到左 |
<2>int类型最大为什么只能输入十位?
int是将一个数值向下取整为最接近的整数的函数。一般在电脑中,int占用4字节,32比特,数据范围为-21474836482147483647[-2^312^31-1];
#include <stdio.h>
int main()
{
printf("%d",sizeof(int));//可以打印出你的电脑上int类型所占用的字节数
return 0;
}
<3>goto是什么?
goto语句也称为无条件转移语句,在C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向, 转去执行语句标号所标识的语句。goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。
9.编程小例子
Note:以下所提供的代码皆可继续改进提高!!!
a.一定范围内素数的计算;
//素数的计算
int num=0;
printf("请输入你需要计算素数的范围最大值:");
scanf("%d",&num);
for(int i=2;i<=num;i++){
int flag=1;
for(int j=2;j<i;j++){
int t=i%j;
if(t==0){
flag=0;
break;
}
}
if(flag==1){
printf("%d ",i);
}
}
b.输入一个年份判断是否为闰年;
//闰年的计算
int y;
printf("请输入你需要计算的年份:");
scanf("%d",&y);
if(y%4==0){
if(y%100==0 || y%400==0){
printf("%d是闰年\n",y);
}
}else{
printf("%d不是闰年\n",y);
}
c.计算两个数的最大公约数;
//最大公约数的计算
int num1,num2,t;
printf("请输入你需要计算的两个数(空格分开):");
scanf("%d %d",&num1,&num2);
//辗转相除法
while(num2!=0){
t=num1%num2;
num1=num2;
num2=t;
printf("num1=%d num2=%d\n",num1,num2);
}
printf("最大公约数为%d\n",num1);
d.输入一个非负整数,正序分解这个数;
int n,temp;
int mask = 1;
printf("请输入一个非负整数:");
scanf("%d",&n);
temp=n;
while(temp > 9){
temp /= 10;
mask *= 10;
}
do{
int d = n / mask;
printf("%d",d);
if(mask > 9){
printf(" ");
}
n %= mask;
mask /= 10;
}while(mask > 0);