《中北大学C程总复习题ppt课件》由会员分享,可在线阅读,更多相关《中北大学C程总复习题ppt课件(57页珍藏版)》请在金锄头文库上搜索。
1、程序设计基础复习程序设计基础复习1;.目录u1. 基本要求u2. 基本内容21. 基本要求u熟练掌握C 语言的基本知识u具备基本的C程序设计能力,能熟练地阅读、理解和编制简短的C程序。32. 基本内容u2.1 数据的定义u2.2 运算及流程控制u2.3 程序结构和函数u2.4 数据的输入和输出u2.5 命令行参数和编译预处理u2.6 常用算法42.1 数据的定义数据的定义包括数据类型和存储类别1、基本类型基本类型指整型、实型和字符型(主要是int, float, double, char;还包括long, unsigned, short)5(1) 常量熟练掌握各种表示形式的整数、实数、和字符(
2、串)常量,符号常量的定义和使用。包括整数的十进制、八进制和十六进制的表示形式、长整型常量的表示形式,实数的浮点表示法和科学记数法,字符的转义序列,常用符号常量的含义(如NULL、EOF等)6(2) 变量熟练掌握变量的定义和初始化printf(”%x,%o“,16,10);printf (%d, %o, %x, 0x12, 12, 012); printf(%d,%dn,NULL,EOF);72、构造类型构造类型包括数组和结构(1) 数组熟练掌握一维和二维数组的定义和初始化,数组元素的引用。包括一维字符数组和字符串,二维字符数组和字符串数组8数组定义为 int a32=1, 2, 3, 4, 5
3、, 6,数组元素 a21 的值为6。不正确的赋值或赋初值的方式是_。A、char str=string; B、char str7=s, t, r, i, n, g;C、char str10;str=string;D、char str7=s, t, r, i, n, g, 0;表达式strcmp(“box”, “boss”) 的值是一个_.A、正数 B、负数 C、0 D、不确定的数9#include int a34=1,2,3,4,5,6,7,8,9,10,11,12; void main() int s,k; for(s=0,k=0; k3; k+) s+=akk; printf(%d-,s)
4、; 10for(s=0,k=0; k3; k+) s+=ak3-k; printf(%d-,s); for(s=0,k=0; k4; k+) s+=*(a1+k); printf(%dn,s); 11将输入的将输入的 n 个字符串连接成个字符串连接成1个字符串后输出个字符串后输出.#include #include void main() char str1020, string200; int k, n; scanf(%d, &n); for (k=0; kn; k+) gets(strk);strcpy(string, str0);for (k=1; kn; k+) strcat(stri
5、ng, strk);puts(string);12(2) 结构熟练掌握结构类型的定义,结构变量的定义和初始化,结构变量成员的引用。133、指针(1) 熟练掌握指针和地址的概念(2) 熟练掌握指针变量的定义和初始化(3) 熟练掌握通过指针引用指向实体9aint *pa, a;pa=&a;printf(%d,%d, *pa, a);printf(%x,%x, pa, &a);pa14若变量已正确定义并且指针p已经指向某个变量x,则(*p)+相当于_。A、p+ B、x+ C、*(p+) D、&x+若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, _是正确的。A、p2=p1; B、p2
6、=*p1; C、p2=&p1; D、p2=*p1;15下列语句定义pf为指向float类型变量f的指针,_是正确的。A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f;对于如下说明,语法和语义都正确的赋值是_。int c, *s, a =1, 3, 5;A、c=*s; B、 s0=a0; C、s=&a1; D、 c=a;164、构造类型和指针类型的混合定义及应用(1) 熟练掌握指针、数组和地址间的关系int c =1, 3, 5;int *k=c+1;printf(%d, *+k);ch
7、ar str =hellotworldn;printf(%d, %cn, sizeof(str), *(str+10);17(2) 熟练掌握指针数组写出下列程序段的输出结果。char *st =one,two,three,four;printf(%sn,*(st+3)+1);18(3) 熟练掌握结构数组输入某班50位学生的姓名及数学、英语成绩,计算每位学生的平均分;然后输出平均分最高的学生的姓名及其数学和英语成绩。 #include #define SIZE 50 struct student char name10; int math,eng; float aver; ;19void mai
8、n() struct student sSIZE; int k,sub=0; for(k=0; kSIZE; k+) scanf(%s%d%d,sk.name,&sk.math,&sk.eng); sk.aver = (sk.math+sk.eng)/2.0 for(k=1; kssub.aver ) sub = k; printf(%10s%3d%3dn,ssub.name,ssub.math,ssub.eng); 20(4) 熟练掌握结构指针(5) 掌握结构中含指针或数组(6) 掌握嵌套结构(7) 掌握指向指针的指针(二级)(8) 单向链表掌握单向链表的建立和遍历了解插入和删除单向链表中的
9、一个节点21+p-str中的+加在_。struct int len; char *str; *p;A、指针str上 B、指针p上 C、str指的内容上 D、以上均不是22main( ) struct st int x, y; a4=10,20,30,40,50,60,70,80; struct st *p=a; printf(%d, p+-x); printf(%d, +p-y); printf(%dn, (a+3)-x);235、空类型 void掌握空类型的定义和使用246、变量的存储类别、作用域和生存期(1) 掌握变量的存储类别auto 自动型、static 静态型、extern 外部参照
10、型(2) 掌握全局变量和局部变量注意区分:自动局部变量和静态局部变量、全局变量和静态全局变量、外部变量25C语言中,形参的缺省的存储类说明是_。A、auto B、static C、register D、extern 26对于以下函数f,计算f(f(2)的值。 int f(int x) static int k=0; x+=k+; return x; 272.2 运算及流程控制1、基本运算熟练掌握运算符的功能熟练掌握运算符的优先级、结合性和目数熟练掌握隐式类型转换和强制类型转换2、表达式熟练掌握各类表达式的组成规则和计算过程28 () - . ! + - - (类型名) * & sizeof 从
11、右向左 * / % + - = = != & (按位与) (按位异或) | (按位或) & | ?: 右 = += -= *= /= %= = = &= = |= 右 , 29若变量已正确定义且 k 的值是 4,计算表达式 ( j = k-) 后,j和k的值分别是_。已知字符 a 的ASCII码为 97 ,执行下列语句的输出是_。printf (%d, %c, b, b-1 ) ; 30判断i和j至少有一个值为非0的表达式是_。A、 i!=0 & j!=0 B、i | j C、!(i=0 | j=0) D、i&j表达式 !x 等价于_。A、x=0 B、x=1 C、x != 0 D、x != 1
12、31若x是单精度实型变量,表达式 (x = 10/4) 的值是_ 。A、2.5 B、 2.0 C、 3 D、 2写出下列程序段的输出结果。float x1, x2;x1=3/2;x2=x1/2;printf(%d, %.1f, (int)x1, x2) ;32表达式 sizeof(“key”) 的值是_。A、1 B、2 C、3 D、4static char s =student;printf(%d,%cn,sizeof(s),*(s+2);若a是整型变量,表达式 (a a ) 等价于_。 A、a B、1 C、0 D、2表达式 (722 ) 的值是_。 33下列运算符中,优先级最低的是_。A、*
13、 B、!= C、+ D、=算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为_。A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算C、算术运算、关系运算、赋值运算D、关系运算、算术运算、赋值运算343、语句(1) 熟练掌握表达式语句、空语句、复合语句;(2) 熟练掌握简单控制语句 break、continue、return(3) 熟练掌握选择控制语句 if、switch(4) 熟练掌握重复控制语句 for、while、dowhile35C 语言程序的三种基本结构是顺序结构、选择结构和_结构。A、循环 B、递归 C、转移 D、嵌套36写出下列程序段的输出结果。
14、char c,k; c=b; k=4; switch(c) case a: k=1; case b: k=2; case c: k=3; printf(%dn,k);37写出下列程序段的输出结果。int k, x;for (k=0, x=0; k=9&x!=10; k+) x+=2;printf (%d, %d, k, x) ;38输入12345#后,写出下列程序的输出结果。void main() char c; for(c=getchar(); getchar()!=#; c=getchar() putchar(c); int k ; char *s = “ABC”;for( k=10; k
15、 != 0; k- ) ;printf ( %d, k );while( *s+ ) putchar( *s );392.3 程序结构和函数1、程序结构熟练掌握main函数与其他函数之间的关系包括标准库函数和自定义函数402、函数的定义(1) 熟练掌握函数定义的ANSI C格式(2) 熟练掌握函数的参数(形式参数和实在参数)及参数传递,包括指针作为函数的参数(3) 熟练掌握函数的返回值,包括指针作为函数的返回值41要调用数学函数时,在#include命令行中应包含_。A、 ”stdio.h” B、 ”string.h” C、 ”math.h” D、 ”ctype.h”在C语言程序中,若对函数类
16、型未加显式说明,则函数的隐含类型是int.42int z;void p(int *x, int y) +*x; y-; z=*x+y+z; printf(%d, %d, %d#, *x, y, z);void main() int x=1, y=5, z=9; p(&x, y); printf(%d, %d, %d#, x, y, z); 433、函数的调用(1) 函数调用的一般格式熟练掌握通过函数名调用函数,了解通过函数指针调用函数(2) 掌握函数的嵌套调用和递归调用44 int f(int k) return (k0)?1:f(k-2)+2); 45(3) 熟练掌握标准库函数的调用常用数学
17、函数:cos、sqrt、pow、exp、fabs、log、log10等常用字符函数:isalnum、isalpha、isdigit、islower、toupper等常用字符串函数:strcpy、strcmp、strcat、strlen等46输入m和n(mn0)后,计算下列表达式的值并输出。 m! n!(m-n)!要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float。47#include float fact(int k);void main() int m,n; scanf(%d%d,&m,&n); printf(%fn,fact(m)/fact(n)/fact(m-n);
18、 48float fact(int k) float y=1; int i; for(i=2;i=k;i+) y*=i; return y; 492.4 数据的输入和输出1、文件熟练掌握文件的基本概念2、标准文件的输入和输出熟练掌握常用输入输出函数:scanf、printf、getchar、putchar、gets、puts等503、缓冲文件系统(文本文件)(1) 熟练掌握文件的打开和关闭常用函数:fopen和fclose(2) 熟练掌握文件的基本读写操作常用函数:fscanf、fprintf、fgetc、fputc、fgets、fputs等(3) 熟练掌握文件的状态检测常用函数:feof等5
19、1统统计计当当前前目目录录下下文文本本文文件件data.txt中中字字符符 $ 出出现现的的次次数数,并并将将统统计计结结果果写写入入当当前前目目录录下下的文本文件的文本文件res.txt。 #include void main() FILE *fp1, *fp2; char ch; int count=0; if(fp1=fopen(data.txt,r)=NULL) printf(不能打开文件不能打开文件data.txt!n); exit(0); 52if(fp1=fopen(res.txt,w)=NULL) printf(不能打开文件不能打开文件res.txt!n); exit(0);
20、while(ch=fgetc(fp1)!=EOF) if(ch=$) count+; fprintf(fp2,%d,count); fclose(fp1); fclose(fp2);532.5 命令行参数和编译预处理1、命令行参数(argc、argv)的说明、含义和使用。执行程序find nx ould text.txt时,*+argv1的值是_。542、熟练掌握编译预处理的基本概念3、掌握宏定义4、掌握文件包含写出下列程序段的输出结果。 #define T 16 #define S (T+10)-7 printf(%dn, S*2);552.7 常用算法以下算法针对本大纲中列出的各种数据结构1、分类(排序)算法冒泡、选择、插入2、检索(查找)算法(1) 无序数据序列的查找(见遍历算法)(2) 有序数据序列的查找:二分法563、遍历算法(1) 一维数组和二维数组的遍历(2) 文件的遍历4、其它基本算法57