还剩7页未读,继续阅读
文本内容:
语言复习资料C《C语言程序设计》期末复习资料
一、考试题型及其分数分布
1、单项选择题(每小题2分,共30分)
2、填空题(每空1分,共20分)
3、程序阅读分析题(每小题3分,共30分)
4、编程题(每小题10分,共20分)
二、复习要点
1、构成C程序的基本单位是?函数
2、字符型常量的正确使用方式
3、合法的用户标识符是?
4、强制类型转换的正确运用(float)(5/2)
5、自增自减运算符使用要点
6、逗号表达式值的概念及其正确运用(例如已知int a,b;执行语句a二(b=3*4,b*2),b+9;变量a的值是?)
37、编写程序由键盘输入三个数a,b,c,计算以这三个数为边长的三角形面积s=a+b+c/2s=sqrt s*s-a*s-b*s-c程序填空,有2处,注意根据边长求面积公式
38、从键盘输入一个字符串,把它输出到文件中,文件名由键盘输入#includevoid main{FILE*fp;char ch,*fn;scanf,fn;if fp=fopenfn,W==NULL{printf“打开e文件出错\n;exit1;}while ch=getchar!=E0F{fputcch,fp;putchar ch;fclose fp;请填充下划线处的内容以完善本程序
39、编写程序输出所有的“水仙花数”,所谓“水仙花数”就是指一个3位数,其各位数的立方和等于该数本身例如153是一个水仙花数,因为15为13+53+33程序填空,有1处,注意如何从一个三位整数中取得百位、十位和个位!
40、充分分析和理解是猴子吃桃问题猴子第1天摘下若干个桃子,当即吃了1半,还不过瘾,又多吃了1个第2天早上又将剩下的桃子吃掉1半,又多吃了1个以后每天早上都吃了前天剩下的1半零1个到第10天早上想再吃时,见只剩1个桃子了求第1天共摘了多少个桃子程序填空,有1处,注意表达式的理解!
41、有15个数按从小到大的顺序存放在1个数组中输入1个数,要求用折半查找法找出该数是数组中第几个元素的值如果该数不在数组中,输出“不在表中”解题思路假如有已按由小到大排好序的9个数,a[l]——数9],其值分别为1,3,5,7,9,H,13,15,17若输入一个数3与a
[5]比较,a
[5]的值是9发现a
[5]〉3,显然3应该在到a
[5]范围内,而不会在a
[6]到a
[9]范围内这样就可以缩小查找范围,甩掉a
[6]到a
[9]这一部分,即将查找范围缩小为1半在找a[l]到a
[5]范围内的居中的数,即a
[3],将要找的数与a
[3]比较,a
[3]的值是5,发现a
[3]〉3,显然3应该在a[l]到a
[3]的范围内依次类推,直到找到为止下面是折半查找函数int binsearchseqlistr,keytype k{〃折半查找int low=l,high=n,mid;while low〈二high{mid=low+high/2;if r[mid].key==k returnmid;if r[mid].keykhigh=mid-1;elselow=mid+l;return0;请填充下划线处的内容以完善本程序Olow和high表示当前查找区间的上界和下界,当前查找区间的中值设为mid如果关键字k与中值不相等,则查找区间缩小为上次查找区间的一半
42、编写冒泡排序(由小到大)的程序程序填空,非常之简单!
43、充分分析和理解汉诺塔C递归程序程序填空,有3处,注意函数参数!
7、scanf函数多数据输入时的格式控制问题(空格或逗号的使用)级d%d%d〃是按十进值格式输入三个整数值输入时,在两个数据之间可以用一个或多个空格、tab键、回车键分隔
8、二维数组定义时下标值缺省的规则
9、printf函数输出数据时总长度和小数位数的确定12d
10、指向数组的指针灵活运用的问题(例如:已知:char s
[10],*p=s;下列错误的表达式是:s=p+5p=s+5s
[2]=p
[3]*p=s的表
11、自增自减运算符“先用后增减,先增减后用”的问题
12、字符串复制函数和字符数组(串)长度的概念和运用(例如saticcharstr[]=bei jing;则执行下列语句后的输出结果为?printf(%d\nn,strlen(strcpy(str,hello!”)));另外:char a口=“abodew,b□二{a,b,c,d,e};中a与b的区别和联系s tatic char str[]=v bei jing”;printfu%d\nv,strlenstrcpystr,n hello!v;#include main{int a,b;static charstr[]=/,beijing〃;a=strlen str;strcpystr,/zhello!z,;b=strlen str;printf〃%d,%d\n〃,a,b;8,6strlen求数组中存放的字符串的长度!不算\
013、“循环条件”与“循环结束条件”的概念
14、字符串比较函数strcmp返回值的概念较大字符串的正确语句是A.ifstrcmpstrl,str2printf%s”,strl;B.ifstrlstr2printf,strl;ifstrcmpstrl,str20printf u%sw,strl;C.ifstrcmpstrlstrcmpstr2printf%s,strl;当strl〈str2时,返回值str2时,返回值0即两个字符串自左向右逐个字符相比按ASCII值大小相比较,直到出现不同的字符或遇\0为止如〃A〃〈〃B〃二〃%〃〃明成61%1^@方〃〈/5宜2时,返回值
15、函数值类型的定义缺省时函数值的隐含类型是?void
16、调用一个函数,且此函数中没有return语句,意味着什么?该函数没有返回值
17、main函数调用自定义函数时返回值的使用
18、在一个文件中定义的全局变量的作用域为?从定义该变量开始至本文件结束
19、以下叙述中错误的是oA二进制文件打开后可以先读文件的末尾,而顺序文件不可以B在程序结束时,应当用fclose函数关闭已打开的文件0用fread函数从二进制文件中读数,可以用数组名给数组所有元素读入数据D)不可以用FILE定义指向二进制文件的文件指针
20、三种循环结构的区别与联系
21、当说明一个结构体变量时系统分配给它的内存是()A)各成员所需内存的总和B)结构中第一个成员所需内存量C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量
22、二维数组转换成等价的一维数组,原二维数组中元素转换成一维数组后在一维数组中的下标应该是?
23、在位运算中,操作数每右移一位,其结果相当于什么?若左移1位,其结果相当于什么?
24、当顺利执行了文件关闭操作时,fclose()函数的返回值是什么?当使用完一个文件后,应该将该文件关闭,以防止它再被调用“关闭”就是是文件指针变量不再指向该文件,也就是文件指针变量与该文件“断开”,此后不能通过该指针变量对原来与其相联系的文件进行读写操作,除非再次打开,使文件变量重新指向该文件【调用形式】fclose(文件指针变量名)【功能】关闭文件指针变量所指向的文件,同时自动释放分配给文件的缓冲区【返回值】文件能正常关闭,则返回0,否则返回非
0.
25、实型变量的类型说明符有哪些?float、double
26、表达式8+9225%5的结果是什么?
27、编写从键盘输入的字符中统计数字字符的个数的程序,字符用getchar获得,循环条件由判断是否回车构成int n=0,ch;ch=getchar;whilech=getchar!=,\n{if ch=0ch=9n++;28putchar函数的功能是什么?
29、定义fp为文件型指针变量的定义方法是什么?file*fp
30、若s是int型变量,且s=9,则表达式s%2+s+l%2的值是多少
31、通常a和b的值可以借助中间变量t进行交换,写出它们交换的语句;若不借助任何变量把a、b中的值进行交换,也请写出相关语句,并注意使用缩减赋值符号+二和-二等{t=a;a=b;b=t;}{a+=b;b=a-b;a-=b;}
32、编写求出矩阵a的主对角线上的元素之和的程序main inta
[3]
[3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;for i=0;i3;i++forj=0;j3;j++ifi二二j sum=sum+a[i][j];printf〃sum=%d\n〃,sum;
33、以下程序的运行结果是main increment;increment;increment;}increment static int x=0;x+=2;printf级d〃,x;}非常重要,自行分析!
34、以下程序的运行结果是void main{staticinta
[10],i;for i=0;i10;i++a[i]=i+l;for i=0;i10;i=i+2printf%d”,*a+i;}非常重要,自行分析!
35、编写程序输出所有大写字母和其对应的ASCII码值程序填空,有1处,非常简单,但也要注意!
36、编写程序将一个字符串S的内容颠倒过来程序填空,有2处,例如void reservechars[],int n{int i,j,k;for i=0,j=strlen s-1;p=〃〃〉{k=s[i];s[i]=s[j];s[j]=k;}。