前言
是对C语言程序设计的一次期末总结,也是对未来从事相关工作的一次展望和打下基础。编程能力从来不会是一蹴而就的,而是日积月累的反反复复的练习和思考总结出来的,不是多少天就可以速成的。
编程是一项引发积极思维的活动,它不是一种简单的技能,不是只要数据有关规则,熟能生巧就能完成任务的编程,需要指挥编写每一个程序,都要积极开动脑筋,发挥创造精神,编程是一件很灵活的工作,没有标准答案,不同的人可以写出不同的程序。
计算机的本质是“程序的机器”,程序和指令思想是计算机系统中最基本的概念。
大学计算机基础教育:
信息技术的发展
面向应用的需求
科学思维的培养
为什么选择C语言?
C++是为了处理较大规模的程序开发而研制的大型语言,C语言更适合解决某些小型程序的编程,作为传统的面向过程的程序设计语言,在编写底层的设备驱动程序和内嵌应用程序是,往往是更好的选择。
大牛给计算机专业学生的 7 个建议
大牛给计算机专业学生的 7 个建议( C语言程序设计上美国资深软件专家写的《对计算机系学生的建议》)_shaozheng0503的博客-CSDN博客
进行程序设计要解决以下的两个问题:
要学习和掌握解决问题的思路和方法,即算法。
学习怎样实现算法,即用计算机语言编写程序。
第1章程序设计和C语言
程序:一组计算机能识别和执行的指令。
从打下第一行hello world 开始,第一次接触main主函数开始,从第一次调用头文件开始,从第一次return一个返回值开始...... 我们就认识了一个最简单的 C语言程序“This is a C program”
在屏幕上显示一个短句Hello World!
#include <stdio.h>
int main(void)
{
/*---------*/
printf( "Hello World!");
return 0;
}
C语言必须通过编译连接才能执行
算法+数据结构=程序
软件:程序+相关文档
C语言程序的结构
(1)C语言程序主要由函数构成,函数是C语言程序的基本单位。一个C语言源程序必须有一个main函数,可以包含一个main函数和若干个其他函数。主函数可以调用其他函数,其他函数之间可以互相调用,但其他函数不能调用主函数。被调用的函数可以是系统提供的库函数(如printf和scanf函数),也可以是用户根据自己需要自己编制设计的函数。C语言的函数相当于其他语言中的子程序。用函数来实现特定功能。程序全部工作都是由各个函数分别完成的。编写C语言程序就是编写函数。
(2)一个函数由两部分组成
①函数首部。即函数的第一行,包括:函数名、函数类型、函数参数(形式参数)名和参数类型。一个函数名后面必须跟一对圆括号,括号内写函数的参数名及其类型。函数可以没有参数,如:
int mian()
②函数体。即函数首部下面的花括号内的部分。如果一个函数内有多个花括号,以最外层的一对花括号为函数体的范围。函数体一般包括声明部分(声明有关变量和函数类型)和执行部分(执行函数语句)。
(3)一个C语言程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。
(4)C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
(5)每个语句和数据声明的最后必须有一个分号。
C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。
可以用“//”对程序进行注释,注释不被编译,不生成目标程序,不影响程序运行结果。
C语言中允许用两种注释方式:
(1)//开始的当行注释
(2)/* */的块式注释
C语言中的保留字:
scanf小结:
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。
其调用格式为: scanf("<格式化字符串>",<地址表>);
格式化字符串包括以下三类不同的字符;
1、 格式化说明符:
格式化说明符与printf()函数中的格式说明符基本相同。但和printf()函数中格式字符串的用法有一些小区别。我们来看下面这个表。
格式字符 说明
%d 从键盘输入十进制整数
%o 从键盘输入八进制整数
%x 从键盘输入十六进制整数
%c 从键盘输入一个字符
%s 从键盘输入一个字符串
%f 从键盘输入一个实数
%e 与%f的作用相同
附加格式说明字符表
字符 说明
L 输入"长"数据
H 输入"短"数据
M 指定输入数据所占宽度
* 空读一个数据
2、 空白字符: 空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。
3、 非空白字符: 一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。
对自定义函数调用的理解:
与书第八页例1.3类似 一定要记住不论调用什么函数前一定要记得声明
#include "stdio.h"
int main(void)
{
int m, n;
int repeat, ri;
double s;
double fact(int n); //也是第一次见到自定义函数的调用(注意此时自变量到因变量的变化,形参和实参之间的转化)
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d%d", &m, &n);
s=fact(n)/(fact(m)*fact(n-m));
printf("result = %.0f\n", s);
}
}
double fact(int n)
{
double result;
int i;
result=1;
for(i=1;i<=n;i++)
result=result*i;
return result; //注意返回的是什么值! n>>result的变换
}
C语言的编译过程到底是怎样的。
1.预处理(Preprocessing), 2.编译(Compilation), 3.汇编(Assemble), 4.链接(Linking)。
程序设计的任务
程序设计是指从确定任务到得到结果,写出文档的全过程。一般分为以下几个工作阶段:
(1)问题分析 谋定而后动!!!
(2)设计算法 用哪些方法,步骤,一般使用流程图
(3)编写程序 根据得到的算法,用一种高级语言程序编写出源程序
(4)对源程序进行编辑 编译和连接 得到可执行程序
(5)运行程序 分析结果
(6)编写程序文档 向用户提供使用说明书 +
编程是一项引发积极思维的活动,它不是一种简单的技能,不是只要数据有关规则,熟能生巧就能完成任务的编程,需要指挥编写每一个程序,都要积极开动脑筋,发挥创造精神,编程是一件很灵活的工作,没有标准答案,不同的人可以写出不同的程序。
第一章课后题答案:
C语言程序设计第五版 谭浩强 第五版课后答案_月已满西楼的博客-CSDN博客_c程序设计谭浩强第五版课后答案
什么是程序?什么是程序设计?
程序:就是一组能识别和执行的指令,每一条指令使计算机执行特定的操作
程序设计:是指从确定任务到得到结果、写出文档的全过程
2.为什么需要计算机语言?高级语言有哪些特点?
为什么需要计算机语言:计算机语言解决了人和计算机交流是的语言问题,使得计算机和人都能识别
高级语言有哪些特点:
2.1 高级语言的数据结构要比汇编和机器语言丰富;
2.2 高级语言与具体机器结构的关联没有汇编以及机器语言密切;
2.3 高级语言更接近自然语言更容易掌握;
2.4 高级语言编写的程序要经过编译或解释计算机才能执行;
3.正确理解以下名词及其含义:
(1)源程序,目标程序,可执行程序。
源程序:指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令
目标程序:为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名
可执行程序:将所有编译后得到的目标模块连接装配起来,在与函数库相连接成为一个整体,生成一个可供计算机执行的目标程序,成为可执行程序
(2)程序编辑,程序编译,程序连接。
程序编辑:上机输入或者编辑源程序。
程序编译:
先用C提供的“预处理器”,对程序中的预处理指令进行编译预处理
对源程序进行语法检查, 判断是否有语法错误,直到没有语法错误未知
编译程序自动把源程序转换为二进制形式的目标程序
程序连接:将所有编译后得到的目标模块连接装配起来,在与函数库相连接成为一个整体的过程称之为程序连接
(3)程序,程序模块,程序文件。
程序:一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
程序模块:可由汇编程序、编译程序、装入程序或翻译程序作为一个整体来处理的一级独立的、可识别的程序指令
程序文件:程序的文件称为程序文件,程序文件存储的是程序,包括源程序和可执行程序
(4)函数,主函数,被调用函数,库函数。
函数:将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,来完成一定功能
主函数:又称main函数,是程序执行的起点
被调用函数:由一个函数调用另一个函数,则称第二个函数为被调用函数
库函数:一般是指编译器提供的可在c源程序中调用的函数。可分为两类,一类是c语言标准规定的库函数,一类是编译器特定的库函数
(5)程序调试,程序测试。
程序调试:是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程
程序测试:是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行
小结:基本数据类型
关键字:
基本数据类型由11个关键字组成:int、long、short、unsigned、char、
float、double、signed、_Bool、_Complex和_Imaginary。
有符号整型:
151有符号整型可用于表示正整数和负整数。
int ——系统给定的基本整数类型。C语言规定int类型不小于16位。
short或short int ——最大的short类型整数小于或等于最大的int类型整
数。C语言规定short类型至少占16位。
long或long int ——该类型可表示的整数大于或等于最大的int类型整数。
C语言规定long类型至少占32位。
long long或long long int ——该类型可表示的整数大于或等于最大的long
类型整数。Long long类型至少占64位。
一般而言,long类型占用的内存比short类型大,int类型的宽度要么和
long类型相同,要么和short类型相同。例如,旧DOS系统的PC提供16位的
short和int,以及32位的long;Windows 95系统提供16位的short以及32位的int
和long。
无符号整型:
无符号整型只能用于表示零和正整数,因此无符号整型可表示的正整数
比有符号整型的大。在整型类型前加上关键字unsigned表明该类型是无符号
整型:unsignedint、unsigned long、unsigned
short。单独的unsigned相当于
unsignedint。
字符类型:
可打印出来的符号(如A、&和+)都是字符。根据定义,char类型表示
一个字符要占用1字节内存。出于历史原因,1字节通常是8位,但是如果要
表示基本字符集,也可以是16位或更大。
char ——字符类型的关键字。有些编译器使用有符号的char,而有些则
使用无符号的char。在需要时,可在char前面加上关键字signed或unsigned来
指明具体使用哪一种类型。
152布尔类型:
布尔值表示true和false。C语言用1表示true,0表示false。
_Bool ——布尔类型的关键字。布尔类型是无符号 int类型,所占用的空
间只要能储存0或1即可。
实浮点类型:
实浮点类型可表示正浮点数和负浮点数。
float ——系统的基本浮点类型,可精确表示至少6位有效数字。
double ——储存浮点数的范围(可能)更大,能表示比 float 类型更多
的有效数字(至少 10位,通常会更多)和更大的指数。
long
long
——储存浮点数的范围(可能)比double更大,能表示比
double更多的有效数字和更大的指数。
复数和虚数浮点数:
虚数类型是可选的类型。复数的实部和虚部类型都基于实浮点类型来构
成:
float _Complex
double _Complex
long double _Complex
float _Imaginary
double _Imaginary
long long _Imaginary
153小结:如何声明简单变量
1.选择需要的类型。
2.使用有效的字符给变量起一个变量名。
3.按以下格式进行声明:
类型说明符 变量名;
类型说明符由一个或多个关键字组成。下面是一些示例:
int erest;
unsigned short cash;
4.可以同时声明相同类型的多个变量,用逗号分隔各变量名,如下所
示:
char ch, init, ans;
5.在声明的同时还可以初始化变量:
float mass = 6.0E24;
位、字节和字
位、字节和字是描述计算机数据单元或存储单元的术语。这里主要指存
115储单元。
最小的存储单元是位(
bit),可以储存0或1(或者说,位用于设
置“开”或“关”)。虽然1位储存的信息有限,但是计算机中位的数量十分庞
大。位是计算机内存的基本构建块。
字节(
byte)是常用的计算机存储单位。对于几乎所有的机器,1字节
均为8位。这是字节的标准定义,至少在衡量存储单位时是这样(但是,C
语言对此有不同的定义,请参阅本章3.4.3节)。既然1位可以表示0或1,那
么8位字节就有256(
2的8次方)种可能的0、1的组合。通过二进制编码(仅
用0和1便可表示数字),便可表示0~255的整数或一组字符(第15章将详细
讨论二进制编码,如果感兴趣可以现在浏览一下该章的内容)。
字(word)是设计计算机时给定的自然存储单位。对于8位的微型计算
机(如,最初的苹果机), 1个字长只有8位。从那以后,个人计算机字长
增至16位、32位,直到目前的64位。计算机的字长越大,其数据转移越快,
允许的内存访问也更多。