![2021年安徽省滁州市全国计算机等级考试C语言程序设计_第1页](http://file4.renrendoc.com/view/3c788aa5534316106b4942e755931d53/3c788aa5534316106b4942e755931d531.gif)
![2021年安徽省滁州市全国计算机等级考试C语言程序设计_第2页](http://file4.renrendoc.com/view/3c788aa5534316106b4942e755931d53/3c788aa5534316106b4942e755931d532.gif)
![2021年安徽省滁州市全国计算机等级考试C语言程序设计_第3页](http://file4.renrendoc.com/view/3c788aa5534316106b4942e755931d53/3c788aa5534316106b4942e755931d533.gif)
![2021年安徽省滁州市全国计算机等级考试C语言程序设计_第4页](http://file4.renrendoc.com/view/3c788aa5534316106b4942e755931d53/3c788aa5534316106b4942e755931d534.gif)
![2021年安徽省滁州市全国计算机等级考试C语言程序设计_第5页](http://file4.renrendoc.com/view/3c788aa5534316106b4942e755931d53/3c788aa5534316106b4942e755931d535.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年安徽省滁州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.对于C语言的函数,下列叙述中正确的是()。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
2.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
3.若有定义“inta=1234,b=-5678;”,用语句“printf("%+-6d%+-6d",a,b);”输出,以下正确的输出结果是()。
A.+1234-5678(中间有一个空格,最后有一个空格)
B.+1234-5678(最前面有一个空格,中间有一个空格)
C.+-1234+-5678(最前面和最后均无空格)
D.1234-5678(中间有两个空格,最后有一个空格)
4.下面程序的输出结果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}
A.SOB.SPC.SPOPKD.SHOB
5.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA
6.下面哪种排序的平均比较次数最少()
A.插入排序B.选择排序C.堆排序D.快速排序
7.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序运行后输出的结果是A.A.63
B.36
C.编译出错
D.00
8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。
A.8.000000B.9.000000C.1.500000D.10.500000
9.信息隐蔽的概念与下述哪一种概念直接相关?
A.软件结构定义B.模块独立性C.模块类型的划分D.模块耦合度
10.函数fread(buffer,size,count,fp)中buffer代表的是()。
A.—个存储区,存放要读的数据项
B.一个整数,代表要读入的数据项总数
C.一个文件指针,指向要读的文件
D.—个指针,指向读入数据要存放的地址
11.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6。若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()。
A.6B.4C.3D.2
12.以下选项中,能表示逻辑值“假”的是()
A.1B.0.000001C.0D.100.0
13.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A.kk>=′A′&&kk<=′Z′
B.!(kk>=′A′||kk<=′Z′)
C.(kk+32)>=′a′&&(kk+32)<=′Z′
D.isalpha(kk)&&(kk<91)
14.有嵌套的if语句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下选项中与上述if语句等价的语句是()。
A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C.k=(a<b)?a:b;k=(b<c)?b:c;
D.k=(a<b)?a:b;k=(a<c)?a:c;
15.线性链表中结点的结构为(data,next)。已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列()操作。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
16.广义表((a))的表尾是()。
A.aB.(a)C.((a))D.()
17.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
18.数据的不可分割的基本单位是()。
A.元素B.结点C.数据类型D.数据项
19.下面哪种排序算法是稳定的()
A.快速排序B.堆排序C.归并排序D.选择排序
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空题(20题)21.设函数findbig已定义为求3个数中的最大值,以下程序将利用函数指针调用findbig函数。请填空。
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
22.以下定义的结构体类型拟包括两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义比冲完整
structnode
{intinfo;
______link;};
23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
24.以下程序的输出结果是______。
main()
{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;
p=a+2;printf("%d\n',(p+2)[3]);
}
25.若x为血类型,请写出与!x等价的C语言表达式______。
26.若i、j为int类型,则以下程序段内循环体的总执行次数是【】。
for(i=5;i;i--)
for(j=0;j<3;j++)
{
}
27.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
28.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
29.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。
x=(y=4)+(z=2)
30.下面程序的输出是【】。
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);}
31.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【】负责数据的模式定义与数据的物理存取构建。
32.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y;
【】;
}
33.以下程序运行后的输出结果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
34.以下程序的定义语句中,x[1]的初值是【】,程序运行后输出的内容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.与表达式a+=b等价的另一书写形式是______。
36.问题处理方案的正确而完整的描述称为______。
37.以下程序输出的最后一个值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
38.树中度为零的结点称为______。
39.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后,i,j,m,n的值分别是_______。
40.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
primf("%d",sum);
}
三、1.选择题(20题)41.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_
42.设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f值的数据类型为()。
A.intB.floatC.doubleD.不确定
43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序运行后的输出结果是()
A.程序有错不能运行B.输出4个NULLC.输出0123D.输出1111
44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
45.在下列关于逻辑表达式a&&b的叙述中,错误的一条是()
A.若a为真、b为真,则a&&b为真
B.若a为真、b为假,则a&&b为假
C.若a为假、b为真,则a&&b为真
D.若a为假、b为真,则a&&b为假
46.以下程序输出的结果为______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}
A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM
47.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}
A.1123581321
B.1122551010
C.1258981321
D.0112451521
48.若有以下定义语句:doublea[5];inti=0;能正确给a数组元素输入数据的语句是()
A.scanf("%lf%lf%lf%lf%lf,a);
B.for(i=0;i<=5;i++)scanf("%lf,a+i);
C.while(i<5)scanf("%lf",&a[i++]);
D.while(i<5)seanf("%lf,a+i);
49.以下正确的说法是______。
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共用一个存储单元
C.只有当实参和与其对应的形参同名时才共用存储单元
D.型参是虚拟的,函数在没有被调用时,不占用存储单元
50.已定义以下函数
intfun(int*p)
{return*p;)
fun函数返回值是A.不确定的值B.一个整数C.形参P中存放的值D.形参P的地址值
51.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储
52.下面程序中有错误的行是(每行程序前面的数字表示行号)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}
A.3B.6C.7D.5
53.有以下程序
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
54.请读程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的输出结果是()
A.720B.120C.24D.6
55.设有以下语句charx=3,y=6,z;z=x^y<<2;则z的二进制值是
A.10100B.11011C.11100D.11000
56.若x是int型变量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的输出结果是()
A.**3##4**5
B.##3**4##5
C.##3**4##5
D.**3##4**5
57.下列程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}
A.8B.7C.6D.5
58.fscanf函数的正确调用形式是()。
A.fscanf(文件指针,格式字符串,输出表列);
B.fscanf(格式字符串,输出表列,文件指针);
C.fscanf(格式字符串,文件指针,输入表列);
D.fscanf(文件指针,格式字符串,输入表列);
59.在下列叙述中,正确的一条是()
A.表达式1+2<<3和sizeof(3.8)的结果分别为24和8
B.函数fputc(c,stdout)与putchar(c)的结果相同
C.语句int*pt中的*pt是指针变量名
D.主函数和其他函数可以互相调用
60.在一棵二叉树上第5层的结点数最多是______。
A.8B.16C.32D.15
四、选择题(20题)61.
62.以下关于retllm语句的叙述中正确的是()。
A.一个自定义函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条retum语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
63.有以下程序:
程序运行后的输出结果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
64.
65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。
A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1
66.
67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
68.
69.有以下程序:
main()
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i++];i++}
Printf("%d\n",k);
}
执行后输出的结果是()。
A.57B.39C.24D.11
70.
71.有以下程序:
程序运行后的输出结果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
72.若有以下语句
73.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序运行后的输出结果是()。
A)22B)76
C)75D)62
74.
75.若有定义语句:intX=10;,则表达式x-=x+x的值为()。
A.0B.-20C.-10D.10
76.有以下程序:
程序运行后的输出结果是()。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
77.下列关于C语言的叙述错误的是()。
A)大写字母和小写字母的意义相同
B)不同类型的变量可以在一个表达式中
C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
78.
79.如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是()。
A.stdio.hB.string,hC.alloc.hD.math.H
80.有以下程序:
程序运行后的输出结果是()。
A.10B.16C.6D.12
五、程序改错题(1题)81.在主函数中从键盘输入若干个数放人数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数proc()的功能是计算数组元素中值为负数的平均值(不包括0)。例如,数组中元素的值为78、-65、-15、35、-45、0,则程序的运行结果为-41.666667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键盘给n输入100后,则输出为s=5.878031。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
3.Aprintf函数参数包括格式控制字符串和输出参数,其中格式控制字符串中除了格式控制字符外,其他字符原样输出。本题中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之间,“+”号表示输出的数字带正负号号表示输出数据向左对齐,“6”表示输出宽度,如果输出数据的宽度不够6,那么左对齐,右边补空格。所以本题输出+1234-5678(中间有一个空格,最后有一个空格)。本题答案为A选项。
4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串中的第一个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。
5.B栈是先进后出的原则组织数据,所以人栈最早的最后出栈,所以选择B。
6.D
7.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。
在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。
8.Cmain函数定义两个double类型的变量a、b,分别赋初值为2.5、9.0。另外定义两个double类型的指针变量pa、pb,其中pa指向a,pb指向b。然后将b-a、pa、pb传给函数fun,此时x的值为6.5,y指向a,z指向b。“*y=*y-1.0;”是将变量a的值减去1.0赋给a,a的值为1.5;“*z=*z+x;”是将变量b的值加上6.5赋给b,b的值为15.5。fun函数执行完毕后,输出a的值为1.5。故本题答案为C选项。
9.B解析:采用信息隐蔽的目的就是为了确保每个模块的独立性。
10.Dfread函数用来读二进制文件,其中buffer是数据块的指针,它是内存块的首地址,输入的数据存入此内存中;size表示每个数据块的字节数;count用来指定每读一次读入的数据块个数;fp是文件指针,指向要读的文件。选项A、B、C错误。本题答案为D选项。
11.C
12.C\n本题考查逻辑值假,在程序中非0字符表示逻辑真,0表示逻辑假,所以答案选择C。
\n
13.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。
14.B题目中嵌套语句的含义是当“a<b”且“a<c”成立时,将a的值赋给k。如果“a<b”成立而“a<c”不成立,则将c的值赋给k。如果“a<b”不成立而“b<c”成立,则将b的值赋给k。如果“a<b”不成立且“b<c”也不成立,则将c的值赋给k。判断条件表达式,只有B选项可以表示这个含义。故本题答案为B选项。
15.B
16.D
17.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。
18.D
19.C
20.Bstrlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10。
21.findbigfindbig解析:f是指向函数的指针变量,根据题意要求,空格处应填入findbig。
本题目考查:C语言中指向函数的指针变量定义的一般形式为;
数据类型标识符(*指针变量名)();
“数据类型标识符”表示函数返回值的类型。
函数的调用可以通过函数名调用,也可以通过函数指针调用。在给函数指针变量赋值时,只需给出函数名而不必给出参数。(*p)()表示定义一个指向函数的指针变量,专门用来存放函数的入口地址,可以先后指向不同的指针变量。用函数指针调用函数时,只需要将(*p)代替函数名即可,在(*p)之后的括号中,根据需要写上参数。
22.解析:本题中的结构类型名为structnode,所以空白处应填:structnode*,即定义一个指向自身的结构体指针。
23.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。
24.80。80。解析:p=a+2使指针p指向数组a的第三个元素,即a[2],(p+2)[3]使p再移动5个单位,则指向了数组元素a[7],它的值为80。
25.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。
26.1515解析:执行二重循环时,外循环每执行一次,内循环将循环一遍。本题的程序段中外循环执行了5次,内循环执行了3次,所以程序段内循环体的总执行次数是15。
27.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。
28.完整性控制完整性控制
29.6
30.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;
31.数据定义语言数据定义语言解析:在数据库管理系统提供的数据定义语言,数据操纵语言和数据控制语言中,数据定义语言负责数据的模式定义与数据的物理存取构建,数据操纵语言负责数据的操纵,包括查询及增、删、改等操作,数据控制语言负责数据完整性、安全性的定义与检查以及并发控制、恢复等功能。
32.&a&bmaxintxyreturn(z)
33.9292解析:本题的主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。先看while循环,该循环通过i++的值来判断是否结束循环,当i++的值为4的时候结束循环,当i=O时,执行while的循环体,显然if语句条件不满足不执行,接着让j=0,然后执行do-while循环体,不难看出do-while循环的功能是将第i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把第3+1行的所有元素的值加到s上,此时s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。
34.224682,2468解析:在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中,当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,p[1]=&x[3],p[1][0]=4;当i=2时,p[2]=&x[5],p[2][0]=6;当i=3时,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序输出的结果为2、4、6、8。
35.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
36.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。
37.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:
①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。
②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。
③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)
④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。
本题中函数的功能是:与for语句一起求一个整数的阶乘。
38.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。
39.611610。6,11,6,10。解析:本题考查自加的前置和后置的区别。
40.无定值无定值解析:for(i=l;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。
41.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。
42.C解析:根据混合运算规则,如果有一个数据是float型或double型,则其他数据类型先转化为double型,运算的结果最终也是double型。
43.A
44.A解析:本题考查while循环。先判断while循环的控制表达式是否成立,发现a>b>c不成立,所以不执行循环。直接输出a、b、c的值。
45.C
46.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此类推。当执行p=alpha后,p指向指针数组alpha的首地址。for循环中输出了4个字符串。
47.A
48.C
49.D解析:形参在个数和类型上要与实参匹配,形参在未被调用之前,不占用存储单元。
50.B解析:p中存放的是地址值,但是*p间接引用了p指向的整数值。因此返回一个整数。
51.A解析:数据结构作为计算机的一门学科,主要研究和讨论以下三个方面的问题:①数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;②在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;③对各种数据结构进行的运算。
52.D
53.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。
54.B
55.B解析:本题考查两个位运算符。按位异或运算符“”’是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异或时,结果为1。左移运算符“<<”是双目运算符,其功能把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0,并且“<<”运算符的优先级于“^”。
56.D
57.D
58.D解析:fscanf的调用形式是:fscanf(文件指针,格式字符串,输入表列);
59.C
60.B[答案]B
[考点]数据结构与算法
[评析]依次从上到下,可得出:
第1层结点数为1;
第2层结点数为2*1=2;
第3层结点数为2*2=4;
第n层结点数为2的n-1次幂
61.C
62.B在函数中允许有多个IettLrll语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,c选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选项正确。
63.BC88e常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的Case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。所以执行内层switch(y)时只执行了a++,此时a的值为1。然后执行外层case2语句的a++;b++;a为2,b为1。所以结果为B。
64.B
65.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b=00000011,转化为十进制后为3,b=b^a=00000010-00000011=00000001,即1。
66.B
67.A本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。
68.C
69.D循环的条件是i<7并且p[i]是奇数,当i=0时,i<7,p[i]=11,满足条件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,为偶数,退出循环,这时k还是11.
70.B
71.A本题重点考察函数的调用,首先要了解字母对应的ASCIl码。例如A为65,a为97。即字母+1劂可得到下一个字母。-其次是函数形参和实参的问题,运行过程如下:在fun(&b,a)中,}c=.a-,d=65。}c+l=V,d+1=66,prinff(”%c,%c,”,}C,d);输出b,B,因为指针c指向地址的值为b,此时b=}C=.b.;豳数返回执行ptud(。%C,%c、n”,b,8);输出b,A,因此A选项正确。
72.A本题考核的知识点是结构体类型定义和结构体的基本概念。结构体类型的定义格式为:slxuct结构体名{成员说明列表};结构体变量的定义有3种形式。第一种:定义结构体类型的同时定义结构体变量,如struct结构体名{成员说明列表)变量;第二种:先定义一个结构体类型,然后使用该类型来定义结构体变量,如structstudent{成员说明列表l;student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如truct§tudent{成员说明列表l变量。
73.C数组a中有5个元素a,0,0,a,0占7个字节的内容。最后一个\\0为结束符。
74.D
75.C算术运算符+的优先级高于-=.且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,选择C。
76.D本题考查文件操作函数,两次fwrite后,币文件中已经写入l,2,3,O,0,l,2,3,0,0然后将文件币中的内容重新写人数组a中,最后输出a为1。2,3,0,0,1,2,3,0,0,所以选项D正确。
77.AC语言中,大小写代表不同的两个标识符。
78.C
79.B头文件;C语言中要用库函数,则需在前面添加头文件。输入输出函数的头文件为”stdio.h”
80.D第一个for循环作用是对数组8赋初值,从0~9,第二个缸循环是计算数组前4项的a[i]+i的和。0+0,1+1,2+2,3+3,经计算的结果为l2,因此答案为D选项。
81.
82.
【解析】首先定义一个变量来存放表达式的和.根据题目中提供的多项式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当中。
2021年安徽省滁州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.对于C语言的函数,下列叙述中正确的是()。
A.函数的定义不能嵌套,但函数调用可以嵌套
B.函数的定义可以嵌套,但函数调用不能嵌套
C.函数的定义和调用都不能嵌套
D.函数的定义和调用都可以嵌套
2.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
3.若有定义“inta=1234,b=-5678;”,用语句“printf("%+-6d%+-6d",a,b);”输出,以下正确的输出结果是()。
A.+1234-5678(中间有一个空格,最后有一个空格)
B.+1234-5678(最前面有一个空格,中间有一个空格)
C.+-1234+-5678(最前面和最后均无空格)
D.1234-5678(中间有两个空格,最后有一个空格)
4.下面程序的输出结果是______。#inc1ude<stdio.h>main(){char*p[]={"BOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)prinf("%c",*p[i]);print("\n")}
A.SOB.SPC.SPOPKD.SHOB
5.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA
6.下面哪种排序的平均比较次数最少()
A.插入排序B.选择排序C.堆排序D.快速排序
7.有如下程序段
voidfun(int*a,int*b)
{int*k;
k=a;a=b;b=k;
}
main()
{inta=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
程序运行后输出的结果是A.A.63
B.36
C.编译出错
D.00
8.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。
A.8.000000B.9.000000C.1.500000D.10.500000
9.信息隐蔽的概念与下述哪一种概念直接相关?
A.软件结构定义B.模块独立性C.模块类型的划分D.模块耦合度
10.函数fread(buffer,size,count,fp)中buffer代表的是()。
A.—个存储区,存放要读的数据项
B.一个整数,代表要读入的数据项总数
C.一个文件指针,指向要读的文件
D.—个指针,指向读入数据要存放的地址
11.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6。若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()。
A.6B.4C.3D.2
12.以下选项中,能表示逻辑值“假”的是()
A.1B.0.000001C.0D.100.0
13.已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A.kk>=′A′&&kk<=′Z′
B.!(kk>=′A′||kk<=′Z′)
C.(kk+32)>=′a′&&(kk+32)<=′Z′
D.isalpha(kk)&&(kk<91)
14.有嵌套的if语句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下选项中与上述if语句等价的语句是()。
A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
C.k=(a<b)?a:b;k=(b<c)?b:c;
D.k=(a<b)?a:b;k=(a<c)?a:c;
15.线性链表中结点的结构为(data,next)。已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列()操作。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
16.广义表((a))的表尾是()。
A.aB.(a)C.((a))D.()
17.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
18.数据的不可分割的基本单位是()。
A.元素B.结点C.数据类型D.数据项
19.下面哪种排序算法是稳定的()
A.快速排序B.堆排序C.归并排序D.选择排序
20.有以下程序#include<stdio.h>#include<string.h>main(){chara[10]=”abcd”;printf("%d,%d\n",strlen(a),sizeof(a));}程序运行后的输出结果是()。A.7,4B.4,10C.8,8D.10,10
二、2.填空题(20题)21.设函数findbig已定义为求3个数中的最大值,以下程序将利用函数指针调用findbig函数。请填空。
main()
{intfindbig(int,int,int);
int(*f)(),x,y,z,big;
f=【】。
scanf("%d%d%d",&x,&y,&z);
big=(*f)(x,y,z);
printf("big=%d\n",big);
}
22.以下定义的结构体类型拟包括两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义比冲完整
structnode
{intinfo;
______link;};
23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
24.以下程序的输出结果是______。
main()
{inta[10]={10,20,30,40,50,60,70,80,90,100},*p;
p=a+2;printf("%d\n',(p+2)[3]);
}
25.若x为血类型,请写出与!x等价的C语言表达式______。
26.若i、j为int类型,则以下程序段内循环体的总执行次数是【】。
for(i=5;i;i--)
for(j=0;j<3;j++)
{
}
27.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
28.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。
29.若x,y和z均是int型变量,则执行下面表达式后的x值为【】。
x=(y=4)+(z=2)
30.下面程序的输出是【】。
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);}
31.在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【】负责数据的模式定义与数据的物理存取构建。
32.理解下面的程序,填空完善程序。
main()
{inta,b,c;
scanf("%d%d",【】);
c=【】(a,b);
printf("a=%db=%dmax=%d\n",a,b,c);
}
intmax(x,y)
【】;
{intz;
if(x>y)z=x;
elsez=y;
【】;
}
33.以下程序运行后的输出结果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
34.以下程序的定义语句中,x[1]的初值是【】,程序运行后输出的内容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");)
}
35.与表达式a+=b等价的另一书写形式是______。
36.问题处理方案的正确而完整的描述称为______。
37.以下程序输出的最后一个值是【】
intff(intn)
{staticintf=1;
f=f*n;
returnf;
}
main()
{inti;
for(i=1;i<=5;i++)printf("%d\n",ff(i));
}
38.树中度为零的结点称为______。
39.下面程序
main()
{inti,j,m,n;
i=5;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
运行后,i,j,m,n的值分别是_______。
40.下列程序的输出结果是______。
main()
{inti,sum;
for(i=1;i<7;i++)
sum+=i;
primf("%d",sum);
}
三、1.选择题(20题)41.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_
42.设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f值的数据类型为()。
A.intB.floatC.doubleD.不确定
43.有以下程序#include<stdio.h>main(){int*p,j;p=NULLp=fun();for(j=0;j<4;j+){printf("%d",*p);p++;}}int*fun(){inta[4],k;for(k=0;k<4;k++)a[k]=k;return(A);}程序运行后的输出结果是()
A.程序有错不能运行B.输出4个NULLC.输出0123D.输出1111
44.有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>c){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}
A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2
45.在下列关于逻辑表达式a&&b的叙述中,错误的一条是()
A.若a为真、b为真,则a&&b为真
B.若a为真、b为假,则a&&b为假
C.若a为假、b为真,则a&&b为真
D.若a为假、b为真,则a&&b为假
46.以下程序输出的结果为______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i+0;i<4;i++)printf("%s",p[i]);}
A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM
47.以下程序的运行结果为______。main(){inti,f1,f2;f1=f2=1;for(i=0;i<4;i++){printf("%d%d",f1,f2);f1+=f2;f2+=f1;}}
A.1123581321
B.1122551010
C.1258981321
D.0112451521
48.若有以下定义语句:doublea[5];inti=0;能正确给a数组元素输入数据的语句是()
A.scanf("%lf%lf%lf%lf%lf,a);
B.for(i=0;i<=5;i++)scanf("%lf,a+i);
C.while(i<5)scanf("%lf",&a[i++]);
D.while(i<5)seanf("%lf,a+i);
49.以下正确的说法是______。
A.实参和与其对应的形参各占用独立的存储单元
B.实参和与其对应的形参共用一个存储单元
C.只有当实参和与其对应的形参同名时才共用存储单元
D.型参是虚拟的,函数在没有被调用时,不占用存储单元
50.已定义以下函数
intfun(int*p)
{return*p;)
fun函数返回值是A.不确定的值B.一个整数C.形参P中存放的值D.形参P的地址值
51.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()。A.A.数据的存储结构B.计算方法C.数据映象D.逻辑存储
52.下面程序中有错误的行是(每行程序前面的数字表示行号)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}
A.3B.6C.7D.5
53.有以下程序
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
54.请读程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的输出结果是()
A.720B.120C.24D.6
55.设有以下语句charx=3,y=6,z;z=x^y<<2;则z的二进制值是
A.10100B.11011C.11100D.11000
56.若x是int型变量,且有下面的程序片段:for(x=3;x<6;x++)printf(x%2)?("**%d"):(”##%d\n”),x);上面程序片段的输出结果是()
A.**3##4**5
B.##3**4##5
C.##3**4##5
D.**3##4**5
57.下列程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为______。#include<stdio.h>#include<string.h>fuch(charstr[]){intnum=0;while(*(str+num)!='\0')num++;return(num);}main(){charstr[10],*p=str;gets(p);printf("%d\n",fuch(p));}
A.8B.7C.6D.5
58.fscanf函数的正确调用形式是()。
A.fscanf(文件指针,格式字符串,输出表列);
B.fscanf(格式字符串,输出表列,文件指针);
C.fscanf(格式字符串,文件指针,输入表列);
D.fscanf(文件指针,格式字符串,输入表列);
59.在下列叙述中,正确的一条是()
A.表达式1+2<<3和sizeof(3.8)的结果分别为24和8
B.函数fputc(c,stdout)与putchar(c)的结果相同
C.语句int*pt中的*pt是指针变量名
D.主函数和其他函数可以互相调用
60.在一棵二叉树上第5层的结点数最多是______。
A.8B.16C.32D.15
四、选择题(20题)61.
62.以下关于retllm语句的叙述中正确的是()。
A.一个自定义函数中必须有一条return语句
B.一个自定义函数中可以根据不同情况设置多条retum语句
C.定义成void类型的函数中可以有带返回值的return语句
D.没有return语句的自定义函数在执行结束时不能返回到调用处
63.有以下程序:
程序运行后的输出结果是()。
A.a=2,b=2B.a=2,b=1C.a=1,b=1D.a=1,b=0
64.
65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。
A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1
66.
67.有下列程序:main{inty=10;do{y--;}while(--y);printf("%d\n",--y);)当执行程序时,输出的结果是()。A.-1B.1C.4D.0
68.
69.有以下程序:
main()
{intp[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7&&p[i]%2){k=k+p[i++];i++}
Printf("%d\n",k);
}
执行后输出的结果是()。
A.57B.39C.24D.11
70.
71.有以下程序:
程序运行后的输出结果是()。
A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B
72.若有以下语句
73.有以下程序:
main()
{
chara[7]="a0\OaO\0";inti,j;
i=sizeof(a);j=strlen(a);
printf("%d%d\n",i,j);
}
程序运行后的输出结果是()。
A)22B)76
C)75D)62
74.
75.若有定义语句:intX=10;,则表达式x-=x+x的值为()。
A.0B.-20C.-10D.10
76.有以下程序:
程序运行后的输出结果是()。
A.1,2,3,0,0,0,0,0,0,0,
B.1,2,3,1,2,3,0,0,0,0,
C.123,0,0,0,0,123,0,0,0,0,
D.1,2,3,0,0,1,2,3,0,0,
77.下列关于C语言的叙述错误的是()。
A)大写字母和小写字母的意义相同
B)不同类型的变量可以在一个表达式中
C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
78.
79.如果在C程序中要用到库函数中的字符串比较函数strcmp(),那么在程序前面应该添加的头文件是()。
A.stdio.hB.string,hC.alloc.hD.math.H
80.有以下程序:
程序运行后的输出结果是()。
A.10B.16C.6D.12
五、程序改错题(1题)81.在主函数中从键盘输入若干个数放人数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数proc()的功能是计算数组元素中值为负数的平均值(不包括0)。例如,数组中元素的值为78、-65、-15、35、-45、0,则程序的运行结果为-41.666667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键盘给n输入100后,则输出为s=5.878031。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
3.Aprintf函数参数包括格式控制字符串和输出参数,其中格式控制字符串中除了格式控制字符外,其他字符原样输出。本题中的printf(“%+-6d%+-6d”,a,b);”,在%和格式控制字符d之间,“+”号表示输出的数字带正负号号表示输出数据向左对齐,“6”表示输出宽度,如果输出数据的宽度不够6,那么左对齐,右边补空格。所以本题输出+1234-5678(中间有一个空格,最后有一个空格)。本题答案为A选项。
4.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPk\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串中的第一个字符。在for循环中,i的初值为3,那么输出的第—个字符为“S”,接着两次i--,则输出的值为*p[1],即字符“O”,所以本题的输出为SO。
5.B栈是先进后出的原则组织数据,所以人栈最早的最后出栈,所以选择B。
6.D
7.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。
在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。
8.Cmain函数定义两个double类型的变量a、b,分别赋初值为2.5、9.0。另外定义两个double类型的指针变量pa、pb,其中pa指向a,pb指向b。然后将b-a、pa、pb传给函数fun,此时x的值为6.5,y指向a,z指向b。“*y=*y-1.0;”是将变量a的值减去1.0赋给a,a的值为1.5;“*z=*z+x;”是将变量b的值加上6.5赋给b,b的值为15.5。fun函数执行完毕后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度文化旅游工程居间服务合同范本标准
- 2025年度数据中心基础设施建设监理合同
- 曲靖2025年云南曲靖市师宗县事业单位委托遴选26人(含遴选)笔试历年参考题库附带答案详解
- 2025年金属包装罐项目可行性研究报告
- 2025至2031年中国豪华三联控制台行业投资前景及策略咨询研究报告
- 2025年磨内弧砂轮项目可行性研究报告
- 2025年玩具鹿项目可行性研究报告
- 2025年氰戊菊酯项目可行性研究报告
- 惠州2025年广东惠州市中医医院第二批招聘聘用人员22人笔试历年参考题库附带答案详解
- 2025年微波炉温度传感器项目可行性研究报告
- 2025年业务员工作总结及工作计划模版(3篇)
- 必修3《政治与法治》 选择题专练50题 含解析-备战2025年高考政治考试易错题(新高考专用)
- 二零二五版电商企业兼职财务顾问雇用协议3篇
- 课题申报参考:流视角下社区生活圈的适老化评价与空间优化研究-以沈阳市为例
- 深圳2024-2025学年度四年级第一学期期末数学试题
- 2024-2025学年成都市高新区七年级上英语期末考试题(含答案)
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 《中南大学模板》课件
- 广东省深圳市南山区2024-2025学年第一学期期末考试九年级英语试卷(含答案)
- T-CISA 402-2024 涂镀产品 切口腐蚀试验方法
- 后勤安全生产
评论
0/150
提交评论