版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.以下叙述中错误的是()。
A.getehar函数用于从磁盘文件读入字符
B.gets匿数用于从终端读入字符串
C.取ns函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
3.
4.在软件设计中,不属于过程设计工具的是()。
A.PDLB.DFD图C.PAD图D.N—S图
5.在数据库系统中,用户所见数据模式为______。A.概念模式B.外模式C.内横式D.物理模式
6.
7.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的运行结果是()。
A.036B.012C.048D.147
8.在C语言中,退格符是
A.\nB.\tC.\fD.\b
9.下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是()
A.堆排序B.插入排序C.冒泡排序D.快速排序
10.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。
A.IB.JC.KD.H
11.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。
A.n,eB.e,nC.2n,eD.n,2e
12.设有以下语句:charstr1[]="string"mstr2[8],*str3,*str4=="string";则______不是对库函数的正确调用。
A.strcpy(str1,"HELLO1");
B.strcpy(str2,"HELLO2");
C.strcpy(str3,"HELLO3");
D.strcpy(str4,"HELLO4");
13.以下叙述中错误的是()。A.C程序在运行过程中所有计算都以二进制方式进行
B.C程序在运行过程中所有计算都以十进制方式进行
C.所有C程序都需要编译链接无误后才能运行
D.C程序中整型变量只能存放整数,实型变量只能存放浮点数
14.设有如下定义:int(*ptr);则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
15.当变量c的值不为2、4、6时,值为“真”的表达式是()。
A.(c>=2&&c<=6)&&(c%2!=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)||(c!=3)||(c!=5)
16.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
17.下列描述中正确的是______。A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
18.若有定义“inta[2][3],*p[3];”,则以下语句中正确的是()。
A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;
19.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
20.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是______。
A.scanf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);
D.scanf("%d%d%d",a,b,*d);
二、2.填空题(20题)21.下列程序的运行结果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
22.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
23.下列程序的运行结果为【】。
main()
{
intx,y,z;
X=12;
y=012;
z=0l2;
printf("%d,%d,%d\n",x,y,z);
}
24.下面程序的输出是【】。
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);}
25.若有定义:doubleW[10],则W数组元素下标的上限为【】,下限为【】。
26.下列程序的运行结果是【】。
#include<stdio.h>
main
{intk=4,m=3,p;
p=func(k,m);
printf("%d",p);
p=func(k,m);
printf("%d\n",p);}
func(a,b)
inta,b;
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);}
27.函数pi的功能是根据以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
请在下面的函数中填空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<=n;i++)s=s+【】。
return(sqrt(6*s));
}
28.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
29.有以下程序:
main()
{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=______;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角:
1234
678
1112
16
则在程序下划线处应填入的是【】。
30.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。
31.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
32.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。
#include<atdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立链表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
33.以上程序运行后的输出结果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
34.以下程序运行后的输出结果是【】。
main()
{
charc1,c2;
for(c1='0',c2='9';c1<c2;c1++,c2--)
printf("%c%c",c1,c2);
printf("\n");
}
35.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。
#include<stdio,h>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
prinff("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];'
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
36.【】是数据库设计的核心。
37.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。
38.下列程序用来输出结构体变量ex所占存储单元的字节数。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
39.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
40.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
三、1.选择题(20题)41.设变量x为noat型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第3位四舍五入的是()。
A.X=X*100+0.5/100.0;
B.x=(x*100+0.5)/100.0;
C.x=(int)(x*100+0.5)/100.0;
D.x=(x/100+0.5)*100.0;
42.C语言中,文件组成的基本单位为()。
A.记录B.数据行C.数据块D.字符序列
43.下列程序执行后的输出结果是()。#include<stdio.h>voidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%c",st[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;funcl(i);}}main(){inti=0;funcl(i);printf("\n");}
A.helloB.helC.hloD.hlm
44.在执行以下程序时,为了使输出结果为t=4,给a和b输入的值应该满足的条件是_______。main(){ints,t,a,b;scanf("%d%d",&a,&B);s=1;t=1;if(a>0)s=s+1;if(a>B)t=s+t;elseif(a==B)t=5;elset=2*s;printf("t=%d\n",t);}
A.a>bB.a<b<0C.0<a<bD.0>a>b
45.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x)
}
执行程序时,给变量x输入10,程序的输出结果是
A.55B.54C.65D.45
46.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}执行后输出结果是()。
A.12B.1230C.123D.00
47.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}程序运行后的输出结果是
A.3B.6C.9D.2
48.下列正确的实型常量是()。
A.E3.4B.-12345C.2.2eO.8D.4
49.以下定义语句中正确的是
A.inta=b=0;
B.charA=65+1,b='b';
C.noata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
50.设有以下说明语句:structex{intx;floaty;charz;}example;在下面的叙述中,不正确的一条是______。
A.struct是结构体类型的关键词
B.example是结构体类型名
C.x,y,2都是结构体成员名
D.structex是结构体类型
51.若有一些定义和语句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是
A.*q=0;B.w=p;C.*p=a;D.*p=*w;
52.以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}
A.100200B.57C.200100D.75
53.变量a所占的内存字节数是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
54.以下程序的输出结果是
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);}
A.20B.24C.25D.15
55.下列不是合法的C语言语句是()。
A.a=5B.{inti;i++;}C.;D.{;}
56.若有定义:inta[2][3];则才a数组的第i行第j列(假调i,j已正确说明并赋值)元素值的正确引用为
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
57.设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。
A.gets(s);
B.scanf("%s",s);
C.while((s[i++]=getchar())!='\n');s[i]='\0';
D.do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';
58.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作()。
A.软件投机B.软件危机C.软件工程D.软件产生
59.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
60.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
四、选择题(20题)61.
62.
63.
64.
65.
66.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。
A.(!a==1)&&(!b==0)B.(a<b)&&!cC.D.1E.a&&bF.aG.H.(b+b)&&(c-a)
67.当变量c的值不为2、4、6时,值也为“真”的表达式是()。
68.软件测试的目的是()。
A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误
69.
70.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
71.若a是数值类型,则逻辑表达式(a==1)Il(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能确定
72.要求通过while循环不断读入字符,当读入字母N时结束循环,若变量已正确定义,下列正确的程序段是()。
A.while((ch—getchar)!=N)printf("%c",ch);
B.while(oh=getchar!=N)printf("%c",ch);
C.while(ch=getchar==N)printf("%c",ch);
D.while((ch—getchar)==N)printf("%c",ch);
73.
74.有以下程序:
从第一列开始输入以下数据(<CR>代表一个回车符.:
2743<CR>
程序的输出结果是()。
A.66877B.668966C.6677877D.6688766
75.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。
A.switch(a){casel:a=b;break;default:a++;}
B.switch(a==l){case0:a=b;break;casel:a++;}
C.switch(a){default:a++;break;casel:a=b;}
D.switch(a==l){casel:a=b;break;case0:a++;}
76.
77.
78.阅读下列程序段,程序的输出结果为()。
A.3B.5C.6D.8
79.若有以下定义和语句:“doubler=99,*p=&r;*P=r;”,则以下正确的叙述是()。
A.两个*p含义相同,都说明给指针变量p赋值
B.在“doubler=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C.语句“*p=r;”把变量r的值赋给指针变量P
D.语句“*p=r;”取变量r的值放回r中
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:根据形参m(2≤m≤9)的值,在m行m列的二维数组中存放如下所示的数据,由main()函数输出。
请修改程序中的错误,使它能得出正确的结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.
参考答案
1.B
2.A本题考查的是文件操作。题中“fopen(fn,”w”)”的作用是打开fn所指向的文件,使用文件方式为“写入”;
“每uts(str,fp)”的作用是将字符str的值输出到fb所指向的文件中去。在程序中,两次使用“写入”的方式打开同一个文件,在第二次打开时,文件指针指向文件头,所以此次写入的数据覆盖了文件原有的数据,故本题中tl.dat的内容为end。故本题答案为A)。
3.C
4.B常见的过程设计工具有图形土具(程序流程图、N—S图、PAD图、HIP0图)、表格工具(判定表)和语言工具(PDL)。DFD是数据流图,是描述数据处理过程的工具。
5.B解析:数据库管理系统的三级模式结构由外模式、模式和内模式组成。夕模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的—部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取力式的描述。
6.B
7.Cmain函数定义3行3列的整型二维数组a;定义数组指针P,P指向包含3个元素的数组。程序首先将a赋给p。for循环中,i=0时,P指向a的第1个元素{0,1,2},输出p[0]即0;i=1时,p指向a的第2个元素{3,4,5},输出P[1]即4;i=2时,p指向a的第3个元素{6,7,8},输出P[2]即8。所以程序输出048。故本题答案为C选项。
8.D解析:在C++语言中退格符表示为\\b退格。注意:其他转义字符的意义:\\n表示回车换行,\\t表示横向跳到下一制表位置,\\v表示竖向跳格,\\r表示回车,\\f表示走纸换页,\\\\表示反斜线符,\\a表示鸣铃,\\ddd1~3位表示八进制数所代表的字符,\\xhh1~2位表示十六进制数所代表的字符。
9.A
10.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六进制数,转为十进制数x=9。“printf(“%C\\n”,‘A’+9);”,输出格式要求是“%c”,因此将字符‘A’按字母顺序向后偏移9个位置,可得结果为“J”。故本题答案为B选项。
11.A
12.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。
13.B所有的C程序都必须经过编译链接无误之后才能运行。在运行过程中,由计算机完成程序中的所有运算。由于计算机只能识别二进制,所以所有的运算都以二进制方式进行,而不是十进制。
14.C本题中int(*ptr)的含义是指向函数的指针变量,其为指向函数的指针变量,该函数返回一个int型数据,故选择C选项。
15.D逻辑或运算中只要有一个运算量为真,结果就为真。当“c>=2&&c<=6”条件不成立时,c的值肯定不是2、3、4、5、6,“c!=3”与“c!=5”均成立,所以D选项的结果一定为真。故本题答案为D选项。
16.C解析:赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项A中运算符%的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个常量,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个常量,故选项D不正确;所以,4个选项中选项C符合题意。
17.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
18.CA选项错误,因为p是指向一个指针数组,而数组名相当于常量,不能重新赋值。B选项错误,因为p[0]是一个int指针,也就是int*,而a是一个指向指针的指针int**。C选项正确,因为p[0]是int*,a[1][2]是int,&a[1][2]是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,P[1]是int*,&a是int***,类型不吻合。故本题答案为C选项。
19.D解析:在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。
20.A解析:选项B中d已经为地址,不应在加上求地址符号“&”,故选项B不正确;选项C中,a和b都为变量不是地址,应该在a和b之前加上求地址符号“&”,故选项C不正确:选项D中指针d所指向的存储空间的位置为变量c的值,不为地址,故选项D不正确,所以,4个选项中A为所选。
21.2424解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1-24。
22.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
23.12101812,10,18解析:本题定义了3个整型变量x、y、z,并分别用十进制数、八进制数、十六进制数为它们赋值。然后以十进制整型输出这3个变量。八进制数012的十进制表示为10,十六进制数0x12的十进制表示为18。此外输出函数格式控制中的“,”原样输出。
24.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
25.90
26.10211021解析:此题主要考查了变量和函数的存储类别。函数的存储范围是从定义它的位置到文件结束为止,如果想在函数定义之前使用函数,需要先对函数进行声明。静态局部变量的生存期为整个程序的运行期间,作用域却为定义它的函数或局部范围内。
27.0/i/i或1.0/(i*i)0/i/i或1.0/(i*i)解析:由题面中提供的计算pi的公式可知;在第i项其值为1/(i*i),考虑到运算结果为浮点数,故必须要将1转化为浮点数或采用1.0/(i*i)的形式。故本题应填1.0/(i*i)或其等效形式。
28.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。
29.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。
30.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
31.1010解析:该for语句以i为0,j为10作为初始值,循环条件是i<=j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循环后i为2、j为8,……,五次循环后i为5、j为5,第六次循环,将i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。
32.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定义了一个结构体类型名Node,其中定义了一个指向结点类型的指针next。接下来用Node定义了头结点指针变量h和指向第一个结点的指针变量p,在满足p未指向最后一个结点的空指针时(即为NULL),输出p所指向结点的字符串,所以第一处应填p!=NULL,然后将p指向下一个非空结点,所以第二处应填P->next或与其等效的形式,反复执行直到所有的结点都输出。
33.5252解析:do...while语句的形式为:
do
{
语句;
}while(条件表达式)
当条件表达式为非零时,继续执行循环体,直到条件表达式为零时退出循环。
34.09182736450918273645解析:题目中为for循环定义了两个字符型循环变量c1和c2,循环开始时分别初始化为字符‘0’和‘9’,然后每次循环结束给c1增1、c2减l,循环条件为c1<c2,即让c1的值依次为‘0’、‘1’、‘2’…,c2的值依次为‘9’、‘8’、‘7’…,直到两个数相遇时结束循环。又因为该循环的循环体每次按字符形式输出c1和c2的值。所以最终的输出结果为:0918273645。
35.br[i]或*(br+i)br[i]或*(br+i)解析:程序中的数组a是一个3行4列的二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。
36.数据模型数据模型
37.开发开发解析:软件生命周期(SDLC,软件生存周期)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,其中的编码和测试属于开发阶段。
38.ex或structstex或structst
39.sizeof(structnode)或4sizeof(structnode)或4解析:malloc(sizeof(struetnode))的作用是开辟一个长度为sizeof(struetnode)的内存区。(structnode*)的作用是使malloc返回的指针转换为指向structnode类型数据的指针。
40.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。
41.C解析:选项A中0.5/100.0将保留小数点后六位,不满足题目要求,故选项A不正确;选项B和选项D也将保留小数点后六位,不满足题目要求,故选项B不正确;所以,4个选项中选项C符合题意。
42.D解析:C语言处理文件的方法是将文件以数据流的形式处理,不是将文件作为一个结构集合来处理,所以,C语言中文件的组织方式是无结构的字符序列方式。
43.C解析:本题首先调用函数funcl(0),输出st[0]=h,i值变为2,再调用函数func2(2),输出st[2]=1,此时i<3,执行i+=2,i值变为4,然后再调用函数funcl(4),输出st[4]=o,此时i值大于3,函数调用结束。因此,输出结果为hlo。
44.C解析:要使输出结果为t=4,必须要执行elset=2*s;和if(a>b)t=s+t;语句。如果执行if(a>b)t=s+t;语句,则条件为a>b,要求s=3,在该语句前面的语句中没有条件可以满足s=3;如果孰行elset=2*s;语句,则条件为a<b,要求s=2,需要执行if(a>0)s=s+1;语句,所以应满足条件0<a<b。
45.A本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。
在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。
在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。
变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。
46.B解析:函数fopen(constchar*filename,constchar*mode)的功能,是以mode指定的模式打开filename指定的磁盘文件;fclose(FILE*fp)的功能是关闭文件指针fp指向的文件;函数fscanf(FILE*fp,constchar*format[,address,--])的功能是根据format中的格式从fP指向的文件中读取数据,并存入到相应的address指向的变量中。函数fprintf(FILE*fp,constchar*format[,argument,--])的功能是把argument列表中的表达式值写到fp所指向的文件中:本题中首先定义了一个文件指针fp,然后通过函数fopen以“w”的方式打开文件“d1.dat”,直接通过一个for循环,每循环一次调用函数fpfintf将i的值写进fP所指的文件中,该循环共循环3次,循环完后fP所指文件的内容为123,然后通过fclose函数关闭fp所指文件。接着通过fscanf函数将fP所指文件的内容读出并赋值给变量k和变量n,由于fp所指文件中只有123没有分隔符,故只给k赋值为123,变量n的值依然为以前的值,故最后输出k和n的值为123。
47.B解析:主函数中首先定义了一个3行3列的二维数组,定义了一个整型变量指向它,直接通过for循环给数组的每一个元素赋值,使得a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][l]=5、a[1][2]=6、a[2]10]=7、a[2][1]=8、a[2][2]=9。所以,4个选项中选项B符合题意。
48.B解析:实型常量有两种书写形式:①小数形式,它由符号、整数部分、小数点及小数部分组成;②指数形式,由十进制小数形式加上指数部分组成,其形式为十进制小数e指数或十进制小数E指数。注:e或E后面的指数必须是整数,并且在e或E的前面必须有数字。本题中,选项A)中E的前面没有数字,因此错误。选项C)中0.8不是整数,因此错误。选项D)中4是整型常量而不是实型常量。
49.B解析:本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。
50.B解析:example是结构体类型变量名,因此选项B的说法是不正确的。
51.A解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以,A选项为所选。
52.B解析:全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。
53.C解析:结构体变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量a中成员c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。
54.D解析:函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。
55.A解析:选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,也是一个空语句。
56.A解析:本题考查了二维数组元素的引用方法。选项A中a引指向了数组a的第i+1行,*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a+i)+j)取到的是数组a的a[i][j]的元素。
57.B解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()数接收字符串时的结束标志为回车或者空格。因此选巧
58.B解析:软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。
59.B解析:选项B中for循环了5次,而每次循环的时候,都将p的值重新赋值为1后,再乘以当前数字i,所以最后的结果为5,显然不是5!的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4个选项中选项B符合题意。
60.DD)【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。
61.A
62.A
63.C
64.D
65.B
66.A
\n本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项A中,因为!a=0,所以关系表达式!a=1为0,又因为逻辑与运算符“&&”两边的表达式只要一个等于零,则整个表达式为零,所以选项A正确。在选项8中,关系表达式a<b为真,表达式(a<b)&&!C为假,而表达式(a<b)&&!||1为真,所以整个表达式的值为真。选项C中,a&&b的结果为真。在选项D中,a||(b+b)&&(C-a)的结果为真。
67.Ac=2&&c<=6)Il(ct_3)I|(c1=5)可以满足题目条件,所以选择A)。
68.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。
69.B
70.D
71.A逻辑或”I|”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零,所以结果为真,即1。
72.Awhile循环的执行过程如下:①计算while后面圆括号中表达式的值。当值为非0时,执行步骤②;当值为0时,执行步骤④。②执行循环体一次。③转去执行步骤①。④退出循环。在选项A中,表达式(ch=get-char)!=N表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。所以选项A为正确答案。
73.D
74.A本题主要考查了字符输入输出函数get—char和putchar的使用。getchar函数用来从标准输入设备上读人一个字符,putchar(C)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。
75.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。
76.D
77.B
78.A带参数的宏定义命令行形式如下:#de-fine宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换.替换后的表达式为(a)*(b)/(c)。
79.B在定义*p=&r时,是表示r的地址赋给了p所指的存储单元,因此选项B正确。
80.C
81.(1)错误:proc(int**a,intm)
正确:voidproc(int(*a)[N],intm)
(2)错误:aEj][k]=k*J;
正确:a[j][k]=(k+1)*(j+1);
【解析】从主函数的调用可知,函数proc()没有返回值,因此应该定义为void类型。形参a应该是一个整型的指针数组。因此,“proe(int**a,intm)”应改为“voidproc(int(*a)[N],intm)”。数组下标从0开始,由事例数组可知,其元素从l开始递增,因此“a[j][k]=k*J;”应改为“a[j][k]=(k+1)*(j+1);”。
82.
程序设计题解析:
【考点分析】
本题考查:指针型变最定义;wh丑e循环语句;语句条件
表达式;字符串结束标识‘\0’。
【解题思路】
函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删除。
【解答本题】
(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符‘、O’。
【解题宝典】
要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。2021-2022年辽宁省鞍山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.以下叙述中错误的是()。
A.getehar函数用于从磁盘文件读入字符
B.gets匿数用于从终端读入字符串
C.取ns函数用于把字符串输出到文件
D.fwrite函数用于以二进制形式输出数据到文件
3.
4.在软件设计中,不属于过程设计工具的是()。
A.PDLB.DFD图C.PAD图D.N—S图
5.在数据库系统中,用户所见数据模式为______。A.概念模式B.外模式C.内横式D.物理模式
6.
7.有以下程序:#include<stdio.h>main(){inta[3][3]={0,1,2,3,4,5,6,7,8},(*p)[3],i;p=a;for(i=0;i<3;i++){printf(“%d”,(*p)[i]);p++;}}程序的运行结果是()。
A.036B.012C.048D.147
8.在C语言中,退格符是
A.\nB.\tC.\fD.\b
9.下面排序算法中,初始数据集的排列顺序对算法的性能无影响的是()
A.堆排序B.插入排序C.冒泡排序D.快速排序
10.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序运行后的输出结果是()。
A.IB.JC.KD.H
11.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。
A.n,eB.e,nC.2n,eD.n,2e
12.设有以下语句:charstr1[]="string"mstr2[8],*str3,*str4=="string";则______不是对库函数的正确调用。
A.strcpy(str1,"HELLO1");
B.strcpy(str2,"HELLO2");
C.strcpy(str3,"HELLO3");
D.strcpy(str4,"HELLO4");
13.以下叙述中错误的是()。A.C程序在运行过程中所有计算都以二进制方式进行
B.C程序在运行过程中所有计算都以十进制方式进行
C.所有C程序都需要编译链接无误后才能运行
D.C程序中整型变量只能存放整数,实型变量只能存放浮点数
14.设有如下定义:int(*ptr);则以下叙述中正确的是()。
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指int型数据的指针
15.当变量c的值不为2、4、6时,值为“真”的表达式是()。
A.(c>=2&&c<=6)&&(c%2!=1)
B.(c==2)||(c==4)||(c==6)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)||(c!=3)||(c!=5)
16.若以下选项中的变量已正确定义,则正确的赋值语句是()。
A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3
17.下列描述中正确的是______。A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
18.若有定义“inta[2][3],*p[3];”,则以下语句中正确的是()。
A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;
19.以下不正确的叙述是A.A.在C程序中,逗号运算符的优先级最低
B.在C程序中,APH和aph是两个不同的变量
C.若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变
D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
20.若有说明语句:inta,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是______。
A.scanf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);
D.scanf("%d%d%d",a,b,*d);
二、2.填空题(20题)21.下列程序的运行结果是______。
#include<stdio.h>
longfunc(intx)
{longp;
if(x==0‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
22.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
23.下列程序的运行结果为【】。
main()
{
intx,y,z;
X=12;
y=012;
z=0l2;
printf("%d,%d,%d\n",x,y,z);
}
24.下面程序的输出是【】。
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);}
25.若有定义:doubleW[10],则W数组元素下标的上限为【】,下限为【】。
26.下列程序的运行结果是【】。
#include<stdio.h>
main
{intk=4,m=3,p;
p=func(k,m);
printf("%d",p);
p=func(k,m);
printf("%d\n",p);}
func(a,b)
inta,b;
{staticintm=0,i=2;
i+=m+1;
m=i+a+b;
return(m);}
27.函数pi的功能是根据以下公式近似求得的:
pi*pi/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)
请在下面的函数中填空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=1;i<=n;i++)s=s+【】。
return(sqrt(6*s));
}
28.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
29.有以下程序:
main()
{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;
for(i=0;i<4;i++)
{for(j=0;j<=i;j++)printf("%4c",'');
for(j=______;j<4;j++)printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角:
1234
678
1112
16
则在程序下划线处应填入的是【】。
30.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。
31.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【】。
for(i=0,j=10;i<=j;i++,j--)k=i+j;
32.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。
#include<atdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立链表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
33.以上程序运行后的输出结果是【】。
main()
{inti=10,j=0;
do
{j=j+i;i-;}
while(i>2);
printf("%d\n",j);
}
34.以下程序运行后的输出结果是【】。
main()
{
charc1,c2;
for(c1='0',c2='9';c1<c2;c1++,c2--)
printf("%c%c",c1,c2);
printf("\n");
}
35.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。
#include<stdio,h>
voidfun(int,int,int(*)[4],int*);
main()
{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;
fun(3,4,a,b);
for(i=0;i<3;i++)printf("%4d",b[i]);
prinff("\n");
}
voidfun(intm,intn,intar[][4],int*br)
{inti,j,x;
for(i=0;i<m;i++)
{x=ar[i][0];'
for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];
【】=x;
}
}
36.【】是数据库设计的核心。
37.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【】阶段。
38.下列程序用来输出结构体变量ex所占存储单元的字节数。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));
}
39.已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc函数,使指针p指向一个具有structnode类型的动态存储空间。请填空。
p=(structnode*)malloc(【】);
40.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。
三、1.选择题(20题)41.设变量x为noat型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第3位四舍五入的是()。
A.X=X*100+0.5/100.0;
B.x=(x*100+0.5)/100.0;
C.x=(int)(x*100+0.5)/100.0;
D.x=(x/100+0.5)*100.0;
42.C语言中,文件组成的基本单位为()。
A.记录B.数据行C.数据块D.字符序列
43.下列程序执行后的输出结果是()。#include<stdio.h>voidfunc1(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%c",st[i]);if(i<3){i+=2;func2(i);}}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;funcl(i);}}main(){inti=0;funcl(i);printf("\n");}
A.helloB.helC.hloD.hlm
44.在执行以下程序时,为了使输出结果为t=4,给a和b输入的值应该满足的条件是_______。main(){ints,t,a,b;scanf("%d%d",&a,&B);s=1;t=1;if(a>0)s=s+1;if(a>B)t=s+t;elseif(a==B)t=5;elset=2*s;printf("t=%d\n",t);}
A.a>bB.a<b<0C.0<a<bD.0>a>b
45.有以下程序
intfun(intn)
{if(n==1)return1;
else
return(n+fun(n-1));
}
main()
{intx;
scanf("%d",&x);x=fun(x);printf("%d\n",x)
}
执行程序时,给变量x输入10,程序的输出结果是
A.55B.54C.65D.45
46.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}执行后输出结果是()。
A.12B.1230C.123D.00
47.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}程序运行后的输出结果是
A.3B.6C.9D.2
48.下列正确的实型常量是()。
A.E3.4B.-12345C.2.2eO.8D.4
49.以下定义语句中正确的是
A.inta=b=0;
B.charA=65+1,b='b';
C.noata=1,*b=&a,*c=&b;
D.doublea=0.0;b=1.1;
50.设有以下说明语句:structex{intx;floaty;charz;}example;在下面的叙述中,不正确的一条是______。
A.struct是结构体类型的关键词
B.example是结构体类型名
C.x,y,2都是结构体成员名
D.structex是结构体类型
51.若有一些定义和语句#include<stdio.h>inta=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以下选项中错误的语句是
A.*q=0;B.w=p;C.*p=a;D.*p=*w;
52.以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5;b=7fun();printf("%d%d\n",a,b);}
A.100200B.57C.200100D.75
53.变量a所占的内存字节数是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;
A.4B.5C.6D.8
54.以下程序的输出结果是
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;}
main()
{inti,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);}
A.20B.24C.25D.15
55.下列不是合法的C语言语句是()。
A.a=5B.{inti;i++;}C.;D.{;}
56.若有定义:inta[2][3];则才a数组的第i行第j列(假调i,j已正确说明并赋值)元素值的正确引用为
A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j
57.设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。
A.gets(s);
B.scanf("%s",s);
C.while((s[i++]=getchar())!='\n');s[i]='\0';
D.do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';
58.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作()。
A.软件投机B.软件危机C.软件工程D.软件产生
59.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
60.下列叙述中正确的是()。A.一个逻辑数据结构只能有一种存储结构
B.逻辑结构属于线性结构,存储结构属于非线性结构
C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
四、选择题(20题)61.
62.
63.
64.
65.
66.有定义:“inta=2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安徽蚌埠市临港新城建设发展有限公司及所属公司人才招聘6人笔试历年参考题库附带答案详解
- 2025国家能源集团海南电力有限公司第二批集团系统内招聘15人笔试历年参考题库附带答案详解
- 2025四川长虹技佳电镀装饰公司招聘安全管理等岗位2人笔试历年参考题库附带答案详解
- 2025四川新传媒集团有限公司公开招聘6人笔试历年参考题库附带答案详解
- 2025内蒙古交通集团有限公司社会化招聘100人笔试历年参考题库附带答案详解
- 16.1《阿房宫赋》教学设计 统编版高一语文必修下册
- 强化选煤厂安全生产管理制度建设培训课件
- 煤矿暂缓施工安全保障措施培训
- 煤气设施安全检查内容培训课件
- 2025-2026学年教学设计跑题还能过吗
- 猪场种猪购买合同范本
- 2026年全国硕士研究生考试(英语一)真题及答案
- 中国农业大学2026年强基计划招生笔试模拟试题及答案解析二
- 公差配合与测量技术 第2版
- 小升初分班考2026年重庆市西南大学附语文模拟试卷 含答案
- 2026年量测设备行业分析报告及未来发展趋势报告
- 校长安全管理培训课件
- 2026年重庆高考数学考试卷附答案
- 双闭环比值控制系统设计与仿真
- 2026年人教版九年级道德与法治下册第一单元综合检测试卷及答案
- 机械加工质量控制标准汇编
评论
0/150
提交评论