版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年河北省秦皇岛市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
3.若要求从键盘读入含有空格字符的字符串,应使用函数()。
A.getcharB.getcC.getsD.scanf
4.以下定义语句中正确的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
5.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
6.下列标识符不是关键字的是()。
A.breakB.charC.SwithchD.return
7.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
8.下列关于字符串的说法中错误的是
A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B.'\0'作为标志占用存储空间,计入串的实际长度
C.在表示字符串常量的时候不需要人为在其末尾加入'\0'
D.在C语言中,字符串常量隐含处理成以'\0'结尾
9.
10.以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入的正确选项是
abs(intx)
{if(x>=0)returnx;
elsereturn-x;}
main()
{inty,z,(*p)(intx)=abs;
scanf("%d",&y);
z=(*p)(y);
;}
A.printf("%d%d\n",&p,z)
B.printf("%d%d\n",p,z)
C.printf("%d%d\n",*p,z)
D.printf("%d%d\n",p,*z)
11.
12.栈通常采用的两种存储结构是A.A.线性存储结构和链表存储结构
B.散列方式和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
13.计算机算法必须具备输入、输出和()等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性
14.
15.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}执行后的结果是()。A.7B.3C.2D.0
16.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不确定
17.已知:intx,y;doublez;则以下语句中错误的函数调用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
18.以下选项中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
19.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改
20.下面程序的输出结果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
执行后输出结果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不确定
二、2.填空题(20题)21.下面的程序是将从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
22.以下程序运行后的输出结果是______。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
pfintf("%d\n",x);
}
23.执行下面程序段时输出suet,请填空。
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
24.下列执行后输出的结果是【】。
main()
{intarr[10],i,k=0
for(i=0;i<10;i++)atr[i]=i
for(i=1,i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
26.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
27.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
29.在______个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。
30.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。
structnode
{chardata;
structnode*next;}a,b
31.对数据元素之间的逻辑关系的描述是()。
32.以下程序运行后的输出结果是______。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=C;c=t;
if(a<c&&b<c)t=b;b=a;a=t
printf("%d%d%d\n",a,b,c);
}
33.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
34.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
35.以下程序运行后的输出结果是()。
main()
{intx,a=1,b=2,c=3,d=4;
{intx,a=1,b=2,c=3,d=4;
x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;
printf("%d\n",x);
}
36.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
37.以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
prinff("%d\n",j);
38.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
39.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
40.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
main()
{
inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)
scanf("%d",(______);
for(i=0;i<20;i++)
{
if(a[i]>0)
{
count++;
sum+=(______);
}
}
printf("sum=%d,count-%dkn",sum,count);
}
三、1.选择题(20题)41.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;
A.example.x=10
B.examplev2.x=10
C.structv2;v2.x=10
D.structexamplev2={10};
42.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是()。
A.-1B.-3C.-5D.0
43.下列语句中符合C语言语法的赋值语句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
44.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
45.若有以下说明和定义:typedefint*INTEGER;INTEGERp,*q;以下叙述正确的是()A.p是整型变量
B.p是基类型为整型的指针变量
C.q是基类型为整型的指针变量
D.程序中可用INTEGER代替int类型名
46.以下选项中可作为C语言合法常量的是
A.-80B.-080C.-8e1.0D.-80.0e
47.下列叙述中正确的是()。
A.接口复杂的模块,其耦合程度一定低
B.耦合程度弱的模块,其内聚程度一定低
C.耦合程度弱的模块,其内聚程度一定高
D.上述三种说法都不对
48.当执行下面程序且输入aboy时,输出的结果是______。#include<stdio.h>#include<string.h>main(){charss[81]="ABOY",hh[81],*pt;scanf("%s",hh);pt=strcat(ss,hh);puts(pt);printf("%s\n",hh);}
A.ABOYaa
B.ABOYaboyaboy
C.ABOYaboya
D.ABOYaboyaboy
49.为了提高软件模块的独立性,模块之间最好是()。
A.控制耦合B.公共耦合C.内容耦合D.数据耦合
50.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是
A.8,2,3,4,5,6,7,1,
B.5,6,7,8,1,2,3,4,
C.1,2,3,4,5,6,7,8,
D.8,7,6,5,4,3,2,1,
51.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。
A.2B.3C.4D.5
52.在C语言中,要求运算数必须是整型的运算符是()。
A./B.++C.!=D.%
53.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序运行后的输出结果是______。
A.64,28B.4,4C.4,3D.64,64
54.下面程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.gaC.LanguageD.有语法错
55.下列程序的输出结果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
56.下列叙述中正确的是()。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上3种描述都不对
57.设变量已正确定义并赋值,以下正确的表达式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
58.C语言的基本单位是()。
A.函数B.过程C.子程序D.子函数
59.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段
60.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
四、选择题(20题)61.
62.
设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
63.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.函数的形参和实参分别占用不同的存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的实参和其对应的形参共占同一存储单元
64.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一个文件指针,指向待读取的文件
B.一个整型变量,代表待读取的数据的字节数
C.一个内存块的首地址,代表读人数据存放的地址
D.一个内存块的字节数
65.计算机的内存储器比外存器()
A.价格便宜B.存储容量大C.读写速度快D.读写速度慢
66.以下叙述中错误的是()。
A.函数的返回值类型不能是结构体类型,只能是简单类型
B.函数可以返回指向结构体变量的指针
C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员
D.只要类型相同,结构体变量之间可以整体赋值
67.
下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intll)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=j+1+1;j<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]一{1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
68.有以下程序
69.
70.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}输出结果是()。A.28B.27C.42D.4l
71.有以下程序:
程序运行后的输出结果是()。
A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
72.以下数组定义中错误的是()。
A.intx[2][3]=|1,2,3,4,5,6|;
B.intx[][3]=|0|
C.intx[][3]={|1,2,3|,|4,5,6|}
D.intx[2][3]=||1,2|,|3,4|,|5,6||
73.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,intc)
{c=*a+*b;}
main()
{inta[2]={6,9},c=0;
fun(a,a+1,&c);
printf("%d\n",c);
}
程序输出的结果是
A.6B.9
C.0D.15
74.
75.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4
76.有以下程序:
程序的运行结果是()。
A.0B.1C.2D.3
77.有以下程序:
#include<stdio.h>
intfun(intX,inty)
{if(X!=y)return((x+y)/2);
elsereturn(x);
}
main()
{inta=4,b=5,c=6;
printf("%d/n",fun(2*a,fun(b,c)));
}
程序运行后的输入结果是()。
A.3
B.6
C.8
D.12
78.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
79.对建立良好的程序设计风格,下面描述正确的是
A.程序应简单、清晰、可读性好B.符号名的命名只需符合语法
C.充分考虑程序的执行效率D.程序的注释可有可无
80.
五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写fun函数,其功能是:计算并输出3~m所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=68.665791。
请勿改动main函数与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
注意:m的值要大于2但不大于100。部分源程序给出如下。
试题程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
{}
voidmain
{
intm;
doubles;
FILE*out:
printf("\n\nInputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
}
参考答案
1.B
2.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。
3.C当输入字符串时,函数scanf用“空格”间隔不同的字符串,scanf函数不能输入空格。getchar函数用于输入字符,其调用形式为ch=getchar(),getehar函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户按<Enter>键时,读入才开始执行。gets函数的调用形式为getS(Str_adr),其中“str_adr”是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc函数的调用形式为ch=getc(Pf),其中“pf”是文件指针,函数的功能是从“pf”指定的文件中读入一个字符,并把它作为函数值返回。故本题答案为C选项。
4.BA选项中的变量b没有定义,不能直接给变量a赋值。C选项中,*b、*c表示的是一个实型变量的地址,不能将指针型变量b的地址赋值给指针型变量c。D选项中,“a=0.0”后面应该为逗号,不能是分号。故本题答案为B选项。
5.A本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。
6.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。
7.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。
8.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。
9.D
10.B解析:考查函数指针的使用方法。可以使用函数指针来调用函数。调用形式为:(*指针变量)(实参表列)。
11.D
12.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。
13.B
14.B
15.C调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);\r\n调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);\r\n调用函数fun(3)时,由于x的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);\r\n调用函数fun(1)时,由于X的值为1,执行语句“return(3);”,函数的返回值为3。\r\n因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。答案为C。
16.A解析:根据共用体的定义可知:共用体r的成员k和成员i[2]是共用同—段内存空间,所以,当程序给r.i[0]赋值后,实际上,共用体成员k的值也确定了,为2。所以打印输出的结果应当为2。
17.BB项的格式应该为scanf("%1d*%d%1f",&x,&y,&z);
18.AA选项中逗号是一个操作符。
19.D
20.Bn=9,i=n/5=1;j=9-1*5-1=3,输出为a[1][3]=-3
21.\0s*p++\\0\r\ns\r\n*p++解析:本题先通过for循环从键盘读入20个字符,然后赋值'\\0'作为字符串结束标志,再使指针p指向字符串的首地址,最后通过while循环对字符串进行扫描并输出。
22.因为在条件表达式(a<b)?a:b中,比较表达式a<b为真,所以x的值等于a的值等于1,后面两个条件表达式中的比较表达式都为真,所以最终x的值等于1。\r\n\r\n
23.a+strlen(a)或strlen(a)+aa+strlen(a)或strlen(a)+a解析:要输出suet就要将指针从字符串开始移动到字符串结尾,表达式p=a使p指向字符串的首地址;表达式p+=2使每次循环p值加2,是向前移动指针;空白处应判断是否到达字符串结尾,因此应填字符串的首地址加字符串长度,strlen(a)的返回值为字符串a所含的字符个数。
24.1212解析:本题的第—个for循环用于始数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。
25.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是开辟一个长度为sizeof(struetnode)的内存区。(structnode*)的作用是使malloc返回的指针转换为指向structnode类型数据的指针。
26.1212解析:本题首先通过第一个for语句把0~9(包含0和9)间的整数依次赋值给数组arr,第二个for语句用于实现将满足条件的数组元素与对应的下标值求和并累加,并用变量k保存。
27.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
28.相邻相邻
29.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。
30.a.next=aba.next=ab解析:选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。
31.数据的逻辑结构数据的逻辑结构解析:数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。
32.4599
33.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。
34.tunc()m++tunc()m++解析:第一空白处,在C语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为:“函数类型名函数名”。所以此处填写func()。第二空白处,整型变量m表示输入字符的个数,所以每输入一个字符,变量m的值就加1。所以此处填写m++。
35.11解析:条件运算表达式:“表达式1?表达式2:表达式3”,但表达式1的值为非0时,此时表达式2的值就是整个条件表达式的值,反之为表示式3的值。解析易知结果为1。
36.指针P指向数组a的首地址,执行语句p++;后p指向数组a的第2个元素的地址,即a[1]的地址,因此*p=a[1]=4。\r\n\r\n
37.2424解析:本题关键是while循环。
当i=0时,满足条件:i<7&&11%2==1,执行j=0+11=11,i++,i为1;
当i=1时,满足条件:i<7&&13%2=1,执行j=11+13=24,i++,i为2;
当i=2时,不满足条件:i<7&&14%2==1,循环结束。输出j的值24。
38.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。
39.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
40.&a[i]或a+ia[i]或*(a+i)&a[i]或a+ia[i]或*(a+i)解析:主函数中一开始定义了一个长度为20得整形数组,然后通过—个循环,循环20次给它的每个元素赋初值,所以在第一个空格处应填各个元素的地址,即填&a[1]或a+i,然后在通过一个循环执行20次,每循环一次,先判断该循环是否大于0,如果大于。将其累加到变量sum中,所以第二个空格处应该填入数组元素,所以应该填a[i]或*(a+i)。
41.D解析:在定义结构体变量时,不能只用结构体名example或关键字struct进行定义,必需要用结构钵类型名structexample定义,在引用结构体成员变量时,需要用结构体变量名进行引用,所以选D。
42.B解析:本题考查do-while语句。当n=-1时,s+=1,s=1;a=a-2=-1;a!=n不成立,结束循环,此时s值为1,不符合题意;当n=-3时,s+=1,s=1;a=a-2=-1;a!=n成立,继续循环,s=s+1=2,a=a-2=-3;a!=n不成立,此时s值为2,符合题意。
43.D
44.B解析:调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0]。在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5。最后的输出结果为'6,2,3,4,5'。
45.B本题中INTEGER被定义为int*的别名,故直接由它定义的类型基类型为整型的指针变量。因此,p是基类型为int的指针变量,q是int型指针的指针变量。故4个选项中B正确。
46.A解析:C语言的常量分为整型常量、实型常量和字符型常量。本题中包含整型常量和实型常量。选项B)以0打头,应该属于八进制整数,而八进制整数只能用数字0~7表示,所以选项B)不合法;选项C)和D)从形式上看属于实型常量,但对于指数形式的实型常量,e(或E)之前必须有数字,且e后面的指数必须为整数,所以选项C)和D)都不合法;选项A)属于实型常量中正确的十进制小数形式。
47.C解析:影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的模块强,所以选项A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项B错误;选项C正确。
48.A解析:对于函数strcat(ss,hh),把字符串hh(若遇空格,舍去后面的部分,并重新赋给hh)连至字符串ss的后面。
49.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。
50.D解析:在C语言中,函数参数的默认传递方式是传值,即函数内部的形参只是调用时的实参的一个拷贝,改变形参,实参不会被改变.如果想要实现传址调用只能使用传递指针的方式来实现.利用指针作函数的参数时,无论形参指针还是实参指针所指的都是同一个内存地址,所以形参如果改变了这个地址中的内容,也就是改变了实参所指的地址内容.本题程序开头定义了一个函数f(),在函数中用一个临时变量t交换了两个指针参数所指的地址内容,所以该函数的作用就是交换两个参数所指的内容。在主函数中,首先定义了一个int型数组a,并定义了两个int型指针p、q分别指向数组a的第一个元素和最后一个元素。然后使用一个while循环调用函数f()不断交换两个指针所指的内容,每次交换后p往后移动一个元素,q往前移动一个元素,直到q不再大于p,即直到两个指针在数组a的中间相遇为止。所以,程序最终运行的结果是数组a中的所有元素全被反序排列一次。故应该选择选项D。
51.C解析:二分法查找是一种线性查找方法,其基本方法是:首先要用要查找的关键码与线性表中间位置结点的关键码值进行比较,这个中间结点把线性表分为两个子表,比较相等则查找完毕,不等则根据查找结果确定下一步的查找应该在哪一个子表中进行,如此下去,直到找到满足条件的结点:或者确定表中没有这样的结点。用二分法查找关键码值11的顺序如下所示,其中[]内为本次栓索的子表,()内为该子表的中间结果。从图中可以看出,经四次查找后,确定表中没有这样的结点。因此本题正确答案为选项C(4)。
第一次:[3,6,8,10,12,(15),16,18,21,25,30]
第二次:[3,6,(8),10,12],15,16,18,21,25,30
第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]
第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失败。
52.D解析:/、++和!=的操作数既可能是整型,又可能是实型。而%的操作数只能是整型。
53.C解析:根据题意,il=f(8)/f(4)进行宏替换后.i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以输出结果为4、3。
54.A解析:指针p1+k相当于指针P1向后移动了k个字符的位置,指针p2同理。
55.B解析:continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。
56.C解析:算法的执行效率与数据的存储结构密切相关。算法的空间复杂度是指算法执行过程中所需的存储空间。
57.C解析:求余运算符'%'两边的运算对象必须是整型,而选项B)和D)中'%'两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。
58.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。
59.B数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概要设计和应用程序概要设计三方面。数据库逻辑结构设计的主要步骤为:将E—R图转换为初始关系模式,对初始关系模式进行优化,检查关系表对数据库事务的支持性,确定关系模式完整性约束,设计基于关系模式的用户视图。
60.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。
61.D
62.A
\n当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。
\n
63.A本题重点考察的是函数的形参和实参。I在定义函数时函数名后面括弧中的变量名称为“形式参数”l(简称形参),在主调函数中调用一个函数时,函数名后面括弧1中的参数(可以是—个表达式)称为“实际参数”(简称实参)。fC语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。因此A选项正确。
64.Cfread函数中的参数buffer是内存块的首地址,输入的数据存入此内存块中。
65.C
66.A函数返回值类型可以是简单类型和结构体类型。
67.C
\n本程序中的函数sort(inta[],intn)实现的功能是将数组a中的前n个数进行从大到小排序。sort(&a[1],7)是将数组中从a[1]~a[7]这7个数进行从大到小排序,其他数不变。
\n
68.A本题考查了数组名的概念。在C语言中,数组名类似于一个指向数组首地址的指针常量,一旦定义就不能修改其内容。所以本题中的s+=2;语句让数组名s的内容加2是错误的,编译无法通过。故应该选择A)。
69.A
70.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。
71.DCou血ue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印一一x的操作,即打印5后跳出循环。第三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x一一的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环。第四次判断循环条件时x的为2,满足循环体中if条件,打印x一一,即打印2后将x减一,执行continue语句,跳出本次循环。在进行for条件表达式中第三个表达式x一一的操作后x的值为0,不满足条件结束循环。所以打印结果为8,5,4,2,。
72.DD选项中x[2][3]定义的是一个两行三列的二维数组,而在给数组元素赋值时却赋成了三行,所以错误。
73.C函数的参数通常分为两种:数值变量和指针变量。数值变量被函数调用后,函数内的参数为该数值变量的副本。对副本的一切操作都不会影响到调用函数外原来的参数。指针变量在函数中传递的是对其存放地址的一份副本,该副本存放的地址与原来的指针所存的地址一致。在函数体内修改指针存放的地址对应的值与在函数体外对原参数的修改同样有效,因为原参数也指向该地址。
题目中的程序包括主函数main和fun函数,其中fun函数为void型,不需要fun函数返回值。fun函数的形参为2个整型指针变量和1个整型变量。在main函数中调用fun函数,a为指向数组第一个数的地址,a+1指向数组第二个数的地址,变量c的初始值为0。虽然在fun函数中也有整型变量c,但是该变量的使用范围为fun函数,与main中的变量c没有关系,有c=*a+*b,即c=15,但是main函数对fun函数的参数传递为数值变量,fun函数中变量c数值的改变不会影响main函数中变量c的数值改变,即主函数中变量c的值依然为0。
74.D
75.C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。
76.B本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为”j<=i¨,而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为l。
77.B\n此题考查的是函数fun,fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。
\n
78.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。
79.A具有良好的程序设计风格是一个程序员必不可少的素质。我们在编写程序时要养成良好的程序设计习惯,对程序的要求不仅能够在计算机上正确运行,而且要便于阅读和被别人理解,便于程序的调试和维护。好的程序设计风格有助于提高程序的正确性、可读性、可维护性和可用性。要使程序具有良好的风格,必须做到以下几点:
(1)合理的标识符的命名。由于一个程序中必然有很多标识符,特别是在一个大型复杂的程序中,标识符可能成千上万,对标识符作用的正确理解是读懂程序的前提,如果程序员随意命名标识符,程序的可读性会很差。因此,在命名标识符时要注意其可理解性。
(2)在程序中添加一定的注释。注释是程序员与日后的程序读者之间询通的重要工具,它用自然语言或伪码描述。它说明了程序的功能,特别是在维护阶段,对理解程序提供了明确指导。因此,一定的注释是程序必不可少的组成部分。
(3)程序的编辑风格。为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰,便于对程序的理解。
(4)语句的结构。在结构化程序设计中,单个语句结构是编码阶段的任务,语句结构追求简单直接,不能为了追求效率而使代码复杂化。
总之,程序应简单、清晰、可读性和可理解性好。
80.D
81.(1)错误:switch(g);
正确:switch(g)
(2)错误:case1:case2:return1;
正确:case1;case2:return1;
【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。switch语句的一般形式如下:
82.\r\n\tintn,k,i;
doublesum=0.0;
for(n=3;n<=m;n++)//判断n是否为素数
{
k=sqrt(n);//求n平方根
for(i=2;i<=k:i++)
if(n%i==0)break;//如果n不是素数,跳出
if(i>=k+1)
sum+=sqrt(n);//求平方根的和
}
returnsum;
【解析】首先判断循环中n是否为素数,如果不是素数,求其平方根的累加和,并返回计算结果,否则跳出判断循环。其中,对于平方根的求解可以使用C语句中的sqrt函数。2021年河北省秦皇岛市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
3.若要求从键盘读入含有空格字符的字符串,应使用函数()。
A.getcharB.getcC.getsD.scanf
4.以下定义语句中正确的是()。
A.inta=b=0;
B.charA=65+1,b=‘b’;
C.floata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
5.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
6.下列标识符不是关键字的是()。
A.breakB.charC.SwithchD.return
7.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
8.下列关于字符串的说法中错误的是
A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B.'\0'作为标志占用存储空间,计入串的实际长度
C.在表示字符串常量的时候不需要人为在其末尾加入'\0'
D.在C语言中,字符串常量隐含处理成以'\0'结尾
9.
10.以下程序运行时若要正确输出函数的入口地址和输入数的绝对值,应在程序空缺处填入的正确选项是
abs(intx)
{if(x>=0)returnx;
elsereturn-x;}
main()
{inty,z,(*p)(intx)=abs;
scanf("%d",&y);
z=(*p)(y);
;}
A.printf("%d%d\n",&p,z)
B.printf("%d%d\n",p,z)
C.printf("%d%d\n",*p,z)
D.printf("%d%d\n",p,*z)
11.
12.栈通常采用的两种存储结构是A.A.线性存储结构和链表存储结构
B.散列方式和索引方式
C.链表存储结构和数组
D.线性存储结构和非线性存储结构
13.计算机算法必须具备输入、输出和()等5个特性。
A.可行性、可移植性和可扩充性B.可行性、确定性和有穷性C.确定性、有穷性和稳定性D.易读性、稳定性和安全性
14.
15.有以下程序:intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}执行后的结果是()。A.7B.3C.2D.0
16.以下程序的输出结果是()main(){union{chari[2];intk;}r;r.i[0]=2,r.i[1]=0;printf("%d\n",r,k);}
A.2B.1C.0D.不确定
17.已知:intx,y;doublez;则以下语句中错误的函数调用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
18.以下选项中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
19.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。
A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改
20.下面程序的输出结果是()。
#include<stdio.h>
main()
{inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4};
inti,j,n;
n=9;
i=n/5;
j=n-i*5-1;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
执行后输出结果是()。A.A.a[1][3]=6
B.a[1][3]=-3
C.a[1][3]=2
D.不确定
二、2.填空题(20题)21.下面的程序是将从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。
#include<stdio.h>
main()
{inti;
chars[21],*p;
for(i=0;i<20;i++)
s[i]=getehar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
22.以下程序运行后的输出结果是______。
main()
{intx,a=1,b=2,c=3,d=4;
x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;
pfintf("%d\n",x);
}
23.执行下面程序段时输出suet,请填空。
main()
{staticchara[]="student";
char*p;
for(p=a;p<【】;p+=2)
putchar(*p);
}
24.下列执行后输出的结果是【】。
main()
{intarr[10],i,k=0
for(i=0;i<10;i++)atr[i]=i
for(i=1,i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
25.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
26.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i,10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
27.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
28.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
29.在______个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。
30.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。
structnode
{chardata;
structnode*next;}a,b
31.对数据元素之间的逻辑关系的描述是()。
32.以下程序运行后的输出结果是______。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=C;c=t;
if(a<c&&b<c)t=b;b=a;a=t
printf("%d%d%d\n",a,b,c);
}
33.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。
34.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
35.以下程序运行后的输出结果是()。
main()
{intx,a=1,b=2,c=3,d=4;
{intx,a=1,b=2,c=3,d=4;
x=(a<B)?a:b;x=(a<C)?x:C;x=(d>x)?x:d;
printf("%d\n",x);
}
36.以下程序的输出结果是______。
#include<stdio.h>
main()
{inta[5]={2,4,6,8,10},*p;
p=a;p++;
printf("%d",*p);
}
37.以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
prinff("%d\n",j);
38.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。
39.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
40.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
main()
{
inti,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)
scanf("%d",(______);
for(i=0;i<20;i++)
{
if(a[i]>0)
{
count++;
sum+=(______);
}
}
printf("sum=%d,count-%dkn",sum,count);
}
三、1.选择题(20题)41.若有以下结构体定义,则______是正确的引用或定义。structexample{intx;inty;}v1;
A.example.x=10
B.examplev2.x=10
C.structv2;v2.x=10
D.structexamplev2={10};
42.有以下程序:#include<stdio.h>main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是()。
A.-1B.-3C.-5D.0
43.下列语句中符合C语言语法的赋值语句是()
A.a=7+b+c=a+7;
B.9=7+b+9++a+7;
C.a=7+b,b++,a+7;
D.a=7+b,c=a+7;
44.有以下程序
voidf(int*q)
{inti=0;
for(;i<5;i++)(*q)++;
}
main()
{inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是
A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,
45.若有以下说明和定义:typedefint*INTEGER;INTEGERp,*q;以下叙述正确的是()A.p是整型变量
B.p是基类型为整型的指针变量
C.q是基类型为整型的指针变量
D.程序中可用INTEGER代替int类型名
46.以下选项中可作为C语言合法常量的是
A.-80B.-080C.-8e1.0D.-80.0e
47.下列叙述中正确的是()。
A.接口复杂的模块,其耦合程度一定低
B.耦合程度弱的模块,其内聚程度一定低
C.耦合程度弱的模块,其内聚程度一定高
D.上述三种说法都不对
48.当执行下面程序且输入aboy时,输出的结果是______。#include<stdio.h>#include<string.h>main(){charss[81]="ABOY",hh[81],*pt;scanf("%s",hh);pt=strcat(ss,hh);puts(pt);printf("%s\n",hh);}
A.ABOYaa
B.ABOYaboyaboy
C.ABOYaboya
D.ABOYaboyaboy
49.为了提高软件模块的独立性,模块之间最好是()。
A.控制耦合B.公共耦合C.内容耦合D.数据耦合
50.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序运行后的输出结果是
A.8,2,3,4,5,6,7,1,
B.5,6,7,8,1,2,3,4,
C.1,2,3,4,5,6,7,8,
D.8,7,6,5,4,3,2,1,
51.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。
A.2B.3C.4D.5
52.在C语言中,要求运算数必须是整型的运算符是()。
A./B.++C.!=D.%
53.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序运行后的输出结果是______。
A.64,28B.4,4C.4,3D.64,64
54.下面程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}
A.gaeB.gaC.LanguageD.有语法错
55.下列程序的输出结果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}
A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5
56.下列叙述中正确的是()。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.以上3种描述都不对
57.设变量已正确定义并赋值,以下正确的表达式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
58.C语言的基本单位是()。
A.函数B.过程C.子程序D.子函数
59.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段
60.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
四、选择题(20题)61.
62.
设有定义的语句:“charc1=92,c2=92;”,则以下表达式中的值为零的是()。
A.c1^c2B.c1&c2C.~c2D.c1E.c2
63.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.函数的形参和实参分别占用不同的存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的实参和其对应的形参共占同一存储单元
64.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一个文件指针,指向待读取的文件
B.一个整型变量,代表待读取的数据的字节数
C.一个内存块的首地址,代表读人数据存放的地址
D.一个内存块的字节数
65.计算机的内存储器比外存器()
A.价格便宜B.存储容量大C.读写速度快D.读写速度慢
66.以下叙述中错误的是()。
A.函数的返回值类型不能是结构体类型,只能是简单类型
B.函数可以返回指向结构体变量的指针
C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员
D.只要类型相同,结构体变量之间可以整体赋值
67.
下列程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。
#include<stdio.h>
voidsort(inta[],intll)
{inti,j,t;
for(i=0;i<n-1;i++)
for(j=j+1+1;j<n;j++)
if(a[i]<a[j])
{t=a[i];a[i]=a[j];a[j]=t;
}
}
main()
{inta[10]一{1,2,3,4,5,6,7,8,9,10},i;
sort(&a[1],7);
for(i=0;i<10;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.1,8,7,6,5,4,3,2,9,10,
D.1,2,10,9,8,7,6,5,4,3,
68.有以下程序
69.
70.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}输出结果是()。A.28B.27C.42D.4l
71.有以下程序:
程序运行后的输出结果是()。
A.7,4.2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
72.以下数组定义中错误的是()。
A.intx[2][3]=|1,2,3,4,5,6|;
B.intx[][3]=|0|
C.intx[][3]={|1,2,3|,|4,5,6|}
D.intx[2][3]=||1,2|,|3,4|,|5,6||
73.有以下程序
#include"stdio.h"
voidfun(int*a,int*b,int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB51T 1620-2013 政务服务中心 服务质量评价及改进
- DB51T 1028-2010 长根菇生产技术规程
- 新建糯玉米粉项目立项申请报告
- 新建手钩圆领手钩袖套头衫项目立项申请报告
- 壁挂机投资规划项目建议书
- 新建氯氧化锆项目立项申请报告
- 新建锌铝压铸件项目立项申请报告
- 气压检测仪生产加工项目可行性研究报告
- 2024-2030年新版中国钢结构蓬项目可行性研究报告
- 2024-2030年新版中国偏焦式太阳灶项目可行性研究报告
- 化工行业基础知识培训
- 快递服务的危险源辨识与风险评价
- 2023年鳌江镇活动策划项目招标文件
- 2024年基本公共卫生服务项目全员培训试题及答案
- 科研成果总结报告
- 《货币金融学》蒋先玲版期末复习知识点总结
- 输卵管积水护理查房
- MBTI量表完整版本
- Morse跌倒危险因素评估量表
- 重症肺炎的基本知识宣教
- 苏教版六年级上数学全册教学反思(全册)
评论
0/150
提交评论