C语言基础知识回顾
文章目录
主函数
主函数是一个程序的入口,整个程序开始执行的位置,一个程序中最多只能有一个主函数,也可以没有。
int main(void)
{
(语句若干);
return 0;
}
逻辑运算符
运算符 | 含义 | 语法 | 返回值 |
---|---|---|---|
&& | 与 | a&&b | ab都真,则真;其他为假 |
|| | 或 | a||b | ab都假,则假;其他为真 |
! | 非 | !a | a真,返还假:0;a为假,返还真:1 |
位运算
运算符 | 含义 | 语法 | 结果 |
---|---|---|---|
<< | 左移 | a<<x | 整数a的二进制位左移x位 |
>> | 右移 | a>>x | 整数a的二进制位右移x位 |
& | 位与 | a&b | 整数a和b按二进制右对齐,都是1得1,否则为0 |
| | 位或 | a|b | 整数a和b按二进制右对齐,都是0得0,否则为1 |
^ | 位异或 | a^b | 整数a和b按二进制右对齐,相同为0,不同为1 |
~ | 位取反 | ~a | 整数a的二进制数字中1变0,0变1 |
条件运算
格式:
A ? B : C;
解释:
如果A为真,那么则执行并返还B的结果;如果A假,那么则执行并返回C的执行结果。
#include<stdio.h>
int main(void)
{
int a = 5, b = 6;
int c = a > b ? 8 : 9;
int d = a < b ? 8 : 9;
printf("%d\n",c);
printf("%d\n",d);
return 0;
}
运行结果如下:
9
8
--------------------------------
Process exited after 0.08019 seconds with return value 0
请按任意键继续. . .
逗号运算
逗号运算符是C语言中运算符优先级最低的,运算时从左到右,最后一个逗号后面表达式的值作为整体表达式的值输出。
代码示例:
#include<stdio.h>
int main(void)
{
int a = 0, b =0, c = 0;
c = (a += ++b, b +=4); //逗号运算符顺序从左到右,逗号后的值作为整体结果返回
printf("%d,%d,%d",a,b,c);
return 0;
}
运行结果如下:
1,5,5
--------------------------------
Process exited after 0.07596 seconds with return value 0
请按任意键继续. . .
scanf和printf输入/输出
scanf函数的使用:
scanf(“格式控制”,变量地址);
scanf("%d",&n); 其中&为取地址运算符
int mian (void)
{
int a;
scanf("%d",&a);
}
数据类型与scanf格式控制对应关系
数据类型 | 格式控制 | 例子 |
---|---|---|
int | %d | scanf("%d",&n) |
long long | %lld | scanf("%lld",&n) |
float | %f | scanf("%f",&fl) |
double | %lf | scanf("%lf",&db) |
char | %c | scanf("%c",&c) |
字符串(char数组) | %s | scanf("%s",str) |
(注:字符串数组不加&)
printf函数的使用
printf(“格式控制”,变量名称);
数据类型的printf格式符
数据类型 | 格式符 | 例子 |
---|---|---|
int | %d | scanf("%d",&n); |
long long | %lld | scanf("%lld",&n); |
float | %f | scanf("%f",&fl); |
double | %f | scanf("%lf",&db); |
char | %c | scanf("%c",c); |
字符串 | %s | scanf("%s",str); |
(注:char的printf不带&
double在printf中的格式符为%f)
输出格式控制(左右对齐)
(1)%md
%md可以使不足m位的数据类型进行高位补空格右对齐,如果超过m位保持本身不变(下面均以int数据类型为例)
代码示例:
#include<stdio.h>
int main(void)
{
int a = 1234,b = 123,c =123456;
printf("%5d\n",a); //补一个空格
printf("%5d\n",b); //补两个空格
printf("%5d\n",c); //保持原样输出
return 0;
}
运行结果:
1234
123
123456
--------------------------------
Process exited after 0.1893 seconds with return value 0
请按任意键继续. . .
(2)%0md
%0md与%md的不同之处在于用0代替了空格的位置
代码示例:
#include<stdio.h>
int main(void)
{
int a = 1234,b = 123,c =123456;
printf("%05d\n",a); //补一个0
printf("%05d\n",b); //补两个0
printf("%5d\n",c);
return 0;
}
运行结果:
01234
00123
123456
--------------------------------
Process exited after 0.08475 seconds with return value 0
请按任意键继续. . .
(3)%.mf
%.mf是让浮点数保留m位小数输出,遵循四舍五入的原则
代码示例:
#include<stdio.h>
int main(void)
{
double db = 1.23456;
printf("%.0f\n",db); //不保留小数点
printf("%.1f\n",db); //保留1位小数点
printf("%.2f\n",db); //保留2位小数点
printf("%.3f\n",db); //保留3位小数点
printf("%.4f\n",db); //保留4位小数点
printf("%.5f\n",db); //保留5位小数点
return 0;
}
示例结果:
1
1.2
1.23
1.235
1.2346
1.23456
--------------------------------
Process exited after 0.1843 seconds with return value 0
请按任意键继续. . .
循环——switch
switch语句:
switch(表达式)
{
case 常量表达式1:
……
break;
case 常量表达式2:
……
break;
……
case 常量表达式n:
……
break;
default:
……}
代码示例:
#include<stdio.h>
int main(void)
{
int a = 1,b = 2;
switch(a+b)
{
case 1:printf("case 1");break;
case 2:printf("case 2");break;
case 3:printf("case 3");break; //执行case 3
case 4:printf("case 4");break;
default:printf("over!!!");
}
return 0;
}
运行结果:
case 3
--------------------------------
Process exited after 0.1537 seconds with return value 0
请按任意键继续. . .
reak的作用:结束循环
//删掉case 3的break
#include<stdio.h>
int main(void)
{
int a = 1,b = 2;
switch(a+b)
{
case 1:printf("case 1\n");break;
case 2:printf("case 2\n");break;
//继续向下执行直到遇到break跳出
case 3:printf("case 3\n");
case 4:printf("case 4\n");break;
default:printf("over!!!");
}
return 0;
}
运行结果:
case 3
case 4
--------------------------------
Process exited after 0.07365 seconds with return value 0
请按任意键继续. . .
删掉所有break
//删除所有break后,从符合case情况向下输出,包括default的内容
#include<stdio.h>
int main(void)
{
int a = 1,b = 2;
switch(a+b)
{
case 1:printf("case 1\n");
case 2:printf("case 2\n");
case 3:printf("case 3\n");
case 4:printf("case 4\n");
default:printf("over!!!")
}
return 0;
}
运行结果:
case 3
case 4
over!!!
无符合case的情况
#include<stdio.h>
int main(void)
{
int a = 1,b = 2;
switch(a+b)
{
case 4:printf("case 4\n");break;
default:printf("over!!!");
}
return 0;
}
运行结果:
over!!!
------------------------------
break和continue的区别
#include<stdio.h>
int main(void)
{
for(int i = 0;i < 8;i++)
{
if(i == 3)
break; //只打印0 1 2 ,当i等于3时不再执行循环
else
printf("%d\n",i);
}
printf("***********************************\n");
for(int i = 0;i < 8;i++)
{
if(i == 3)
continue; //不打印3,但是打印其他的数字
else
printf("%d\n",i);
}
return 0;
}
运行结果:
0
1
2
***********************************
0
1
2
4
5
6
7
--------------------------------
Process exited after 0.07745 seconds with return value 0
请按任意键继续. . .