文章目录
一、关于C语言的简单介绍
Combined Language,即组合语言,作为计算机设计语言,具有高级语言和汇编语言的特点,可以用来编写系统程序,应用程序,也可以应用到单片机及嵌入式系统的开发中。
1.C语言的特点
- 高效性
- 灵活性
- 功能丰富
- 表达力强
- 移植性好
2.C程序的生成过程
C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。
源程序的扩展名为.c,目标文件的扩展名为.obj,可执行程序的扩展名为.exe。
3.一些说明
1.main()为主函数,一个C程序有且只有一个,且是程序执行的入口。
2.#include<>为预编译处理命令,不算语句。
3.注释用 /* ……*/,部分支持单行注释 //……。
二、标识符 常量 变量 数据类型
1. 标识符
(1)标识符的命名规则
- 只能由字母数字下划线构成
- 第一个字符必须是下划线或字母,不能是数字。
- 区分字母的大小写。
- 不允许使用C语言规定的关键字为标识符命名。
(2)标识符的分类
C语言的标识符分为 关键字,预定义标识符,用户标识符。
2.常量
常量按类型可划分为:整型、实型、字符、字符串、符号常量。
①. 整型常量 如6,7,-2
其中八进制以数字0开头,十六进制以0x或(0X)开头。
编译器会自动将其转换为二进制形式存储。
注:整型常量分为(unsigned) int 、(无符号)长整型常量。
②. 实型常量 如 6.3,-6.3,5.82f
指数形式:以字e 或 E 代表以10为底的指数。e 左边是数值部分,右边是指数部分,必须是整数形式。
注:实型常量(浮点数)(float \ double\ long double)
③. 字符常量 如‘7’,‘A’,‘h’(不能是中文)
特殊的字符常量:转义字符(\)
注:只能放1个字符,单引号括起来。错误写法:’ab’,’12’
④. 字符串常量 如“9”,“Hallo Word”,“我们是字符串”
注:用双引号括起来的就是字符串⑼
⑤. 符号常量
由预处理命令 “#define” 定义的常量。
3.变量
变量在使用前要定义,定义后在内存中申请一段空间用来存放变量的数值,变量的不同类型代表存储单元的大小的不同。
- 整型变量(括号内为VC++6.0下的字节数/B)
int (4)、short int (2) 、long int (4) - 实型变量
float (4)、double (8)、long double(8) - 字符变量
char(1)
注:存储是在对应的内存单元存储对应的ASCII码,字符数据进行算数运算,相当于对应的ASCII码的运算。
4.类型的自动转换与强制转换
- 自动转换
- 强制转换
表示形式:(类型)(表达式);
三、常用的数学函数
函数名 | 功能 |
---|---|
sqrt(x) | 求x的平方根 |
fabs(x) | 绝对值 |
pow(x,y) | x^y |
四、总结性函数
【题目】键盘输入三角形的三边,利用数学库函数求三角形的面积。
编程涉及知识点:强制类型转换、数学库函数、键盘输入输出。
# include<stdio.h>
# include<math.h>
int main()
{
float a,b,c,area;
printf("Please input a,b,c:");
scanf("%f%f%f",&a,&b,&c);
s = (a+b+c) / 2;
area = (float)sqrt(s*(s-a)*(s-b)*(s-c));
ptintf("area = %f\n",area);
return 0;
}
Please input a,b,c:3,4,5
area = 6.000000
【程序改进思路】:判断输入的a,b,c是否能构成三角形。
练习算法提供:
【题目】:编程计算并输出一元二次方程ax²+bx+c=0的两个实根。其中a,b,c的值由用户输入。
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c;
double delt,x1,x2;
printf("请输入一元二次方程的系数a,b,c的值:\n");
scanf("%f%f%f",&a,&b,&c);
delt = b*b-4*a*c;
x1 = (float)(-b+sqrt(delt))/(2*a);
x2 = (float)(-b-sqrt(delt))/(2*a);
printf("x1 = %lf,x2 = %lf\n",x1,x2);
return 0;
}
请输入一元二次方程的系数a,b,c的值:
1
-7
11.25
x1 = 4.500000,x2 = 2.500000
Process returned 0 (0x0) execution time : 14.219 s
Press any key to continue.
【算法改进思路】1.判断输入的a,b,c是否有实根;2.实根求值算法进行改进;
示例:
x1 = (float)(-b+sqrt(delt))/(2*a);
x2 = (float)(-b-sqrt(delt))/(2*a);
*/
这段代码改为
p = (-b)/(2*a);
q = (float)sqrt(delt)/(2*a);
x1 = p+q;
x2 = p-q;
算法还有哪些地方可以改进,欢迎留言!