c语言考试题上课讲义.docx
《c语言考试题上课讲义.docx》由会员分享,可在线阅读,更多相关《c语言考试题上课讲义.docx(36页珍藏版)》请在冰豆网上搜索。
c语言考试题上课讲义
fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式
必须是()。
A、读或读写
B、追加
C、只写
D、答案B和C都正确
【参考答案】错误
A
【学生答案】
D
使用共用体变量,不可以()。
A、同时访问所有成员
B、进行动态管理
C、节省存储空间
D、简化程序设计
【参考答案】正确
A
【学生答案】
A
设有如下定义:
structsk{inta;floatb;}data,*p;
若要使p指向data中的a域,正确的赋值语句是()。
A、p=(structsk*)data.a;
B、*p=data.a;
C、p=&data.a;
D、p=&data,a;
【参考答案】错误
C
【学生答案】
B
以下程序段执行后输出的结果是().
charstr[]="ABCD",*p=str;
printf("%d\n",*(p+4));
A、字符'D'的地址
B、0
C、不确定的值
D、68
【参考答案】错误
B
【学生答案】
D
已定义chara[10];和char*p=a;,下面的赋值语句中正确的是().
A、p="Turboc";
B、a="Turboc";
C、*p="Turboc";
D、a[10]="Turboc";
【参考答案】错误
A
【学生答案】
C
设有如下程序,请选择正确答案()。
#include
main()
{int**k,*j,i=100;
j=&i,k=&j;
printf("%d\n",**k);
}
A、运行错误
B、100
C、i的地址
D、j的地址
【参考答案】正确
B
【学生答案】
B
以下叙述正确的是()。
A、可以把if定义为用户标识符,但不能把define定义为用户标识符
B、define和if都不能定义为用户标识符
C、可以把define定义为用户标识符,但不能把if定义为用户标识符
D、可以把define和if定义为用户标识符
【参考答案】正确
C
【学生答案】
C
关于建立函数的目的,以下正确的说法是()。
A、提高程序的可读性
B、减少程序文件所占内存
C、减少程序的篇幅
D、提高程序的执行效率
【参考答案】错误
A
【学生答案】
C
若使用一维数组名作函数实参,则以下正确的说法是()。
A、实参数组名与形参数组名必须一致
B、必须在主调函数中说明此数组的大小
C、实参数组类型与形参数组类型可以不匹配
D、在被调用函数中,不需要考虑形参数组的大小
【参考答案】正确
B
【学生答案】
B
下面叙述中错误的是()。
A、在其它函数中定义的变量在主函数中也不能使用
B、主函数中定义的变量在整个程序中都是有效的
C、复合语句中定义的变量只在该复合语句中有效
D、形式参数也是局部变量
【参考答案】错误
B
【学生答案】
A
下列说法中错误的是()。
A、如果在对数组进行初始化时,给定的数据元素个数比数组元素个数少时,多余的数组元素会被自动初始化为最后一个给定元素的值
B、一个数组只允许存储同种类型的变量
C、数组的名称其实是数组在内存中的首地址
D、当数组名作为参数被传递给某个函数时,原数组中的元素的值可能被修改
【参考答案】正确
A
【学生答案】
A
以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。
A、chart[]="abcdefg",*s=t;
B、chars[10]="abcdefg";
C、chars[10];s="abcdefg";
D、chars[10];strcpy(s,"abcdefg");
【参考答案】错误
C
【学生答案】
B
已定义charstr1,str2[10];选择正确的输入语句().
A、scanf("%c%s",str1,str2);
B、scanf("%c%s",&str1,&str2);
C、scanf("%c%s",&str1,str2);
D、scanf("%c%s",str1,&str2);
【参考答案】错误
C
【学生答案】
B
若有语句charx[]="12345",y[]={'1','2','3','4','5'};则正确的描述是().
A、x数组和y数组的长度相同.
B、x数组的长度小于y数组的长度.
C、x数组等价于y数组.
D、x数组的长度大于y数组的长度.
【参考答案】正确
D
【学生答案】
D
下列字符数组长度为5的是()。
A、chard[6]={'h','a','b','c','\0'};
B、charc[10]={'h','a','b','c','d'};
C、charb[]={'h','a','b','c','d','\0'};
D、chara[]={'h','a','b','c','d'};
【参考答案】正确
D
【学生答案】
D
若有说明inta[3][4];则a数组元素的非法引用是()。
A、a[1][3]
B、a[0][4]
C、a[0][2*1]
D、a[4-2][0]
【参考答案】错误
B
【学生答案】
C
语句while(!
E);中的表达式!
E等价于()。
A、E==1
B、E!
=0
C、E!
=1
D、E==0
【参考答案】错误
D
【学生答案】
B
在C语言中,为了结束由while语句构成的循环,while后一对圆括号
中表达式的值应该为()。
A、非0
B、1
C、0
D、True
【参考答案】错误
C
【学生答案】
D
从循环体内某一层跳出,继续执行循环外的语句是()。
A、continue语句
B、空语句
C、break语句
D、return语句
【参考答案】正确
C
【学生答案】
C
下面程序段运行的结果是().
x=-1;
do{
x=x*x;
}while(!
x);
A、循环执行一次
B、有语法错误
C、死循环
D、循环执行两次
【参考答案】错误
A
【学生答案】
C
判断char型变量cl是否为小写字母的正确表达式是()。
A、('a'>=cl)||('z'<=cl)
B、'a'<=cl<='z'
C、(cl>=a)&&(cl<=z)
D、(cl>='a')&&(cl<='z')
【参考答案】正确
D
【学生答案】
D
若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于
表达式(exp)的是()。
A、(exp==1)
B、(exp!
=1)
C、(exp!
=0)
D、(exp==0)
【参考答案】错误
C
【学生答案】
D
设a,b,c,f均为整型变量,则执行以下程序段后,f的值为:
()
a=0;b=c=1;
f=--a||++b&&--c;
A、不确定值
B、0
C、2
D、1
【参考答案】错误
D
【学生答案】
A
C语言中,switch后的括号内表达式的值可以是()。
A、只能为整型和字符型
B、只能为整型
C、任何类型
D、只能为整型,字符型,枚举型
【参考答案】错误
C
【学生答案】
D
下列运算符优先级最高的是().
A、||
B、!
C、*
D、!
=
【参考答案】错误
B
【学生答案】
C
设a,b和c都是int型变量,且a=3,b=4,c=5,下面表达式中,值为0的表达式是().
A、'a'&&'b'
B、a||b+a&&b-c
C、!
((a
c||1)
D、a<=b
【参考答案】错误
C
【学生答案】
[未答此题]
下列程序段的输出结果为()。
intx=3,y=2;printf("%d",(x-=y,x*=y+8/5));
A、5
B、3
C、7
D、1
【参考答案】错误
B
【学生答案】
[未答此题]
设变量定义为"inta,b;",执行下列语句时,输入(),则a和b的值都是10.
scanf("a=%d,b=%d",&a,&b);
A、a=10,b=10
B、a=10b=10
C、10,10
D、1010
【参考答案】错误
A
【学生答案】
[未答此题]
printf("a\rHappi\by");在屏幕上正确的输出形式是().
A、Happy
B、Happi
C、aHappi
D、aHappy
【参考答案】错误
A
【学生答案】
[未答此题]
下列语句中符合C语言语法的语句是:
().
A、x=y+2=x+y+z;
B、x=7+y,y++,z++;
C、x=(3+b,z)=x+3;
D、x=3+y++=x+3;
【参考答案】错误
B
【学生答案】
[未答此题]
若有说明:
inta[3][4];则数组a中各元素()。
A、不能得到确定的初值
B、可在程序的编译阶段得到初值0
C、可在程序的运行阶段得到初值0
D、可在程序的编译或运行阶段得到初值0
【参考答案】错误
A
【学生答案】
[未答此题]
下列四个选项中,均是C语言关键字的选项是()。
A、autoenuminclude
B、ifstructtype
C、switchtypedefcontinue
D、signedunionscanf
【参考答案】错误
C
【学生答案】
[未答此题]
若有说明语句:
charc='\72';则变量c()。
A、说明不合法,c的值不确定
B、包含2个字符
C、包含3个字符
D、包含1个字符
【参考答案】错误
D
【学生答案】
[未答此题]
以下选项中合法的用户标识符是()。
A、long
B、3Dmax
C、_2Test
D、A.dat
【参考答案】错误
C
【学生答案】
[未答此题]
以下不符合C语言语法的赋值语句是()。
A、a=b=5;
B、y=(a=3,6*5);
C、++j;
D、a=1,b=2
【参考答案】错误
D
【学生答案】
[未答此题]
若变量已正确定义且k的值是4,计算表达式(j=4,k--)后,j和k的值为()。
A、j=3,k=4
B、j=4,k=4
C、j=3,k=3
D、j=4,k=3
【参考答案】错误
D
【学生答案】
[未答此题]
若inta=2,则执行完表达式a-=a+=a*a后,a的值是()。
A、-4
B、-8
C、0
D、-2
【参考答案】错误
C
【学生答案】
[未答此题]
C语言能正确处理的指数是()。
A、123000000000
B、4.5e-5.6
C、8.5e4288
D、e-32
【参考答案】错误
A
【学生答案】
[未答此题]
以下数据中,不正确的数值或字符常量是()。
A、82.5
B、0xff00
C、10
D、8.9e1.2
【参考答案】错误
D
【学生答案】
[未答此题]
以下选项中合法的实型常数是()。
A、E-3
B、.2E0
C、1.3E
D、5E2.0
【参考答案】错误
B
【学生答案】
[未答此题]
以下叙述中正确的是()。
A、花括号“{“和”}”只能作为函数体的定界符
B、构成C程序的基本单位是函数,所有函数名都可以由用户命名
C、分号是C语句之间的分隔符,不是语句的一部分
D、C程序中注释部分可以出现在程序中任意合适的地方
【参考答案】错误
D
【学生答案】
[未答此题]
一个C语言程序是由()。
A、若干过程组成
B、若干子程序组成
C、一个主程序和若干子程序组成
D、函数组成
【参考答案】错误
D
【学生答案】
[未答此题]
C语言规定,在一个源程序中,main函数的位置()。
A、必须在系统调用的库函数的后面
B、必须在最后
C、可以任意
D、必须在最开始
【参考答案】错误
C
【学生答案】
[未答此题]
C语言源程序文件以()后缀。
A、.c
B、.exe
C、.obj
D、.bas
【参考答案】错误
A
【学生答案】
[未答此题]
对auto存储类型的变量,若不赋值,则其值是().
A、'\0'
B、随机的
C、系统自动赋值0
D、根据情况赋值
【参考答案】错误
B
【学生答案】
[未答此题]
下面说法不正确的是:
____
A、a为真,!
a为假
B、a为真b为假,则a||b+1为真
C、b为假,则!
b+1为假
D、a为真b为假,!
a&&b为假
【参考答案】错误
C
【学生答案】
[未答此题]
以下程序的输出结果是______.
main(){inta[]={2,4,6,8},*p=a,i;
for(i=0;i<4;i++)a[i]=*p++;
printf("%d\n",a[2]);}
A、6
B、4
C、8
D、2
【参考答案】错误
A
【学生答案】
[未答此题]
以下对枚举类型名的定义中正确的是()。
A、enuma{sum=9,mon=-1,tue};
B、enuma={sum,mon,tue};
C、enuma{"sum","mon","tue"};
D、enuma={"sum","mon","tue"};
【参考答案】错误
A
【学生答案】
[未答此题]
下面程序运行后,从键盘上输入ABCD<回车>,输出结果应该是().
#include
#include
func(charstr[])
{intnum=0;
while(*(str+num)!
='\0')num++;
returnnum;
}
main()
{charstr[10],*p=str;
A、7
B、4
C、6
D、5
【参考答案】错误
B
【学生答案】
[未答此题]
在位运算中,操作数每右移一位,其结果相当于()。
A、操作数乘以16
B、操作数除以16
C、操作数除以2
D、操作数乘以2
【参考答案】错误
C
【学生答案】
[未答此题]
C语言的三种基本结构是_____结构、选择结构、循环结构.
【空1】错误
【学生答案】
[无]
【参考答案】
顺序
若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为_____,b值为_____,c值为_____.
【空1】错误
【学生答案】
[无]
【参考答案】
6
============================================================
【空2】错误
【学生答案】
[无]
【参考答案】
4
============================================================
【空3】错误
【学生答案】
[无]
【参考答案】
2
若a是int型变量,则计算表达式a=25/3%3后a的值为_____.
【空1】错误
【学生答案】
[无]
【参考答案】
2
表达式a+=b相当于表达式_____.
【空1】错误
【学生答案】
[无]
【参考答案】
a=a+b
a=b+a
下列语句输出的结果是_____,inta=-1;printf("%x",a);(在vc环境下)
【空1】错误
【学生答案】
[无]
【参考答案】
ffffffff
执行下列语句的结果是_____,a=3;printf("%d,",++a);printf("%d",a++);
【空1】错误
【学生答案】
[无]
【参考答案】
4,4
设x=2&&2||5>1,x的值为_____.
【空1】错误
【学生答案】
[无]
【参考答案】
1
已知a=13,b=6,a&&b的十进制数值为_____.
【空1】错误
【学生答案】
[无]
【参考答案】
1
以下do-while语句中循环体的执行次数是_____.a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);
【空1】错误
【学生答案】
[无]
【参考答案】
3
连接字符串的函数是_____,只写函数名即可.
【空1】错误
【学生答案】
[无]
【参考答案】
Strcat
定义inta[2][3];表示数组a中的元素个数是_____个.
【空1】错误
【学生答案】
[无]
【参考答案】
6
C语言中,数组名是一个不可变的_____量,不能对它进行加减和赋值运算.
【空1】错误
【学生答案】
[无]
【参考答案】
常量
地址常量
地址
函数调用语句func((e1,e2),(e3,e4,e5))中含有_____个实参.
【空1】错误
【学生答案】
[无]
【参考答案】
2
函数的_____调用是一个函数直接或间接地调用它自身
【空1】错误
【学生答案】
[无]
【参考答案】
递归
若x和n均是int型变量,且x和n的初值均为5,则计算表达式x+=n++后x的值为_____,n的值为_____.
【空1】错误
【学生答案】
[无]
【参考答案】
10
============================================================
【空2】错误
【学生答案】
[无]
【参考答案】
6
【程序改错】
--------------------------------------------------------
题目:
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include
/**********ERROR**********/
#include(math.h)
main()
{
inta,b;
floatc;
a=3;b=4;
c=sqrt(a*a+b*b);
/**********ERROR**********/
printf("c=%d\n",c);
}
【改错1】错误
【学生答案】
#include(math.h)
【参考答案】
#include
#include"math.h"
============================================================
【改错2】错误
【学生答案】
printf("c=%d\n",c);
【参考答案】
printf("c=%f\n",c);
【程序改错】
--------------------------------------------------------
题目:
改正以下程序的函数体中不正确的语句。
--------------------------------------------------------
注意:
不可以增加或删除程序行,也不可以更改程序的结构。
------------------------------------------------------*/
#include"stdio.h"
main()
{
inti=8,a,b;
unsignedlongw=5;
doublex=1.42,y=5.3;
x=x/(-3);
/**********ERROR**********/
y=float(i);
/**********ERROR**********/
y=y+x
a+=a-=(b=4)*(a=3);
}
【改错1】错误
【学生答案】
y=float(i);
【参考答案】
y=(float)i;
y=i;
============================================================
【改错2】错误
【学生答案】
y=y+x
【参考答案】
y=y+x;
【程序改错】
--------------------------------------------------------
功能:
编写函数fun生成一个对角线元素为5,上三角元素为0,
下三角元素为1的3*3的二维数组。
------------------------------------------------------*/
#include"stdio.h"
voidfun(intarr[][3])
{
/**********ERROR**********/
inti,j
/**********ERROR**********/
for(i=1;i<3;i++)
for(j=0;j<3;j++)
/**********ERROR**********/
if(i=j)
arr[i][j]=5;
elseif(j>i)
arr[i][j]=0;
else
arr[i][j]=1;
}
main()
{
inta[3][3],i,j;
fun(a);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
}
【改错1】错误
【学生答案】
inti,j
【参考答案】
inti,j;
============================================================
【改错2】错误
【学生答案】
for(i=1;i<3;i++)
【参考答案】
for(i=0;i<3;i++)
============================================================
【改错3】错误
【学生答案】
if(i=j)
【参考答案】
if(i==j)
下面程序将文件中的数据读到变量s中,将其按从小到大排序后回存到原文件中,请填空。
#include
main()
{FILE*fp;inti,j;
ints[10],ch;
if((fp=fopen("letter.dat","_____"))!
=NULL)
{
for(i=0;i<10;i++)fscanf(fp,"%d",&s[i]);
/**