电子科技大学《C语言(专科)》20春期末考试
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 75 分)
假设int x[] = {1,3,5,7,9,11}, *ptr; ptr = x; 以下那些是对数组元素的正确引用 ( )
A.*(ptr–)
B.x[6]
C.*(–ptr)
D.*(ptr++)
在c语言中,引用数组元素时,其数组下标的数据类型是( )。
A.整型常量
B.整型表达式
C.整型常量或整型表达式
D.任何类型的表达式
若有说明 int (*p)[3]; 则以下正确的描述( )
A.p是一个指针数组。
B.p 是一个指针,它只能指向一个包含3个int类型元素的数组。
C.p是一个指针,它可以指向一个一维数组中的任意元素。
D.(*p)[3]与*p[3]等价。
在C语言中,函数返回值的类型最终取决于 ( )
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
变量的指针,其含义是指变量的( )。
A.值
B.地址
C.名
D.一个标志
C语言程序中,main函数的位置( )。
A.在开头
B.在结尾
C.在中间
D.可以任意
当数组作函数参数时,选出不正确的描述。 ( )
A.实参数组与形参数组类型应一致。
B.数组元素做函数实参时,同变量做实参一样是参数传值。
C.形参数组可以不定义数组大小。
D.实参数组与形参数组大小必须一致,否则C编译会检查出错。
执行以下语句后a的值为( )。 int a,b,c; a=b=c=1; ++a||++b&&++c;
A.0
B.1
C.2
D.错误
以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是( )。
A.feof(fp)
B.ftell(fp)
C.fgetc(fp)
D.rewind(fp)
对于 for(表达式1;表达式2 ;表达式3) 语句的正确描述( )
A.表达式2省略,循环不执行。
B.表达式3省略,可在循环体中修改循环控制变量,以保证正常退出。
C.三个表达式均不能省略。
D.三个表达式均不能省略。但分号可以省略。
有以下程序段typedef struct node {int data;struct node *next;}* NODE; NODE p; 以下叙述中正确的是( )
A.p是指向struct node结构体变量的指针的指针
B.NODE p;语句出错
C.p是指向struct node结构变量的指针
D.p是struct node结构变量
以下程序段的作用是( )。 int a[]={4,0,2,3,1},i,j,t; for (i=1;i=0&&t>a[j]) {a[j+1]=a[j];j- -;} a[j+1]=t; }
A.对数组a进行插入排序(升序)
B.对数组a进行插入排序(降序)
C.对数组a进行选择排序(升序)
D.对数组a进行选择排序(降序)
在C语言中,char型数据在内存中的存储形式是( )。
A.13、在C语言中,char型数据在内存中的存储形式是( )。 补码
B.反码
C.原码
D.ASCII码
对两个数组a和b进行如下初始化 char a[]=”ABCDEF”; char b[]={‘A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是( )。
A.a与b数组完全相同
B.a与b数组长度相同
C.a和b中都存放字符串
D.a数组比b数组长度长
若有条件表达式(exp)?a++:b–,则以下表达式中能完全等价于表达式(exp)的是( )。
A.exp==0
B.exp!=0
C.exp==1
D.exp!=1
若有定义:int a[5][6]; 则下面关于数组a的叙述中正确的是 ( )
A.该数组共有20个元素
B.a[0][6]是该数组的一个元素
C.a[0][0]是该数组的一个元素
D.a[5][6]是该数组的一个元素
以下正确的描述是( )。
A.函数的定义可以嵌套,但函数的调用不可以嵌套
B.函数的定义不可以嵌套,但函数的调用可以嵌套
C.函数的定义和函数的调用均不可嵌套
D.函数的定义和函数的调用均可以嵌套
有下面的程序段: char a[3], b[ ] =”student”; a=b; printf (“ %s”,a); 则 ( )
A.运行后将输出student
B.运行后将输出b
C.运行后将输出a
D.编译出错
已知ch是字符型变量,下面不正确的赋值语句是( )。
A.ch=’a+b’;
B.ch=’\0′;
C.ch=’7’+’9′;
D.ch=5+9
下面程序欲对两个整型变量的值进行交换,以下正确的说法是( )。 {int a=10,b=20; printf(“(1)a=%d,b=%d\n”,a,b); swap(&a,&b); printf(“(2)a=%d,b=%d\n”,a,b); } swap (int p,int q) {int t; t=p;p=q;q=t;}
A.该程序完全正确
B.该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C.该程序有错,只要将swap()函数中的形参p、q和变量t均定义为指针即可
D.以上说法都不正确
在“文件包含”预处理语句的使用形式中,当#include后面的文件名用””括起时,寻找被包含文件的方式是( )。
A.直接按照系统设定的标准方式搜索目录
B.先在源程序所在目录搜索,再按照系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
以下选项中,当x为大于1的奇数时,值为0的表达式是 ( )
A.x%2==1
B.x/2
C.x%2!=0
D.x%2==0
要定义一个结构体类型拟包含两个成员,其中成员变量info用来存放整型数据,成员变量link是 指向自身结构体的指针。则下面的定义正确的是( )。
A.struct node{int info;struct node link;};
B.struct node{int info;node *link;};
C.struct node{int info;struct *link;};
D.struct node{int info;struct node *link;};
下面程序的运行结果是( )。 #include main() {int k=0;char c=’A’; do {switch(c++) {case ‘A’:k++;break; case ‘B’:k–; case ‘C’:k+=2;break; case ‘D’:k=k%2;break; case ‘E’:k=k*10;break; default:k=k/3; } k++; }while(c<‘G’); printf(“k=%d\n”,k); }
A.k=3
B.k=4
C.k=2
D.k=0
C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。
A.必须为字母
B.必须为下划线
C.必须为字母或下划线
D.可以是字母、数字和下划线中的任一种字符
建立函数的目的之一,以下正确的说法是( )。
A.提高程序的执行效率
B.提高程序的可读性
C.减少程序的篇幅
D.减少程序文件所占内存
一个C语言程序是由( )。
A.一个主程序和若干个子程序组成
B.若干函数组成
C.若干过程组成
D.若干子程序组成
以下正确的说法是( )。
A.实参和与其对应的形参占用独立的存储单元
B.实参和与其对应的形参共占用一个存储单元
C.只有当实参和与其对应的形参同名时才共占用一个存储单元
D.形参是虚拟的,不占用存储单元
下面描述正确的是( )。
A.两个字符串包含的字符个数相同时,才能比较字符串
B.字符个数多的字符串比字符个数少的字符串大
C.字符串”STOP”与”STOP■”相等
D.字符串”That”小于字符串”The”
以下叙述正确的是( )。
A.在C程序中,main函数必须位于程序的最前面
B.在C程序的每一行只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误
二、判断题 (共 10 道试题,共 25 分)
若有代数式x2÷(3x+5), 则正确的C语言表达式为:x*x/3*x+5。
强制类型转换,如(double)x,只改变原变量的类型,而不改变其值。
在运算时,不同类型的数据要先转换成精度高的类型之后,然后才能进行运算。
自增和自减运算符的前缀运算和后缀运算的表达式值是相同的。( )
联合类型是同一个存储空间,可以被几个不同数据类型的分量成员共享使用。
枚举类型变量只能取枚举定义中的枚举常量。
已知:int s[][3]={1,2,3,4,5,6}; 此时数组元素s[1][1]的值为1。
逻辑表达式的值只能为0或1。( )
如果a>b或cb&&c<d)为真。
do-while循环的while后的分号可以省略。( )