● 幻灯片34
简单的c语言程序介绍。
注意:函数的声明部分和执行部分都可缺省,例如:
void dump (
这是一个空函数,什么也不做,但是合法的函数。
小结:3) c程序总是从main函数开始执行的,与main函数的位置无关。
4) c程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上,c程序没有行号。
5) 每个语句和数据声明的最后必须有一个分号。
6) c语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。c对输入输出实行“函数化”。
整型。类型类型说明符长度数的范围基本型 int2字节 -32768~32767短整型 short2字节 -215~215-1
长整型 long4字节 -231~231-1无符号整型 unsigned 2字节 0~65535
无符号短整型 unsigned short 2字节 0~65535无符号长整型 unsigned long 4字节 0~(232-1)
浮点型:类型类型说明符长度数的范围基本型 int2字节 -32768~32767 短整型 short2字节 -215~215-1 长整型 long4字节 -231~231-1 无符号整型 unsigned 2字节 0~65535 无符号短整型 unsigned short 2字节 0~65535 无符号长整型 unsigned long 4字节 0~(232-1)
幻灯片27
字符型数据
有些以“\”开头的特殊字符称为转义字符。
n 换行。t 横向跳格。
r 回车。\ 反斜杠。
幻灯片31
例6. 向字符变量赋以整数。
#include <>
void main()
幻灯片35
字符型数据。
‘a’是字符常量,"a是字符串常量,二者不同。
如:假设c被指定为字符变量 :char c
c= 'a';对。
c="a"; c="china";错
结论:不能把一个字符串常量赋给一个字符变量。
(2)可以使被定义的变量的一部分赋初值。如: int a,b,c=5; 表示指定a、b为整型变量,但只对c初始化,c的初值为5(3)如果对几个变量赋以同一个初值, 应写成:
int a=3,b=3,c=3; 表示a、b的初值都是3。 不能写成∶ int a=b=c=3;
c的运算符有以下几类:(1)算术运算符模运算符,或称求余运算符,%两侧均应为整型数据,如:7%的值为3)。
2)关系运算符 (>3)逻辑运算符4)位运算符 (<5)赋值运算符 (=6)条件运算符 (?7)逗号运算符 (,8)指针运算符 (*和&)(9)求字节数运算符(sizeof)(10)强制类型转换运算符( (类型) )11)分量运算符(.-12)下标运算符([
5+ ′a′ 是一个合法的表达式。
例 1. 强制类型转换。
#include <>
voidmai
printf("x=%f, i=%d",x,i);
运行结果: x=3.600000, i=3
1)ji的值先变成4, 再赋给j,j的值为4
2i的值3赋给j,j的值为3,然后i变为4“i的值先变成4, 再把原来的i值赋给j,j的值为3”
幻灯片38逗号运算符和逗号表达式。
逗号运算符:将两个表达式连接起来,又称为“顺序求值运算符”
如:3+5,6+结果为14
一般形式: 表达式1,表达式2
求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。
幻灯片38逗号运算符和逗号表达式。
逗号运算符:将两个表达式连接起来,又称为“顺序求值运算符” 逗号运算符是所有运算符中级别最低的。
如:3+5,6+结果为14
一般形式: 表达式1,表达式2
求解过程:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。
逗号表达式的一般形式可以扩展为表达式1,表达式2,表达式3,…表达式n 它的值为表达式n的值。
字符输入函数: getchar 如 c=getchar();
字符输出函数:putchar格式输入函数: scanf 格式输出函数: printf字符串输入函数:gets 字符串输出函数:puts
例1 输出单个字符。
#include<>
void main()
char a,b,c;
a=‘b’;b=‘o’;c=‘y’;
putchar(a);putchar(b);putchar(c);putchar(‘’);
运行结果:boy
printf
d:以带符号的十进制形式输出整数%o:以八进制无符号形式输出整数%x:
以十六进制无符号形式输出整数%u:以无符号十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:
输出字符串f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数%g:
选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0
例9 用scanf函数输入数据。
#include<>
void main()
int a,b,c;
scanf(“%d%d%d”,&a,&b,&c);
printf(“%d,%d,%d”,a,b,c);
关系运算符的优先级低于算术运算符,关系运算符的优先级高于赋值运算符。
逻辑运算符中的“&&和“||低于关系运算符,“!高于算术运算符。
例:设a=4,b=5:任何非零的数值被认作“真”
a的值为0a&&b的值为1a||b的值为1a||b的值为14&&0||2的值为1
例:(m=a>b)&&n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1。
else总是与它上面的,最近的,同一复合语句中的,未配对的if语句配对。
continue语句作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
幻灯片10函数定义的一般形式
return z;等价于 “return (zreturn后面的值可以是一个表达式。函数的返回值应当属于某一个确定的类型,在定义函数时指定函数返回值的类型。在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。
在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。只有在发生函数调用时,函数max中的形参才被分配内存单元。在调用结束后,形参所占的内存单元也被释放。
实参可以是常量、变量或表达式,如但要求它们有确定的值。在调用时将实参的值赋给形参。 在c语言中,实参向对形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。
在内存中,实参单元与形参单元是不同的单元。
函数调用的一般形式为: 函数名(实参表列)
如果是调用无参函数,则“实参表列”可以没有,但括弧不能省略。
6--p33
# include <>void main(){float add(float x, float y); 对被调用函数add的声明*/ float a,b,c; scanf("%f,%f",&a,&b); c=add(a,b); printf("sum is %f ",c);}float add(float x,float函数首部 */float函数体zreturn(z);
嵌套定义就是在定义一个函数时,其函数体内又包含另一个函数的完整定义。c语言不能嵌套定义函数,但可以嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。 一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数).
*pointer_1)相当于a++注意括号是必要的,如果没有括号,就成为了*pointer_1+从附录可知:++和*为同一优先级别,而结合方向为自右而左,因此它相当于*(pointer_1+由于++在pointer_1的右侧,是“后加”,因此先对pointer_1的原值进行*运算,得到a的值,然后使pointer_1的值改变,这样pointer_1不再指向a了。
引用一个数组元素,可以用: (下标法,如a[i形式; (指针法,如*(a或*(p其中a是数组名,p是指向数组元素的指针变量,其初值p=a
f (int arr[ ]int n)但在编译时是将arr按指针变量处理的,相当于将函数f的首部写成f (int *arr, int n)以上两种写法是等价的。
数据结构与算法
本章知识要点 算法的基本概念 数据结构的定义 线性表的定义和存储 树 二叉树的定义和存储 查找与排序算法。算法 algorithm 是一组有穷的规则,规定了解决某一特定类型问题的一系列运算,是对解题方 与完整的描述。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中...
算法与数据结构
学院专业姓名学号。实验1 线性表的操作 12学时 问题描述 假设一个班级内有n个学生,定义一个学生类和一个班级类。学生类中包括学号 姓名 性别 年龄 专业等属性 班级类包括一个学生对象链表。定义如下 class student class myclass student stu head 链表表头指...
算法与数据结构
1 简述算法的概念及其五个重要特性。2 下图是用邻接表存储的图,请画出此图,写出其邻接矩阵以及从c点开始分别按广度优先搜索和深度优先搜索遍历该图的结果。给定一棵用二叉链表表示的二叉树,其根指针为root,编写求此二叉树叶结点个数的算法,要求先写出二叉链表的类型定义。2.编写简单选择排序的算法。1 用...