1 #include<stdio.h> //编译预处理命令 2 int factorial (int n); //函数声明 3 int main(void) //主函数 4 { 5 int n; //变量定义 6 scanf("%d",&n); //输入一个整数 7 printf("%d\n",factorial(n)); //调用函数计算阶乘 8 return 0; 9 } 10 int factorial (int n) //定义计算n!的函数 11 { 12 int i,fact=1; 13 for(i=1;i<=n;i++) //注意i<n与i<=n 14 fact=fact*i; 15 return fact; 16 }
#include<stdio.h> //编译预处理命令 int factorial (int n); //函数声明 int main(void) //主函数 { int n; //变量定义 scanf("%d",&n); //输入一个整数 printf("%d\n",factorial(n)); //调用函数计算阶乘 return 0; } int factorial (int n) //定义计算n!的函数 { int i,fact=1; for(i=1;i<=n;i++) //注意i<n与i<=n fact=fact*i; return fact; }
第1章C语言概述
1.1一个C语言程序
【例1-1】求阶乘问题。输入一个正整数n,输出n!
1.2程序与程序设计语言
程序设计语言提供表示数据与处理数据的功能,要按照语法规则来编写程序;
1.2.1程序与指令
程序是0、1组成的序列,该指令码序列能够被计算机所识别;
1.2.2程序设计语言的功能
1.数据表达
数据类型就是对某些具有共同特点的数据集合的总称,包括数据类型的定义域及运算操作;
程序设计语言提供基本数据类型以及构造复杂类型(数组、结构等);
基本数据类型:整型、实型、字符型等,两种主要形式:常量(Constant)和变量(Variable);
可以构造新的具体数据类型:数组(Array)、结构(Structure)、文件(File)、指针(Pointer)等;
2.流程控制(语句级控制)
在结构化程序设计方法中,将复杂程序划分为若干个相互独立的模块(语句、段程序、函数);
三种基本控制结构:顺序、分支(选择结构)和循环
(1)顺序控制结构:按照自然顺序执行各个模块;
(2)分支控制结构:判断条件是否满足,选择执行相应的模块;
(3)循环控制结构:检测是否符合条件,重复执行相应的模块;
3.单位级控制
函数的定义与调用控制:将程序划分为子程序,由函数实现各个功能,直接调用函数,可以传递零个或多个参数,函数被调用的结果将返回给调用函数;
1.2.3程序设计语言的语法
1."单词"(字符序列组合)
(1)标识符:由字母、数字和下划线组成,其中第一个字符必须是字母或下划线;
系统预定义标识符(保留字、关键字),主要与数据类型和语句有关;
用户自定义标识符,包括程序中定义的变量名、数据类型名、函数名和符号常量名;
(2)常量:也有数据类型,如整型常量、实型常量;
(3)运算符:表示对各种数据类型数据对象的运算,有运算优先级;
(4)分隔符:如#、[、]、;、(、)等;
2.C语言的主要语法单位
(1)表达式:由运算符与运算对象的组合,可含多种数据类型的运算符;
(2)变量定义:类型名 变量名; 如 int i;
(3)语句:程序最基本的执行单位,主要有表达式语句、分支语句、循环语句、复合语句四类;
(4)函数定义与调用
a.函数定义:编写一系列语句来规定其所完成的功能,主要有函数头和函数体。其中,函数头包括函数名、函数返回值类型、参数类型,函数体则是一个程序模块,规定了函数所具有的功能;
b.函数调用:通过传递函数的参数并执行函数定义所规定的程序过程,以实现相应功能;
例如:函数max求两个整数(作为参数)的较大值(作为返回值)
int max(int a,int b) //函数头:函数类型 函数名(函数参数列表)
{ //函数体开始
int x; //函数中要用到的临时变量
if(a>b) x=a; //判断a、b的大小,将x赋值为较大者
else x=b;
return x; //结束函数调用并返回x
} //函数体结束`
(5)输入与输出:调用系统库函数printf()和scanf();
1.2.4程序的编译与编程环境
1.程序的编译
由编译程序(编译器)对原程序进行词法分析,然后进行语法与语义分析,最后生成可执行的代码;
2.编程环境
集成开发环境(IDE)是用于提供程序开发环境的应用程序,包括代码编辑器、编译器、调试器和图形用户界面等工具,集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。
1.3C语言的发展历史与特点
(1)C语言是一种结构化语言
函数是C语言程序的基本模块,程序的许多操作可有不同功能的函数组装而成;以及完整的控制语句和构造数据类型,使程序流程与数据描述也结构化;
(2)C语言语句简洁紧凑,使用方便灵活
只有32个保留字和9种控制语句,可用宏定义和文件包含等预处理语句;
(3)C语言程序易于移植
C语言将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序来实现;
(4)C语言具有强大的处理能力
结构、指针、地址、位运算等功能,具有汇编语言的特点;
(5)生成的目标代码质量高,运行效率高
1.4实现问题求解的过程
问题:求1~100间所有偶数的和。
1.问题分析与算法设计
求累加和的基本方法:设置一个变量并初始化为0,在指定范围内寻找满足条件的数做累加 sum=sum+i;
这个累加过程要反复做,用循环控制语句来实现,在循环过程中:
a.需要判断 i 是否满足问题要求的条件(偶数):分支控制语句;
b.需要对循环次数做控制,通过 i 值的变化进行控制:将 i 初始化为1,每循环一次加1,直到100结束;
2.编辑源程序sum.c
3.编译生成目标程序sum.obj
通过编程环境提供的库函数进行连接,形成可执行程序sum.exe
4.运行与调试:设置断点并观察变量;