C语言笔试填空题1
- 格式:doc
- 大小:45.50 KB
- 文档页数:7
二、填空题1.算法执行过程中所需要的存储空间称为算法的__空间复杂度____。
答案:空间复杂度知识要点:算法执行时所需要的存储空间,称为算法的空间复杂度。
2.在面向对象方法中, ___类__描述的是具有相似属性与操作的一组对象。
答案:类知识要点:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。
3.在关系模型中,把数据看成是二维表,每一个二维表称为一个__关系___。
答案:关系或关系表知识要点:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。
因此,本题的正确答案是关系。
4.程序测试分为静态分析和动态测试。
其中___静态分析__是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
答案:静态分析知识要点:程序测试分为静态分析和动态测试。
其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
5.数据结构分为线性结构和非线性结构,带链的队列属于___线性结构__。
答案:线性结构知识要点:数据结构分为线性结构和非线性结构,其中队列是属于线性结构。
队列有两种存储结构,一种是顺序存储结构,称为顺序队列;另一种是链式存储结构,称为链队列。
题目中所说的带链的队列就是指链队列。
无论队列采取哪种存储结构,其本质还是队列,还属于一种线性结构。
因此,本题的正确答案是线性结构。
6.以下程序运行后的输出结果是__88____。
main(){int x=0210;printf("%X\n",x);}答案:88知识要点:本题考查的是数制转换。
C语言规定,以0开头的整型常量为八进制。
另外,在printf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。
本题的输出应该是八进制210的十六进制形式。
将八进制转换为十六进制,可以先将其转换为二进制。
因为1位八进制表示3位二进制,4位二进制表示1位十六进制。
(210)8 = (1000 1000)2 = (88)16,故本题输出为88。
7.当执行以下程序时,输入1234567890<回车>,则其中while循环体将执行___0___次。
#include <stdio.h>main(){ char ch;while ((ch=getchar())=='0')printf("#");}答案:0知识要点:本题主要考查了while语句。
while语句的语法格式如下:while (<表达式>) <语句>其中,while为关键字;<表达式>是while循环条件,它用于控制循环是否继续进行;<语句>为while循环的循环体,它是要重复执行的代码行;while循环体可以是单条语句,也可以是由花括号括起来的符合语句。
本题的循环条件是“(ch=getchar())=='0'”,即从键盘缓冲区读入一个字符,如果这个字符是数字字符'0',就循环一次。
而题目要求的输入第1个字符就不是'0',故循环体一次都不会执行,应该填0。
8.以下程序运行后的输出结果是_1____。
main(){ int x,a=1,b=2,c=3,d=4;x=(a<b) ? a : b; x=(x<c) ? x : c; x=(d>x) ? x : d;printf("%d\n",x);}答案:1知识要点:本题考核的知识点是条件运算符的运用。
三目运算表达式的规则为如果“?”前面表达式的值为真,则取“:”前的表达式的值,否则,取“:”后面表达式的值。
在本例中,因为(a<b)为真,所以x = a = 1;然后(x<c)也为真,所以x = x值不变;最后(d>x)为真,所以还是x = x值不变。
故最后输出的结果是1。
9.以下程序运行后的输出结果是__2 20。
000000____。
main(){ char c; int n=100;float f=l0; double x;x=f*=n/=(c=50);printf("%d %f\n",n,x);}答案:2 20.0 或 2 20 或 2 20. 或 2 20.000000知识要点:本题考查的是赋值运算符。
所有的赋值运算符的优先级都相同,它们的结合性为从右至左,它们返回的表达式值为赋给变量的值。
所以,语句x=f*=n/=(c=50); → x=f*=n/=50; → x=f*=2;(n的值变成2)→ x=20;。
故最终输出的结果应该是:2 20.00000010.以下程序运行后的输出结果是__0918273645____。
main(){char c1,c2;for (c1='0',c2='9';c1<c2;c1++,c2--)printf("%c%c",c1,c2);printf("\n");}答案:0918273645知识要点:本题考查的是两个循环变量的for循环。
题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符'0'和'9',然后每次循环结束给c1增1、c2减1,循环条件为c1<c2,即让c1的值依次为'0'、'1'、'2'…,c2的值依次为'9'、'8'、'7'…,直到两个数相遇时结束循环。
又因为该循环的循环体每次按字符形式输出c1和c2的值。
所以最终的输出结果为:0918273645。
11.以下程序运行后的输出结果是___gae___。
main(){char a[]="Language",b[]="Programe";char *p1, *p2;int k;p1=a; p2=b;for(k=0;k<=7;k++)if(*p1+k)==*(p2+k))printf("%c",*(p1+k));}答案:gae知识要点:本题考核的知识点是通过指针变量对字符数组元素的引用。
主函数中定义了字符数组a和b,其初值分别为Language和Programe,然后定义了两个指针变量p1和p2,并让它们指向a和b。
通过分析可知下面的for循环中,每循环一次就将p1+k和p2+k所指向的字符进行比较,如果相等,输出该字符,循环共执行8次,显然Language和Programe中只有字符gae相等,所以最后输出为gae。
12.以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。
若str所指字符串为空串或不包含c中的字符,则函数返回NULL。
请填空。
char *fun(char *str, char c){ int n=0; char *p=str;if(p!=NULL)while(p[n]!=c && p[n]!='\0') n++;if (p[n]=='\0') return NULL;return( __&p[n]___ );}答案:&p[n] 或 p+n知识要点:本题主要考查的是指针的运用。
因为n被初始化为0、p被初始化指向str所指字符串的首地址,所以while循环的功能是从str所指字符串的第1个字符开始比较,若等于c或等于字符串结束符'\0'就跳出循环。
故循环结束后,若p[n]为'\0'则证明str所指字符串不包含c中的字符,应该返回NULL,否则应该返回p[n]的地址值。
返回NULL在第2条if 语句中已经实现,所以我们应该填入的表达式为p[n]的地址值,即&p[n]或p+n。
13.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下11 11 2 11 3 3 11 4 6 4 1其构成规律是:(1)第0列元素和主对角线元素均为1(2)其余元素为其左上方和正上方元素之和(3)数据的个数每行递增1请将程序补充完整。
#define N 6void yanghui(int x[N][N]){ int i,j;x[0][0]=1;for(i=1;i<N;i++){ x[i][0]=__x[i][i]____=1;for(j=1;j<i;j++)x[i][j]=___x[i-1][j-1]+x[i-1][j]___;}}答案:x[i][i]x[i-1][j-1]+x[i-1][j] 或 x[i-1][j]+x[i-1][j-1]知识要点:本题考核的知识点是函数与算法结合在一起的应用。
在程序中用两重循环。
在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i],在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。
14.以下程序运行后的输出结果是_____30 25_。
int a=5;fun (int b){ static int a=10;a+=b++;printf("%d",a);}main(){ int c=20;fun(c);a+=c++;printf("%d\n",a);}答案:30 25知识要点:本题考核的知识点是变量的存储属性和算术运算的应用。
本题涉及了自动变量、静态变量和外部变量。
外部变量是定义在所有函数之外的变量,本题中int a=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中static int a=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中int c=20定义了一个自动变量c,此自动变量c是个静态的局部变量。