c的详细学习(1)C语言概述
本节用来简要介绍c语言。
(1)C语言的特点:
C语言是一种集汇编语言及高级语言为一身的,面向过程的结构化和模块化的程序设计语言。
特点:
兼具高级语言与低级语言的双重能力。C语言允许直接访问内存地址,能进行位操作,能实现汇编语言的大部分功能,能直接对硬件进行操作,所以又被称为中级语言。
生成的目标代码质量好,程序的执行效率高。
语言简洁,结构清晰。C语言强大的函数功能为程序的模块化和结构化提供了保证。
语言表达能力强。
程序的通用性和可移植性好。C语言没有依赖于硬件的输入输出语句,而是采用系统库函数进行输入和输出操作,因此C语言不依赖任何硬件系统,这种特性使得C语言编写的程序很容易移植到其他环境中。
C语言的不足:语法限制不严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不做检查等。
(2)介绍C语言的程序结构:
#include<stdio.h> /*编译预处理*/ float area(float h,float w){ /*定义函数*/
double s;
s=h*w;
return s;
} int main(){
double h1,h2,w1,w2,s1,s2;
h1=10.5;w1=20.5;
h2=1.5*h1;w2=1.5*w1;
s1=area(h1,w1);
s2=area(h2,w2);
printf(“area=%6.2f”,s1+s2);
}
程序运行结果:
第一次注意到这个提醒错误:
问题原因: 应该是编译器需要文件最后有一个回车,作为文件结尾。
解决方法:在*.c文件最后面添加上一个回车,独立成一行。(在程序代码的最后面多敲一个空行,也就是说在右括号后打个回车键。因为gcc对你的源文件有要求,就是.c or .cpp文件后面要有一个空行)
*编译预处理: 所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。编译预处理是C语言区别于其它高级程序设计语言的特征之一,它属于C语言编译系统的一部分。C程序中使用的编译预处理命令均以#开头,它在C编译系统对源程序进行编译之前,先对程序中这些命令进行“预处理”。编译预处理命令的三种不同形式:宏定义、文件包含和条件编译。
*宏定义(也叫宏替换):#define PI 3.14
宏名一般用大写;宏定义结尾不加分号;
宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
宏展开不占运行时间,只占编译时间
可以用#undef终止宏定义的作用域;
例子1:#define S(a,b) a*b
area=S(3,2);第一步被换为area=a*b;第二步被换为area=3*2;
例子2.#define S(r) r*r
area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;
正确的宏定义是#define S(r) ((r)*(r))
(3)编译源程序:
为了使计算机能够执行高级语言源程序,必须把源程序转换为二进制形式的目标程序,这个过程称为编译源程序。
编译是以源程序文件为单位分别进行的,每个源程序文件对应生成一个目标文件,目标文件的扩展名为“.obj”。编译结束之后,得到一个或多个目标文件,此时要使用系统提供的“连接程序(linker)”讲一个程序的所有目标文件和系统的库文件以及系统提供的其他信息连接起来。
(4)算法与程序设计基础:
程序=算法+数据结构+程序设计方法+语言工具+环境
算法分为数值运算算法和非数值运算算法两种。数值运算算法是对问题的数值求解,例如对微分方程的求解,对一元二次方程求解等;费数值运算算法包括非常广泛的领域,如信息检索,事务管理,数据处理等。
程序设计的经典算法:
穷举法:百元买百鸡问题(假设每只小鸡0.5元,每只公鸡2元,每只母鸡3元,现在有100元买100只鸡,问:有几种买法。)
x+y+z=100;
3x+2y+0.5z=100;
代码如下:
#include<stdio.h> int main(){
int x,y,z;//分别代表小鸡,公鸡和母鸡数量
int flag=;
for(x=;x<=;x++){
for(y=;y<-x;y++){
z=-x-y;
if(*x+*y+0.5*z==){
printf("第%d种买鸡方案是:%2d只小鸡,%2d只公鸡,%2d只母鸡\n",flag,x,y,z);
flag++;
}
}
}
return ;
}
运行结果如下:
输出1到100间的素数:
代码如下:
#include<stdio.h> int main(){
int i,m;
int flag=;
for(i=;i<=;i++){
for(m=;m<=i;m++){
if(i%m==){
flag++;
}
}
if(flag<=){
printf("%2d是素数\n",i);
}
flag=;
}
return ;
}
运行结果如下:
c的详细学习(1)C语言概述的更多相关文章
- 大数据技术之_16_Scala学习_01_Scala 语言概述
第一章 Scala 语言概述1.1 why is Scala 语言?1.2 Scala 语言诞生小故事1.3 Scala 和 Java 以及 jvm 的关系分析图1.4 Scala 语言的特点1.5 ...
- 乐字节Java学习01-Java语言概述,Java发展前景,Java的特点
从这篇文章开始,小乐准备写一整系列的Java学习文章,一步一步带您进入Java的神奇世界! 这是第一篇:Java语言概述以及Java的发展前景 1.SUN公司介绍 SUN公司全称是Stanford U ...
- NLP&深度学习:近期趋势概述
NLP&深度学习:近期趋势概述 摘要:当NLP遇上深度学习,到底发生了什么样的变化呢? 在最近发表的论文中,Young及其同事汇总了基于深度学习的自然语言处理(NLP)系统和应用程序的一些最新 ...
- Notes 20180506 : Java程序设计语言概述
2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...
- go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 点击加入 文件操作 func Open(name string) (file *File ...
- OpenGL官方教程——着色器语言概述
OpenGL官方教程——着色器语言概述 OpenGL官方教程——着色器语言概述 可编程图形硬件管线(流水线) 可编程顶点处理器 可编程几何处理器 可编程片元处理器 语言 可编程图形硬件管线(流水线) ...
- Delphi XE5教程1:语言概述
内容源自Delphi XE5 UPDATE 2官方帮助<Delphi Reference>,本人水平有限,欢迎各位高人修正相关错误! 也欢迎各位加入到Delphi学习资料汉化中来,有兴趣者 ...
- OGG学习笔记01-基础概述
OGG学习笔记01-基础概述 OGG(Oracle Golden Gate),最近几年在数据同步.容灾领域特别火,甚至比Oracle自己的原生产品DataGuard还要风光,主要是因为其跨平台.跨数据 ...
- java基础---java语言概述
一.计算机编程的两种范型 1.面向过程的模型---具有线性执行特点,认为是代码作用于数据. 2.面向对象的模型---围绕它的数据(即对象)和为这个数据定义的接口来组织程序:实际上是用数据控制代码的访问 ...
- 01 C语言程序设计--01 C语言基础--第1章 C语言概述&第2章 GCC和GDB
走进嵌入式开发的世界,企业级项目课程让你达到企业嵌入式应用开发要求.名师在线答疑,解决疑难.科学评测体系,系统评估学习.核心项目实........ 30 门课程 241小时12分钟 824 人学习 学 ...
随机推荐
- 【VBA】获取模板保存的路径
使用VBA如何获取模板保存的路径呢?具体代码如下: Sub 获取Excle模板保存路径() MsgBox "获取Excle模板保存路径:" & Application.Te ...
- JQuery find函数选择器使用
- 《HTML 5网页开发实例具体解释》样章、内容简单介绍、前言
http://spu.jd.com/1167757597.html http://product.dangdang.com/23484942.html 样章 http://download.csdn. ...
- java 实现HttpRequest 发送http请求
package com.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...
- python单元测试unittest实例详解
转自:http://blog.csdn.net/five3/article/details/7104466 单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也 ...
- Unable to resolve address ' ' service ' ': Name or service not known
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- Oracle PL/SQL 高级编程
1. 复合数据类型--记录类型 Ø 语法格式 type 类型名 is record ( 字段1 字段1类型 [not null]:=表达式1; 字段2 字段2类型 [not n ...
- linux下网卡bonding配置
linux下网卡bonding配置 章节 bonding技术 centos7配置bonding centos6配置bonding 一.bonding技术 bonding(绑定)是一种linux系统 ...
- wamp 两个不同的php.ini
最近在本地开发的windows wamp环境安装一个vld 扩展,碰见一个奇怪的问题,phpinfo() 有 而cli 命令模式里面却没有 最后发现wamp phpinfo()和cli命令模式指向的p ...
- 工具类之Condition
再次看到Condition,第一感觉还是觉得它和Mutex的功能是一样的,没必要存在.心里这么想,其实自己也知道怎么可能多余呢?老老实实的再分析一下代码,这次一定要把理解出来的内容记下来!都怪平时写代 ...