C语言基础
小知识:
vim快捷键
ctrl+p //自动补齐
esc+ v 选中要对齐的 + = // 自动对齐选中
当在vim中编辑文本时,终端不小心关闭了,找回文件方法:
ldy@ldy:~$ ls -a . .config LinuxStudy .viminfo 文档 .. C-Study .local .vimrc 下载 .bash_history examples.desktop .mozilla 公共的 音乐 .bash_logout .gnupg .profile 模板 桌面 .bashrc .hello.c.swp .ssh 视频 .cache .ICEauthority .sudo_as_admin_successful 图片 ldy@ldy:~$ vim hello.c ldy@ldy:~$ rm .hello.c.swp ldy@ldy:~$ vim hello.c
#echo $? //想知道刚刚执行的命令返回值是否成功
一、main函数
函数是C语言程序中最小的单位
main:main函数是程序的入口也是程序的出口
用法
int main()
int main(int argc , char *argv[])
int main(int argc , char **argv)
返回值
return 0 成功
return !0 失败
二、变量
定义变量的注意事项:
- 定义一个变量,变量不能重复定义,否则报错
- 定义变量,变量的作用域的范围,在当前的这个方法中有效的
- 在同一行上是可以定义多个变量,但是不建议
- 定义变量,不能以数字开头
定义:在程序运行过程中,值随时可能会发生变化的量
语法:[存储类型] 数据类型 变量名 = 初始值;
拓展
printf用法:推荐man 3 printf手册 //可以参考printf用法大全,C语言printf格式控制符一览表 (biancheng.net)
scanf用法:推荐man 3 scanf手册 //可以参考C语言scanf函数用法完全攻略 (biancheng.net)
科学计数法:3.0E-23 //3.0*10^-23
数据类型 | 占用空间 | 有效数字范围 | 打印格式 |
---|---|---|---|
float(单精度浮点型) | 4字节 | 7位有效数字 | %f |
double(双精度浮点型) | 8字节 | 15~16位有效数字 | %lf |
int(整型) | 4字节 | (-2^31 ~ 2^31-1) | %d |
示例:
#include<stdio.h>
int main()
{
int i = 10 , j = 300; //定义整型变量
float f = 3.14; //定义实型变量(浮点型) 注意:定义变量,不能以数字开头
int num;
/*打印输出*/
printf("hello world!\n");
printf("显示每个变量的值\n");
printf("i = %d\nj = %d\nf = %f\n",i,j,f);
/*打印变量加法->方法一*/
printf("显示变量i+j的和\n");
printf("NUM = %d\n",i+j);
/*打印变量加法->方法二*/
num = i+j;
printf("显示变量i+j的和\n");
printf("num = %d\n",num);
return 0;
}
演示:
三、常量
注意:常量不可能在 = 左边
定义: 在程序运行中,值不会发生变化的量
作用: 用于记录程序中不可更改的数据
定义常量两种方式
-
#define 宏常量:
#define 常量名 常量值
- 通常在文件上方定义,表示一个常量
#define pi 3.14 //定义宏常量pi
-
const修饰的变量
const 数据类型 常量名 = 常量值
- 通常在变量定义前加关键字const,修饰该变量为常量,不可修改
四、循环结构
for循环语句
作用: 满足循环条件,执行循环体语句
语法:for(初始化;循环成立条件;变化) { 循环体; }
示例:
int main()
{
int i , sum = 0;
for (i=0;i<=100;i++)
{
sum = sum + i;
}
printf("i = %d\n",i);
printf("sum = %d\n",sum);
return 0;
}
五、注释
作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
- 单行注释:
// 描述信息
- 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明
- 多行注释:
/* 描述信息 */
- 通常放在一段代码的上方,对该段代码做整体说明
提示:编译器在编译代码时,会忽略注释的内容
练习
练习一
用c语言写一个计算圆的周长和面积的程序
代码:
#include <stdio.h>
/*
#define pi 3.14 //定义宏常量pi
*/
int main()
{
int r; //定义圆的半径
float pi = 3.14; //定义圆周率
float s,c; //定义圆的面积,周长
printf("请输入圆的半径\n");
scanf("%d",&r);
s = pi*r*r; //求圆的面积
c = 2*pi*r; //求圆的周长
printf("圆的面积:%f\n",s);
printf("圆的周长:%f\n",c);
return 0;
}
演示:
各个类型进行混合计算时,向精度高的靠拢
练习二
一个水分子的质量约为3.0*10^-23g,1夸脱水大约有950g,编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少水分子
代码:
#include <stdio.h>
#define M 3.0E-23 //定义一个水分子质量
#define water 950 //定义1夸脱水质量
#define n (water/M) //定义1夸脱水含有的水分子数
int main()
{
int kuatuo; //定义要输入的夸脱数变量
double numb; //定义总水分子数
printf("请输入水的夸脱数\n");
scanf("%d",&kuatuo);
numb = n*kuatuo; //计算kuatuo个夸脱数水所含有的水分子数,赋值给numb
printf("%d夸脱水中包含水分子数为:%lf\n",kuatuo,numb);
printf("%d夸脱水中包含水分子数为:%e\n",kuatuo,numb); // %e->以科学计数法的方式显示
return 0;
}
演示:
练习三
求三角形的面积s 和 area
代码:
#include <stdio.h>
#include <math.h>
int main()
{
int a,b,c;
double s,area;
printf("请输入三角形的边长\n");
printf("a=");
scanf("%d",&a);
printf("\nb=");
scanf("%d",&b);
printf("\nc=");
scanf("%d",&c);
/*if error*/
if(a+b <= c || b+c <= a || a+c <= b)
{
printf("构不成三角形\n");
return 1;
}
s = 1.0/2*(a+b+c);
area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("s = %lf\n",s);
printf("area = %lf\n",area);
return 0;
}
演示:
面试直击
1.请定义一个宏,宏名自取,宏体为一年的秒数
#define SEC_YEAR (60LL*60LL*24LL*365LL) //给每个变量加上单位