十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
c语言考试题(一)
创新互联主要从事网站设计制作、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务邹城,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
一、 单项选择题(每题2分,共20分)
1、以下选项中属于C语言的数据类型是( )
A.复数型 B.逻辑型 C.集合型 D.双精度型
2、一个C程序的执行是从( )
A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束
C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数世段结束
3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( )
A.3 B.0C.-12 D.9
4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。
A.cd\0e B.搜顷誉'c''d' C.cd D.cd e
5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。
A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3]
6、以下有宏替换不正确的叙述( ).
A.宏替换不占用运行时间 B.宏名无类型
C.宏替换只是字符串替换 D.宏名必须用大写字母表示
7、执行char str[10]=”Ch\nina”; strlen(str)的值是( )
A.5 B.6 C.7 D.9
8、下面程序的输出结果是:( )
#define POWER(x) (x*x)
main()
{int i=4; printf("%d",POWER(i-2)); }
A. -9 B. -7 C. 5 D. -6
9、在定义int a[3][4][2];后,第10个元素是( )
A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1]
10、下面程序的输出结果是:( )
typedef struct
{long x[2];brshort y[4];brchar z[8];br}MYTYPE;
MYTYPE a;
main()
{ printf("%d\n",sizeof(a));}
A. 2 B. 8 C. 14 D. 24
二、 填空题(每空1分,共11分)
1、字符串"A"在内存中占用的字节数为 。
2、C语言中的标识符只能由字母、下划线和 组成。
3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是
if(a++=25b--=2c++) printf("***a=%d,b=%d,c=%d\n",a,b,c);
else printf("###a=%d,b=%d,c=%d\n",a,b,c);
4、有如下定义a[]="B\172\\\'a%%";则执行语句printf("%d",strlen(a));的结果为 。
5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。
6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。
7、设x、y都是int型变量,初值都为1,则执行表达式:--xy++后,y的值为 。
8、语乎皮句for(i=1;i==10;i++)continue;循环的次数是 。
9、以下程序输出 。
main()
{enum em {em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
三、 写程序结果(每题5分,共35分)
1、#include
main()
{int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf("1:%d\n",z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf("2:%d\n",(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf("3:%d,%d,%d\n",x,y,z);br}
2、#define f(x) x*x
main()
{int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%d\n”,c);br}
3、fun(int k)
{ printf("%d",k);
if(k0)
fun(k-1);
}
main( )
{ int w=5; fun(w); printf("\n"); }
4、#include
main()
{int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“first\n”);break;brcase 1:printf(“second\n”);break;br}
case 2:printf(“third\n”);
}
}
5、#include
main()
{ int k=4;
func(k); func(k);
}
func(int a)
{ static int m=0;
m+=a;
printf("%d",m);
}
6、struct st
{ int x;
int *y;
}*p;
int s[]={30,20};
struct st a[]={1,s[0],2,s[1]};
main()
{ p=a; printf("%d,",p-x);
printf("%d\n",++(*(++p)-y));
}
7、假定在当前盘目录下有2个文本文件,其名称和内容如下:
文件名: a1.txt a2.txt
内容: ABCDEF# abcdef#
#include "stdio.h"
main()
{FILE *fp;brvoid fc();brif((fp=fopen("a1.txt","r"))==NULL)br{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
if((fp=fopen("a2.txt","r"))==NULL)
{printf("Can not open file!\n"); exit(1);}
else{fc(fp);fclose(fp);}
}
void fc(fp1)
FILE *fp1;
{char c;brwhile((c=fgetc(fp1))!='#')putchar(c);br}
四、 程序填空(每空2分,共14分)
1、下面程序求矩阵a的主对角线元素之和,请填空。
main()
{ int a[3][3]={2,4,6,8,10,12,14,16,18};
int sum=0,i,j;
for(i=0;i3; ① )
for(j=0; ② ;j++)
if(i= =j) sum=sum+ ③ ;
printf("sum=%d\n",sum);
}
2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。
coy(char s1[],char s2[])
{ int i;
for(i=0;s2[i]!= ① ;i++)
s1[i]=s2[i];
② ;
}
3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。
main()
{ char a[]="students",t; int i,j;
for(i=1;i7;i+=2)
for(j=i+2;j8; ① )
if( ② )
{t=a[i];a[i]=a[j];a[j]=t;}
puts(a);
}
c语言考试题(二)
一. 填空题(每题2分,共20分)
1. C语言基本数据类型有:_______________________________;
构造类型有:_____________________________________。 P.13
2. C语言源程序注注释符号是:________________________________,
为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4
3. 源程序TEST.C经编译产生的目标文件是:________________________;
经连接处理后,产生的可执行文件是:__________________________。
4. strlen(“1234 \ 0xy)的值为:_____________________________;
sizeof(float)的值为:____________________________
5. 二维数组a[10] [50]最后一行的首地址为:_________________________;
最后一个元素的首地址为:____________________________________。
6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D :\ MYC \ MY . H应如何包含到源程序文件中:_________________________。P.130
7. 已知函数定义为:int stat(int a,float *p)
{……………}
则此函数的两个参数类型分别是_______________ 、 _____________________。
8. 设int x,y,z=4;
x=y=++z;
x=(yz)?x+2;x++;则x的值是:_________;
设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。
9. 与if (x=0) 等价的写法是if ( ! x );
判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)1e-6 )。
10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量;
定义文件指针的C语句是:_________________________________。
二. 单项选择题 (每题1分,共10分)
1. 组成C程序的基本单位是____________________________。
A.函数 B.标识符 C.表达式 D.语句
2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。
A.0至65536 B.0至65535
C.-32767至32768 D.-32768至32767
3. 在C语言中,逻辑值“真”是用_____________________表示的。
A.预定义为真值的宏 B.非零数
C.正数 D.非零整数
4. C语言对于嵌套if语句规定else总是与_____________________匹配。
A.与最外层的if B.与之前最近的if
C.与之前最近的不带else的if D.与最近的{ }之前的if
5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。
A.3 B.9 C.4 D.10
6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。
A.该数组第一个元素的值 B.该数组所有元素的值
C.该数组第一个元素的首地址 D.该数组所有元素的首地址
7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。
A.(x=y=z) B.(x=y)AND(y=z)
C.(x=y)(y=z) D.(xy)(y=z)
8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。
A. a[p-a] B.*(a) C.p D.*(*(a+i))
9. 若有语句scanf(“%d%d”,a,b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。
A.12 34 B.12,34 C.1234 D.12:34
10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。
A.4 B.5 C.6 D.7
三. 分析程序,写出运行结果。(每题4分,共20分)
1. 源程序如下,运行时假定键盘输入字符串为``2004``
#include
void main(void)
{
int n=0;
char c;
while( (c=getchar( )) ! =`\n` ) /*字符型数字*/
{
if (c=`0`c=`9` )
n = n*10 + c- `0` ; /*数字*/
}
printf(“value=%d|n” ,n);
}
结果为: value=2004 。
2. 源程序如下:
#include
void main(void)
{
int num[9]={399,398,397,396,395,299,290,311,301};
int score[9]={81,85,59,77,90,66,89,93,73};
int iMax,iPos,i;
iPos=0;
iMax=score[iPos];
for(i=1;i9;i++)
if(scoreiMax)
{
iPos=i;
iMax=score[iPox];
}
printf(“num=%d,score=%d”,num[iPos];score[iPos]);
结果为: num=311, score=93 。
3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10
#include
void main(void)
{
int i,a[10];
int *p;
p=a;
for(i=0;i10;i++)
scanf(“%d“,p++);
for(p=a;p SPAN;p++)
if (*p%2)printf(“%3d”,*p);
}
结果为: 1 3 5 7 9 。
4. 源程序如下,两次运行,分别输入数据13和21
#include
#include
void main(void)
{
int n,s;
scant (“%d”,n);
s=panduan( n);
if(s==1)printf(“yes\n”);
else printf(“no\n);
}
int panduan(int n)
{
int k,j;
k=(int)sqrt((double)n);
for(j=2;j=k,j++)
{
if(n%j==0) break;
}
if(jk) retum(1);
else retum(0);
}
结果为 yes
no
5.源程序如下,运行时假定键盘输入字符为:AxByCz
#include
#include
void main(void)
{
char str[80];
int i;
gets(str);
for(i=0;str!=`\0`;i++)
if(str=`a`str=`z`) str-=32;
else if (str=`A`str=`Z`) str+=32;
puts(str);
}
结果为: aXbYcZ 。
四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分)
1. 求 s=1+2+3+、、、、、、、+100
include 改正为_________________________。
void sum (void) 改正为_________________________。
{
int s,i;
for (s=0,i=1;i=100;i++)
{
s=s+ i ++; 改正为__________________________。
}
printf (“s=%f”,s) 改正为__________________________。
}
2. 源程序实现求x
#include
double pow(float . int) 改正为_________________________。
void main(void)
{
int i, n;
float x;
scanf (“%f,%d”,x,n);
for (i=1; i9;i++)
printf(“%d,%e\n”, i, pow(i,x);
} 改正为______________________。
double v v pow(float x, int n)
{
int i;
double p=0; 改正为______________________。
for (i=1; i i++)改正为_______________________。
p*=x;
retum(p);
}
3. 源程序实现排升序。
#include
void main(void)
{
int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp;
for (i=0; i9; i++)
{
iMin=0; 改正为_______________________。
for (j=i+1; j10;j++)
if(a[iMin] iMin="j;"改正为_______________________。
if (iMin==i) 改正为_________________________。
{ iTemp=a;
a[iMin]=a; 改正为_________________________。
a[iMin]=iTemp;
}
}
for(i=0; i10; i++)
printf(“%4d”, a):
}
4. 源程序为求平均值。
#include
void main(void)
{
int i, sum; 改正为____________________。
float avg;
int sc[10], *p=sc;
for (i=0, i10; i++) 改正为____________________。
{
scanf(“%d”, p++);
sum+= *p; 改正为____________________。
}
avg = sum/ 10; 改正为___________________。
printf(“avg=%f”, avg);
}
5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和
#include
void main(void
{
float exp , x , t;
int i, n;
scanf(“%f, %d”,x, n);
t=0; 改正为___________________。
exp=1.0;
for(i=1 ; i=n; i++)
{
if(t1e-6) loop; 改正为__________________。
t+=x/i; 改正为___________________。
exp*=t; 改正为___________________。
}
printf(“\n%15.6f”, exp);
}
五. 编程题 (每题6分,共30分)
1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。
#include
void swap (int *, int *);
void main (void)
{
int x, y;
scanf(“%d, %d”, x, y);
swap( x, y);
printf(“%d, %d”, x, y);
}
void swap( )
{
}
2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。
#include
void main (void)
{ int i;
float scoer[36], precent;
int count=0;
for (i=0; i36; i++)
{
scanf(“%f”, score);
}
3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。
#include
#include
void main (void)
{
char str [80];
int i, iA=0, ia=0, iother=0;
}
4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。
#include
void main(void)
{
int a[3] [3]={1,3,5,7,9,11,13,15,11};
int i, j, s1, s2;
int t[3] [3];
printf(“%d, %d,\n”,s1, s2);
for(i=0; i3; i++)
for(j=0; j3; j++)
printf(“%3d”, t [j]);
}
5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。
#include
#include
#include
char *lstrchar(char*, char);
void main(void)
{
char c, *p, str[80];
gets (str);
scanf(“%c”, c);
p=lstrchar(str,c);
if(p==NULL) printf(“char %c not found\n”c);
else printf(“The position is %d”, p-str);
char “lstrchar( )
{ }
历年全国计算机二级考试c语言真题及答案
main()
{ int k, a[10]={1,2,3,4,5};
for(k=1; k3; k++) fun(a);
for(k=0; k5; k++) printf("%d", a[k]);
}
上面程序的输出结果是
A.34756
B.23445
C.35743
D.12345
(40) 请读程序:
#include
#define SUB(X,Y) (X)*Y
main()
{ int a=3, b=4;
printf("%d", SUB(a++, b++));
}
上面程序的输出结果是
A.12
B.15
C.16
D.20(41) 请读程序:
#include
main()
{ int mun=0;
while(num=2)
{ num++; printf("稿告%d\n",num);}
}
上面程序的输出结果是
A.1
B.1
C.1
D.1
2 2 2
3 3
4
(42) 请读程序:
#include
main()
{ float x,y;
scan("%f",x);
if(x0.0) y=0.0
else if((x5.0)(x!=2.0))
y=1.0/(x+2.0);
else if (x10.0) y=1.0/x;
else y=10.0;
printf("%f\n",y);
}
若运行时从键盘上输入2.0(表示回车),则上面程序的输出结果是
A.0.000000
B.0.250000
C.0.500000
D.1.000000
(43) 请读程物好序:
#include
main()
{ int x=1, y=0, a=0, b=0;
switch(x)
{ case 1:
switch(y)
{ case 0: a++;break;
case 1: b++;break;
}
case 2:
a++; b++; break;
罩敬铅 }
printf("a=%d, b=%d\n",a,
B.;
}
上面程序的输出结果是
A.a=2, b=1
B.a=1, b=1
C.a=1, b=0
D.a=2, b=2
(44) 若有下面的程序片段:
int a[12]={0}, *p[3], **pp, i;
for(i=0; i3; i++)
p[i]=a[i*4];
pp=p;
则对数组元素的错误引用是
A.pp[0][1]
B.a[10]
C.p[3][1]
D.*(*(p+2)+2)
(45) 请读程序:
#include
#include
main()
{ float x,y,z;
scan("%f%f",x,y);
z=x/y;
while(1)
{ if(fabs(z)1.0)
{ x=y; y=z; z=x/y;
}
else break
}
printf("%f\n",y);
}
若运行时从键盘上输入3.6 2.4(表示回车),则输出的结果是
A.1.500000
B.1.600000
C.2.000000
D.2.400000
(46) 请读程序:
#include
f(in b[], int n)
{ int i, r;
r=1;
for(i=0; i=n; i++) r=r*b[i];
return r;
}
main()
{ int x, a[]={ 2,3,4,5,6,7,8,9};
x=f(a, 3);
printf("%d\n",x);
}
上面程序的输出结果是
A.720
B.120
C.24
D.6
(47) 请读程序:
#include
#include
void fun( char *s)
{ char a[10];
strcpy( a, "STRING");
s=a;
}
main()
{ char *p;
fun(p);
x=f(a, 3);
printf("%s\n",p);
}
上面程序的输出结果是(└┘表示空格)
A.STRING└┘└┘└┘└┘
B.STRING
C.STRING└┘└┘└┘
D.不确定的值
(48) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是
A.s-next=NULL; p=p-next; p-next=s;
B.p=p-next; s-next=p-next; p-next=s;
C.p=p-next; s-next=p; p-next=s;
D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;
(49) 请读程序:
#include
void fun(float *pl, float *p2, float *s)
{ s=( float * )calloc( 1, sizeof(float));
*s=*p1+ *(p2++);
}
main()
{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;
fun(a, b, s)
printf("%f\n",*s);
}
上面程序的输出结果是
A.11.100000
B.12.100000
C.21.100000
D.1.100000
(50) 请读程序:
#include
#include
void fun( char *w, int m)
{ char s, *p1, *p2;
p1=w; p2=w+m-1;
while (p1{ s=*p1++; *p1=*p2--; *p2=s;}
}
main()
{ char a[]="ABCDEFG";
fun( a, strlen(a));
puts(a);
}
上面程序的输出结果是
A.GFEDCBA
B.AGADAGA
C.AGAAGAG
D.GAGGAGA
二、填空题(每空2分,共40分)
请将每空的正确答案写在答题卡上【1】-【20】序号后的横线上,答在试卷上不得分。
(1) DOS命令分为内部命令与外部命令,XCOPY命令是 【1】 命令
(2) 为了列出当前盘当前目录中所有第三个字符为C的文件名的有关信息,应该用命令 【2】 。
(3) 设当前盘为A盘,当前目录为\X\Y,A盘上的一个文件QR.C在当前目录下的子目录W中。现已将A盘的当前目录改为\D\XY,当前盘改为C盘,如需指定A盘上该文件应写成 【3】 。
(4) 用十六进制给存储器中的字节地址进行编号,其地址编号是从0000到FFFF,则该存储器的容量是【4】KB。
(5) 设有两个八位二进制数00010101与01000111相加,其结果的十进制表示为 【5】 。
(6) 数学式子 写成C语言表达式是 【6】 。
(7) 下面程序的输出结果是 【7】 。
#include
main()
{ static char b[]="Goodbye";
char *chp=b[7];
while( --chp =b[0]) putchar( *chp);
putchar(’\n’);
}
(8) 下面程序的输出结果是 【8】 。
#include
void as( int x, int y, int *cp, int *dp)
{ *cp=x+y;
*dp=x-y;
}
main()
{ int a=4, b=3, c, d;
as( a, b, c, d);
printf( ’%d %d\n", c, d);
}
(9) 请读程序:
#include
main( int argc, char *argv[])
{ int i;
printf( ’%d\n", argc);
for( i=0; i=argc+1; i++) printf( "%s ", argv[i]);
printf("\n");
}
若上面的程序编译、连接后生成可执行文件ABC.EXE,则输入以下命令行
abc file1 file2(表示回车)
程序执行后的输出结果是 【9】 。
(10) 条件“20(11) 设二进制数a是00101101,若想通过异或运算a^b使a的高4位取反,低4位不变,则二进制数b应是 【11】 。
(12) 若有以下说明和定义语句,则变量w在内存中所占的字节数是 【12】 。
union aa
{ float x, y;
char c[6];
};
struct st { union aa v; float w[5]; double ave; } w;
(13) 下面程序的输出结果是 【13】 。
#include
#define N 5
fun( char *s, char a, int n)
{ int j;
*s=a; j=n;
while( ereturn j;
}
main()
{ char s[N+1];
int k, p;
for( k=1; k=N; k++)
s[k]=’A’+k+1;
printf( "%d\n", fun(s, ’E’, N));
}(14) 下面程序的输出结果是 【14】 。
#include
void fun( char *a1, char *a2, int n)
{ int k;
for( k=0; ka2[k]=( a1[k]-’A’-3+26)+’A’;
a2[n]=’\0’;
}
main()
{ char s1[5]="ABCD", s2[5];
fun( s1, s2, 4);
puts( s2);
}
(15) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax( int s[], int t)
{ int k, p;
for( p=0, k=p; pif( s[p]s[k]) 【15】 。
return k;
}
(16) 下面程序的输出结果是 【16】 。
#include
fun( int x)
{ int p;
if( x==0||x==1) return(3);
p=x-fun( x-2);
return p;
}
main()
{ printf( "%d\n", fun(9));}
(17) 下面程序的输出结果是 【17】 。
#include
funa( int a, int b)
{ return a+b;}
funb( int a, int b)
{ return a-b;}
sub( int (*t)(), int x, int y)
{ return((*t)( x,y));}
main()
{ int x, (*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb, 8, 3);
printf("%d\n", x);
}
(18) 下面程序的输出结果是 【18】 。
#include
main()
{ char *p[]={ "BOOL", "OPK", "H", "SP"};
int i;
for(i=3; i=0; i--,i--) printf( "%c", *p[i]);
printf("\n");
}
(19) 为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是向结点的指针域),请填空。
data next
struct link { char data; 【19】 } node;
(20) 下面的程序用来统计文件中字符的个数,请填空。
#include
main()
{ FILE *fp;
long num=0;
if(( fp=fopen("fname.dat","r"))==NULL)
{ printf( "Can’t open file! \n"); exit(0);}
while 【20】
{ fgetc(fp); num++;}
printf("num=%d\n", num);
fclose(fp);
}
参考答案
一`选择题((1)~(40)题每题1分,(41)~(50)题每题2分,共60分)
(1)C (2)A (3)B (4)D (5)D (6)A (7)C (8)B (9)D (10)C
(11)B (12)D (13)A (14)C (15)B (16)A (17)B (18)A (19)C (20)C
(21)D (22)B (23)B (24)A (25)C (26)D (27)D (28)B (29)C (30)A
(31)B (32)B (33)D (34)C (35)A (36)C (37)A (38)B (39)C (40)A
(41)C (42)C (43)A (44)C (45)B (46)B (47)D (48)C (49)D (50)C
二` 填空题(每空2分,共40分)
(第(2)`(3)空允许小写或大小写混合使用,其它空均须与答案一样)
(1) 外部
(2) DIR ?? C*.*
(3) A:\X\Y\W\QR.C
(4) 64
(5) 92
(6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)
(7) eybdooG
(8) 7 1
(9) 3 abc.exe file1 file2 (注:两个答案,每个1分)
(10) ((20 (11) 11110000
(12) 34
(13) 3
(14) XYZA
(15) k=p
(16) 7
(17) 17
(18) SO
(19) struct link *next
(20) (!feof(fp))或(feof(fp)==0)
◆单选题 共(40 分)
1、在C语言中, char型数据在内存中的存储形式是:___A___
A、补码
B、反码
C、原码
D、ASCII码
2、已知int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是___C___
A、i=*(*(x+1))
B、i=x[1][1]
C、i=*(*(x+1))
D、i=*(x[1]+1)
3、以下叙述正确的是__D____
A、在C程序中,main函数必须位于程序的最前面
B、C程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误
4、若x=2,y=3则x||y的结果是__B____
A、0
B、3
C、1
D、2
5、若有以下说明语句:char s='\\\092';则下面哪一项是正确的__B____
A、使s的值包含2个字符
B、说明语句不合法
C、使s的值包含6个字符
D、使s的值包含4个字符
6、一个C程序的执行是从_A_____
A、本程序的main函数开始,到main函数结束
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C、本程序的main函数开始,到本程序文件的最后一个函数结束
D、本程序文件的第一个函数开始,到本程序main函数结束
7、已知int a[10];则对a数组元素的正确引用是______ 没有正确的,AC相同,应该是选项有问题。
A、a[10]
B、a[3.5]
C、a[10]
D、a(5)
8、若希望当A的值为奇数时,表达式的值为"真",A的值为偶数表达式的值为"假"。则以下不能满足要求的表达式是___C___
A、A%2= =1
B、!(A%2 = =0)
C、!(A%2)
D、A%2
9、在C语言的if语句中,用作判断的表达式为___B___
A、关系表达式
B、逻辑表达式
C、算术表达式
D、任意表达式
10、C语言程序由什么组成?___C___
A、子程序
B、主程序和子程序
C、函数
D、过程
11、已知static int a[2][3]={2,4,6,8,10,12}; 正确表示数组元素地址的是___C___
A、*(a[1]+2)
B、a[1]+3
C、*(a+1)
D、a[0][0]
12、075的十进制写法搜配判为___,十六进制写法为___。 C
A、0x4b 0113
B、0165 117
C、61 0x3d
D、0x4b 61
13、在C语言中,字符型数据在内存中的存储形式是__B____
A、原码
B、补码
C、反码
D、ASCII码
14、( )以下关于数组世改的描述正确的是 C
A、数组大小固定,但是可以有不同类型的数组元素
B、数组大小可变,但是所有数组元素的类型必须相同
C、数组大小固定,所有元素的类型必须相卖拆同
D、数组大小可变,可以有不同类型的数组元素
15、在C语言中,要求运算数必须是整型的运算符是__D___
A、/
B、++
C、!=
D、%
16、( A)若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是
A、ps+3
B、s[3]
C、ps[3]
D、ps+=3,*ps
17、(D )选择正确的输入语句( )。:(其中:char string[20];)使得string的内容为"I am student". D
A、scanf("%s", string);
B、scanf("%c", string);
C、scanf("%s", string);
D、gets(string);
18、已知char b[5], *p=b;则正确的赋值语句是。__C____
A、b=”abcd”
B、*b=”abcd”;
C、p=”abcd”;
D、*p=”abcd”;
19、printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式___B___
A、从左起输出该字串,右补空格
B、按原字符长从左向右全部输出
C、右对齐输出该字串,左补空格
D、输出错误信息
20、75的十六进制写法为___,八进制写法为______ C
A、0x4b 0113
B、0165 117
C、61 0x3d
D、0x4b 61
2018年计算机二级考试C语言试题及答案(3)
1[单选题] 以下叙述中正确的是
A.两个字符串可以用关系运算符进行大小比较
B.函数调用strlen(s);会返回字符串S实际占用内存的大小(以字节为单位)
C.C语言本身没有提供对字符串进行整体操作的运算符
D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
参考答案:C
参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
2[单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。
A.一对一B.一对多C.多对多D.多对一
参考答案:C
参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
3[单选题] 对于while(!E)s;,若要执行循环体s,则E的取值应为:
A.E等于1B.E不等于0C.E不等于1D.E等于0
参考答案:D
参考解析:while语句的一般形式为:while(表达式)语句;其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
4[单选题唤蚂] 在软件设计中不使用的工具是( )。
A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图
参考答案:C
参考解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,基好把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。
5[单选题] 若有定义语句:char a='\82';则变量a()
A.说明不合法B.包含1个字符C.包含2个字符D.包含3个字符
参考答案:搏链铅B
参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。
6[单选题] 若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是
A.EOFB.非0C.-1D.0
参考答案:D
参考解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。
7[单选题] 以下叙述中正确的是
A.只要适当地修改代码,就可以将do-while与while相互转换
B.对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环
C.对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句
D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句
参考答案:A
参考解析:B选项中,for语句中需要先求解先求解表达式1;C选项中,for语句使用最为灵活,它完全可以取代while语句;D选项中,对于死循环,也可以使用for语句。因此A选项正确。