当前位置:首页 >> 理学 >>

福建专升本C语言复习


第一章

C 语言概述

(1)C 程序是由函数构成的。 这使得程序容易实现 模块化。 (2) C 语言本身没有输入输出语句。 输入和输出的操作 是由库函数 scanf 和 printf 等函数来完成的。 (3) 语言不能嵌套定义函数, C 但可以嵌套调用函数, 也可以递归调用。 第二章 算法 算法特点: ? 有穷性:包含有限的操作步骤。 ? 确定性:算法中的每一个步骤都应当是确定的。 ? 有零个或多个输入:输入是指在执行算法时需要 从外界取得必要的信息。 ? 有一个或多个输出: 算法的目的是为了求解, “解” 就是输出。 ? 有效性:算法中的每一个步骤都应当能有效地执 行,并得到确定的结果 。 程序设计结构: ? 顺序结构、选择结构、循环结构 程序结构表示 N-S 图 2010 年 7,30. 第三章
1

2011.4

1. C 的数据类型
整型 int

基本类型

字符型

char
单精度实型

实型(浮点型) 双精度实型 枚举类型 数组类型 数据类型 构造类型 结构类型

enum

struct union

联合类型 指针类型

2010 年 29

2.变量命名的规定:C语言规定标识符只能由字母、 .变量命名的规定: 数字和下划线三种字符组成,且第一个字符必须为字 母或下划线。 52+10+1=63 09 年选 1 考题,2011.1 不能用关键字作为标识符 关键字归纳(32 个)考题 07 年 1 常量类型:const (1 个)

数据类型名:int ,float,double,char,void (5 个) 数据类型的修饰符:unsigned,signed,short,long 个) (4

2

用户定义的数据类型:struct,union,enum,typedef 个) 变量的存储类型名: auto,static,register,extern 控制结构语句标识:

(4

(4 个)

if-else,switch-case-default-break,while-do-for-continue,g oto,retrun(12 个) 求类型大小运算符:sizeof (1 个) 其余:volatile (1 个)

3.运算符、优先级、结合性 .运算符、优先级、 1)最高级别 (1)小括号() (2)下标运算符( [ ] )

(3)分量运算符(.->) 2)单目 (1),++,--,-,注意++,--的位置,2011.3 ! (2)强制类型转换运算符( (类型) ):转化后变量本 身类型没有变化,如 08 选 2,2011.7 (3)指针运算符 (*和&) ,注意:[]符号 (4)求字节数运算符(sizeof)struct ,union 的 大小

3

3)双目 (1)算术运算符 (+ - * / %) ,/为求商运算,若两个数 都为整型,则值取整型,否则取浮点型,%运算数只 能为整形。考题 07 年 11,09 年 5,2011.2,36 (2)关系运算符 (><==>=<=!=) 例 a<0<b 值为? (3)逻辑运算符 (!&& ||) 顺序问题。 (4)条件运算符 (?:(三目)结合性 ) (5)赋值运算符 (=及其扩展赋值运算符)a+=a*=a-3; 从右往左 (6)逗号运算符 (, ) 从左往右

2010 年 4,2011.8 优先级中的例外:逻辑运算符中的短路问题,以及条 件运算符的结合方向问题: 1)int a,b,c;a=b=c=1;++b&&++c||++a; 2) int a,b,c;a=b=c=1; ++b||++c||++a; 年 5,06 年 9 3) int a,b,c;a=b=c=1; c=(++a>0) ?5(++b>0)?6:7; a=1,b=c=2;

考题 07 年 3,06

c=5,a=2,b=1;2010 年 5 4)i=*p++;

赋值语句注意点: 赋值语句注意点:
4

1) 左操作数必须是变量,不能是常量或表达式。 i=i-j=8;,在变量定义中不能赋值:int a=b=c=2; 考题:08 年选 4,07 年 10,07 年 20,06 年 1 2) 变量的初始化与赋值语句的区别。 int a,b,c;a=b=c=1;是正确的 int a=b=c=1;是错误的 2010 年 3 3) 逗号运算特点,从左往右,表达式的值为最后一 项得到的值,如考题 08 选 6,07 年 13,06 年 10 int a,b,c;a=b=c=0; c=++a,b++; a=1,b=1,c=0

5)复合赋值语句,运算从右往左,如 a+=a-=a*a,考题 08 选 8,07 年 2,06 年 4,06 年 11 6)条件表达式执行顺序:先判断条件表达式 1,如果 成立,则执行表达式 2,否则执行表达式 3: (1)条件运算符优先级高于赋值运算符 ,低于关系运 算符和算术运算符。 (2)条件运算符的结合方向为“自右至左”。 int a=1,b=2,c=3 例 d=--a?b++:++c; a=0,b=2,c=4,d=4

06 年 8,17,09 年 4 7)常量识别:判断是整型或长整型,还是浮点型数据 等,考题 08 年选 1,长整形一般情况下要加 L.
5

8)数制的识别转化,(0—8 进制,0x---16 进制) ,考 题 08 年选 3 如 果 是 转 义 字 符 : \276 ’ ,’\x7f’, 如 果 是 输 出 语 句 ‘ printf(“%d,%o,%x”); 变量如果没有赋初值, 则为不确定值。 2011.15 注意 int 变量如果没有赋初值, 则为不确定值。 第四章 4.1 4.2 4.3 4.4 赋值表达式,赋值语句 数据输入输出 字符数据的输入输出 格式输入与输出

注意点: 注意点: 1、 赋值语句是由赋值表达式加上一个分号构成。 有些场合:i++;也算赋值语句。 2、 字符数据的输入输出 :putchar(c) ,getchar() 注意接收换行符。 例:输入 a<回车> 程序: C1=getchar();c2=getchar(); 则 c1 接收字符 a,c2 接收换行符。 考题 08 年 30。 3、 字符串输入输出:
6

printf(“%s”,str); scanf(“%s”,str);gets(str);puts(str); gets(str),puts(str)参数只能为一个变量。06 年 6 4、 printf(格式控制,输出表列) %d:以带符号的十进制形式输出整数 %u:以无符号十进制形式输出整数 %s:输出字符串, 可以指定从数组的某个位置开始输出 字符,如: char a[]={‘a’,’b’,’c’,’d’,’e’,’f’},printf(“%s”,a+2);

但 a++;是错误的, char *p=a;p++呢? 考题 08 年 22,09 年 27,30,2010 年 9 #include<stdio.h> void main() { unsigned int a=65535;int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“b=%d,%o,%x,%u\n”,b,b,b,b); } 运行结果: a=-1,177777,ffff,65535 无须补 0) b=-2,177776,fffe,65534 如 int a=32800,printf(“%d,%u”,a,a);
7

(注意 8 或 16 进制前面

32768:

1000000000000000B

考题 08 年 20,06 年 29 6、scanf 函数时应注意的问题 : (1) scanf 函数中的“格式控制”后面应当是变量地址或 指针,而不应是变量名。 char a,b[]; scanf(“%c”,&a); scanf(“%s’,b);考题 08 年 13 (2) 如果在“格式控制”字符串中除了格式说明以外还 有其他字符, 则在输入数据时在对应位置应输入与这些字符相 同的字符。 int a,b; scanf(“%d,%d”,&a,&b)

考题 07 年 21,2010 年 9 (3) 在用“%c”格式输入字符时,空格字符和“转义字 符”都作为 有效字符输入 。 scanf(“%c%c”,&a,&b); a,b 接收空格符。 (4) 在输入数据时,遇以下情况认为该数据结束。 ① 遇空格,或按“回车”或“跳格”(Tab)键; ② 按指定的宽度结束,如“%3d”,只取3列; ③ 遇非法输入。
8

若输入为 a︼b;则 a 接收字符

考题 06 年 6,2011.9 第五章 第五章 5.1 关系运算符和关系表达式 5.2 逻辑运算符和逻辑表达式 5.3 5.4 if 语句 switch 语句

C 语言中真用 1 表示,假用 0 表示。int a=3,b=2; a<b<=0? if 语句

说明: (1) if 语句中在 if 后面都有表达式,不能为语句。 (2) if 语句中,在每个 else 前面有一个分号,整个语句 结束处有一个分号。 else 总是与它上面的,最近的,统一复合语句中的, 未配对的 if 语句配对.考题 08 年选 10,07 年 17.2010 年8 switch 语句: 语句: 1) break:只退出当前层的 switch 循环 for() {switch() {case : break;}

}。考题 08 年选 12
9

2) default 位置问题 不管在哪里,只要未找到匹配项,则就从 default 处开始往下执行,直到遇到 break。 Switch( n ) {case 1: case 2: defaut: case 3: } 09 年 6,2011.19 3)switch( )括号内是变量,case 后面跟的是常量 表达式,但不可以是带小数点的常量。 第6章 6.1 用 while 语句实现循环 6.2 用 do-while 语句实现循环 6.3 用 for 语句实现循环 6.4 循环的嵌套 6.5 break 语句和 continue 语句区别 09 年 12,2010 年 14 注意点: 1)while(!0) 条件为真?假 int b =0; while(b--<0); 退出时 b 的值?2010 年
10

11 2)do-while 循环后面不要忘记分号‘; ’ 3) for 语句执行顺序 先执行第一个语句,然后判断第二个语句,如果成立 则执行循环体语句,然后执行第三个语句。 int i; for(i=0;i++<3;i++);退出时 i 的值?

注意:第二个语句要执行完。 4)break 与 continue 区别,break 在外层为 for 循环, 内层为 switch 语句中的应用。经常出现在大题,考题 08 年 32。 5) 循环结束条件,结束时,变量的值。 6)循环中变量的步长。 考题 08 年 25,07 年 4 第七章 7.1 一维数组的定义和引用 7.2 二维数组的定义和引用 7.3 字符数组

注意点: 数组定义中其他常见的错误: 数组定义中其他常见的错误: float a[0]; /* 数组大小为 0 没有意义 */ int k, a[k]; /* 不能用变量说明数组大小*/ 09 年 9 不能用变量说明数组大小

数组引用:数组名[下标]
11

下标可以是整型常量或整型表达式, 变量。 2010 年 12 二维数组定义和初始化注意:09 年 13,2010 年 13 1) 不能省却第二维 2) 第一维大小可通过第二维推算 int a[][3]={1,2,3,4,5,6,7,8}考题 08 年 16 3) 可只对部分元素赋值 int a[][3]={0}; 考题 08 年 18,07 年 14 设数组 a 的首地址为 2000。
表 示 形 式 a 含义 地 址

二维数组名, 指向一维数组 a[0] 2000 , 即 0 行首地址

a[0], *(a+0), *a

0 行 0 列元素地址

2000

a+1,&a[1] 1 行首地址 a[1],*(a+1) a[1]+2, *(a+1)+2, &a[1][2] *(a[1]+2), *(*(a+1)+2), a[1][2]
12

2008 2008 2012

1 行 0 列元素 a[1][0]的地址 1 行 2 列元素 a[1][2] 的地址

1 行 2 列元素 a[1] [2]的值

元素值为 13

1)字符数组和字符串的区别 定义方面、长度区别,还有 strlen()函数求值。 2)定义和赋值错误例子: char b[10];b=”hello!”; 考题 07 年 8,2010 年 15 3)字符数组的输入输出可以有两种方法: ) char a[]; a.逐个字符输入输出。用格式符“%c”输入或输出 一个字符。 scanf(“%c”,&a[i]); b.将整个字符串一次性输入或输出。用“%s”格式 符,意思是对字符串的输入输出。 scanf(“%s”,a); 字符串处理函数 1) scanf(″%s″,str); 2) printf(″%s″,str); 3) puts (str): 4) gets(str); 注意: puts 和 gets 函数只能输入或输出一个字符串, 用 不能写成 puts(str1,str2) 或 gets(str1,str2)

09 年 10
13

其他字符串操作函数: strcat(字符数组 1,字符数组 2)2010 年 16 strcpy(字符数组 1,字符串 2) 复制时连同字符串后面的′\0′一起复制到字符数 组1中 strlen 函数 strlen 是测试字符串长度的函数。 函数的值为字符串中 的实际长度(不包括′\0′在内)。 strcmp(str1,str2)考题 08 年 17

2011.6,2011.10,2011.13,2011.14

第8章 8.1 函数参数和函数的值 8.2 函数的调用 8.3 函数的递归调用 8.4 数组作为函数参数 8.5 局部变量和全局变量 8.6 变量的存储类别 注意点: 注意点: 1) 对子函数的调用在什么情况下会改变主函数中变
14

量的值?(传值还是传址) a.一般变量作为实参和形参,或为数组元素,传数值, 形参值的改变不会影响到实参。 b.实参和形参为数组名,若为二维数组,则要注意形 参写法。 传地址, 理解为实参与形参共用一个内存段, 所以改变形参的值就会改变实参值。 c.实参和形参,其中一个为数组名,另一个为指向数 组元素的指针。指针就指向了该数组。通过对指针指 向的内存空间值的修改就直接改变了数组的相应元素 值。 d.实参和形参都是指针 考题 08 年 21,09 年 15,18,2010 年 17,19,21, 、 22,2011.18,31,32,34 2)变量存储类型:auto,register,static,extern 作用域和 变量存在时间。 函数内部变量 复合语句内部变量 static 申明的函数内部变量 extern 申明的函数外部变量 共用的全局变量指该变量在内存中只开辟唯一的空 间,所以任何能访问到该变量的函数对该变量值的修 改都将影响到其它函数。
15

例: 1、#include <stdio.h> void num() { extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; main() { int a=7,b=5; x=a+b; y=a-b; num(); printf(“%d,%d\n”,x,y); } 2、main() { int a=2,i; for(i=0;i<3;i++) printf(“%4d”,f(a)); }
16

f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c); } 3、main() {int i=2,x=5,j=7; fun(j,6); printf(“i=%d;j=%d;x=%d\n”,i,j,x); } fun(int i,int j) {int x=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x); } 4、main() { int a=1,b=2,c=3; ++a; c+=++b; { int b=4,c;
17

c=b*3; a+=c; printf(“first:%d,%d,%d\n”,a,b,c); a+=c; printf(“second:%d,%d,%d\n”,a,b,c); } printf(“third:%d,%d,%d\n”,a,b,c); } 变量有优先取近原则。 见书 P197,考题 08 年 24,09 年 16,2011.33 变量归纳 P197 典型算法:基本上出现在大题中。 典型算法:基本上出现在大题中。 算法 1)排序:冒泡和选择排序,或只对部分元素排序,考 题 07 年 27 一定要熟悉,采用的都是二重 for 循环。 2)查找关键元素:二分查找法 注意查找范围的确定。 3)求两数的最大公约数,或求最小公倍数 年 37 两数乘积=两数的最大公约数*两数的最小公倍数 4) 求数组中下标为奇数或偶数的元素之和或之积, 最 大值,平均值等,考题 06 年 36,09 年 35,33
18

考题 06

5)求自然数的阶乘,考题 07 年 18,07 年 35(递归 算法) ,2011.21 注意出口点 6)求素数,考题 06 年 32,09 年 36 7)求数列(Fibonacci) :第三个数开始,依次为前两 个数之和。采用递归法。 8)将字符串大小写转化 考题 08 年 37 记住大小写 ASCAL 码 9)字符串的比较或逆转。考题 08 年 35,09 年 31 10)统计数组中各字符的个数,考题 07 年 37,06 年 35,09 年 34 11)将字符数组中某个或某些指定的元素删除。09 年 32 第9章 主要考核点: #define 标示符 字符串 字符串

#define 宏名(参数表) (1)#ifdef 标识符 程序段1 #else 程序段2 #endif
19

(2)#ifndef 标识符 程序段1 #else 程序段2 #endif (3) #if 表达式 程序段1 #else 程序段2 #endif 考题 08 年 27,07 年 24,07 年 32,06 年 18,2010 年 26,2011.16

第 10 章 1、 指针含义 2、 指针赋值,类型一致 3、 &与*运算,[]运算符 4、 指向数组元素的指针 定义,访问,可以通过下标法,或者指针的取值 运算*。 5、 用数组名和指针作函数参数 6、 指向字符串的指针,对元素访问,特别是指针的偏
20

移操作。 注意数组名是常量,不能做相加操作。 7、 指向一维数组元素的指针和指向二维数组一行元 素的指针定义和访问 int a[m][n] ;定义 int *p 和 int (*p)[n]区

别,如何访问,如果作为函数参数,如何?

定义 int i; int? p; int?*p; int a[n]; [ ] int ?*p[n] p[n] ;

含义 定义整型变量i 定义整型变量i p为指向整型数据的指针变量 定义整型数组a,它有n 定义整型数组a,它有n个元素 a,它有 定义指针数组p, 它由n 定义指针数组p,它由n个指向整型数据的 p, 它由 指针元素组成

为指向含n int (*p) p) [n] p 为指向含 n 个元素的一维数组的指针变 ; 量 int f() ; int ?*p() p() ; f为带回整型函数值的函数 该指针指向整型 p为带回一个指针的函数, 为带回一个指针的函数, 数据 int (*p) ; p) () 该函数返回一个整型 p为指向函数的指针, 为指向函数的指针, 值 int **p; p; p是一个指针变量, 是一个指针变量,它指向一个指向整型数

21

据的指针变量

注意点: 1)*p++ 与*++p 区别: 例:int a[5]={1,2,3,4,5},*p=a; 求*p++ **++p 和(*p)++**++p 3,2

考题 07 年 19,06 年 14,07 年 33,06 年 31,33,06 年 14,06 年 15,24,26,27 09 年 29,31,32,34,

2010 年 11,21,22,2011.24,25,26,28 2)指针本身值改变不影响原指向单元内容。如:int a,b,*p,*q; p=&a;q=&b;区别:*p=*q 和 p=q;

第 11 章 结构体的定义,对结构体元素的访问,或通过指针访 问。 一、结构体变量如何定义? 1、struct 、 { 成员表列 } ; struct 结构体名 变量名表列;
22

结构体名

2、struct 、 {

结构体名

成员表列 }变量名表列; 3、struct 、 { 成员表列 }变量名表列; 4、typedef struct { 成员表列 }结构体名; 例:typedef { double char }stu; stu student1,student2; stu 相当于 stuct stu 类型 a; struct stu

b[10];

struct {

stu a;

double char };

b[10];

23

stuct

stu

student1,student2;

typedef {

struct a;

double char }stu; stu

b[10];

student1,student2;

typedef {

struct a;

stu

double char }; stu

b[10];

student1,student2;

二、结构体数组定义、赋值 struct student {int num;char name[20];char sex;int age; float score;char addr[30]; }; struct student stu 2] [ ] ={{10101, LiLin″, M′, = , ″ ″ ′ ′

18,87.5,″103 BeijingRoad″}{ , {10102,″Zhang , ″ , , Fun″,′M′,19,99,″130 Shanghai Road″}}; ″ ′ , , ″ ;
24

三、对结构体数组元素访问 1)通过变量名+.+成员名 2)通过指向结构体数组的指针+-----〉+成员名 struct student { int ID; char name[]; }; struct student st1[]={{1,”chen”},{2,”guo”}},*p=st1; 对 元 素 的 访 问 :

st1[0].ID,st1[0].name,p->ID,p->name,(*p).ID,(*p).name 用指针访问时要注意运算符的优先级: ++p->ID,p->ID++,(++p)->ID,(p++)->ID *p->ID 什么意思? 共用体:考核占用的空间大小 枚举类型变量不能把数字直接赋值给它。

考题 08 年 28,07 年 26,07 年 34,06 年 19,28,30, 09 年 21,2010 年 28,2011.22,27 第 13 章 考核点: 1)文本文件和二进制文件占用空间大小 2)文件的使用方式:
25

b------二进制文件 +-------读写 w------新建一个文件 d-------追加,即把指针移到文件末尾 考题 08 年 29,06 年 7 3)几个重要的文件操作函数 了解功能,参数,返回值。
分类 函数名 功能 打开文件 关闭文件 改变文件位置指针的位置 使文件位置指针重新至于文件开头 返回文件位置指针的当前值 若到文件末尾,函数值为真 若对文件操作出错,函数值为真 使 ferror 和 feof()函数值置零 功能

打开文件 fopen() 关闭文件 fclose() 文件定位 fseek() rewind() ftell() 文件状态 feof() ferror() clearerr() 分类 函数名

文件读写

fgetc(),getc()从指定文件取得一个字符 fputc(),putc()把字符输出到指定文件 fgets()从指定文件读取字符串 fputs()把字符串输出到指定文件 getw()从指定文件读取一个字(int 型)
26

putw()把一个字输出到指定文件 fread()从指定文件中读取数据项 fwrite()把数据项写到指定文件中 fscanf()从指定文件按格式输入数据 fprintf()按指定格式将数据写到指定文件中 2010 年 24. 2011.17,30

27


相关文章:
专升本C语言历年试题及答案
专升本C语言历年试题及答案_专升本_成人教育_教育专区。专升本 C 语言历年考试题及答案 一、单项选择题 1. A、 b-b B、float 2. A、a*b/c; 3. A、'n...
2009福建专升本C语言试题
福建专升本C语言复习指导 26页 5财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 2009福建专升本C语言试题 隐藏>> ...
专升本c语言上机笔记
专升本c语言上机笔记_其它考试_资格考试/认证_教育专区。第一部分:能够熟练使用一种 c 程序集成环境对 c 程序集成环境对 c 程序进行编辑、编译、 连接和运行。 ...
专升本C语言复习题
专转本 C 语言复习题 一、专转本 C 语言复习题 2 数学表达式 1、编写程序,其功能是:计算并输出下列多项式的值: S ? 1 ? 2 ? 3 ? ? n , 将结 果...
2016年福建专升本试题答案
2016 年福建专升本考试试题答案+920085687=真品阅读...C.仓廪在古代是指储藏谷物的仓库,它是专为灾荒之...(8 分) 第Ⅱ卷 表达题 五、语言文字运用(20 分...
福建专升本英语的复习几点建议
英语作为一门语言无非不是听说读写译 但是因为时间紧迫所以在这里就不 啰嗦这些了 我们就从专升本英语考试的题型角度出发把福建专升本的英语考试 分为以下几个题型:...
C语言专升本5编程题(3月10日终版)
C语言专升本5编程题(3月10日终版)_IT认证_资格考试/认证_教育专区。C语言专升本计算机程序设计基础(c 语言) 习题 编程题 计算机程序设计基础(C 语言) 编程练习...
山东专升本C语言典型案例100题
山东专升本C语言典型案例100题_计算机软件及应用_IT/计算机_专业资料。2013 年高职...011 B. le1 C. 8.0E0.5 D. 2 2013 年高职升本计算机基础复习材料—C...
2017年福建专升本大学语文超强复习资料
2017年福建专升本大学语文超强复习资料_其它考试_资格考试/认证_教育专区。作者...“雄浑豪放,语言通畅自然” 辛弃疾《水龙吟.登建康赏心亭》创作风格多样,以“...
2014《C语言程序设计》专升本练习题
2014《C语言程序设计》专升本练习题_研究生入学考试_高等教育_教育专区。《C ...在 C 语言程序中,在函数内部定义的变量称为__D___。 A.全局变量 B.全程变量...
更多相关标签: