版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年湖南省娄底市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
2.以下程序的输出结果是()。main{intx=0.5;charz=‘a’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3
3.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是
A.A.331
B.41
C.2
D.1
4.一个递归算法必须包括()。
A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分
5.软件生命周期中,花费最多的阶段是()。
A.详细设计B.软件编码C.软件测试D.软件维护
6.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx
7.以下叙述中错误的是()。
A.c语言是一种结构化程序设计语言
B.使用三种基本结构构成的程序只能解决简单问题
C.结构化程序设计提倡模块化的设计方法
D.结构化程序由顺序、分支、循环三种基本结构组成
8.有以下函数char*fun(char*p){returnp;}该函数的返回值是______。
A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
9.若有定义“inta,b,c;”以下程序段的输出结果是()。a=11;b=3;c=0;printf(“%d\n”,c=(a/b,a%b));
A.2B.0C.3D.1
10.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lilimum=1001<回车>后,name的值为()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
11.以下属于C语言实型常量的是()。
A.+6eB.e6+6C.6e+6D..e+6
12.有以下程序程序执行后的输出结果是()
A.60B.50C.45D.55
13.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5
14.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
15.A.A.75310246B.01234567C.76310462D.13570246
16.考虑下图中的程序段,①号语句的输出结果是()。A.A.'a'B.'t'C.'c'D.'k'
17.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序运行后的输出结果是()。A.44B.33C.34D.43
18.当接受用户输入的含有空格的字符串时,应使用()函数。
A.gets()B.getchar()C.scanf()D.printf()
19.
20.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)
二、2.填空题(20题)21.在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是【】。
22.阅读下面程序段,则执行后输出的结果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
23.在关系模型中,把数据看成是二维表,每一个二维表称为一个【】。
24.执行以下程序后,输出“#”的个数是【】。
#include<stdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
25.结构化分析方法是面向______进行分析的方法。
26.下列程序的输出结果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
27.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
28.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
29.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
main()
{floatx[1000],sum=0,ave,a;
intn=0,i;
printf("Entermark:\n");scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+【】;x[n]=【】;
n++;scanf("%f",&a);
}
ave=【】;
printf("Output:\n");
printf('ave=%f\n",ave);
for(i=0;i<n;i++)
if(【】)printf("%t\n",x[i]);
}
30.执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。
31.以下程序的运行结果是:【】。
#include<stdio.h>
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
32.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
33.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
34.下列软件系统结构图的宽度为[]。
35.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
36.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
37.以下程序段的输出结果是【】。
inti=9;
printf("%o\n",i);
38.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。
39.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
40.#define命令出现在程序中函数的外面,宏名的有效范围为______。
三、1.选择题(20题)41.有以下程序:#include<studio.h>#defmeF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
42.以下程序:#include<stdio.h>main(){charstr[10];scanf("%s",&str);printf("%s\n",str);}运行上面的程序,输入字符串howareyou,则程序的执行结果是()。
A.howB.howareyouC.hD.howareyou
43.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
44.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n")}从第一列开始输入以下数据<CR>代表一个回车符。2743<CR>程序的输出结果是
A.66877B.668966C.6677877D.6688766
45.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i-){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。
A.234B.432C.23D.4534554334344523
46.以下程序的输出结果是
main()
{inta,i;a=0;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=2;
case1:
case2:a+=3;
default:a+=5;}
}printf("%d\n",a);}
A.31B.13C.10D.20
47.一个汉字的机内码在计算机内部需用2个字节存储,每个字节的最高位是()
A.0和0B.0和1C.1和0D.1和1
48.下列叙述中错误的是()。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类型是自动存储类别
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
49.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
50.2个指针变量不可以______。
A.相加B.比较C.相减D.指向同一地址
51.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。
A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);
52.下列对于软件测试的描述中正确的是______。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能地多发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
53.若有定义intb[8],*p=b;则p+6表示()。
A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6
54.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是()。
A.1212B.117C.1111D.127
55.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
56.以下正确的程序段是
A.cgarstr[20];scanf("%s",&str);
B.char*p;scanf("%s",p);
C.charstr[20];scanf("%s",&str[2])
D.charstr[20],*p=str;scanf("%s",p[2]);
57.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计
58.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
59.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务
60.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
四、选择题(20题)61.
62.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
63.下列说法正确的是()。
A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在c语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数
64.以下选项中不合法的标识符是()。
A.&aB.FORC.printD._00
65.从循环体内某一层跳出,继续执行循环外的语句是:___________。
A.break语句B.return语句C.continue语句D.空语句。
66.
67.设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1
68.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
69.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用的语句是
A.fun(inty,doublem);B.k=fun(10,12.5);
C.fun(x,n);D.voidfun(n,x);
70.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是()。
A.X‖YB.X|YC.X&YD.X^Y
71.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}
A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456
72.
73.在C语言中,合法的长整型常数是()。
A.0.123456B.4962717C.9LD.5.321e2
74.
75.
76.以下不合法的字符常量是()。
A."、、"B.’\”’C.’\018’D.\xcc"
77.
78.
79.有以下程序:
程序执行后的输出结果是()。
A.PrphsbnB.ProhsbnC.ProgsbnD.Program
80.请选出以下程序的输出结果()。
A.1234
B.4321
C.0000
D.4444
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!
六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){ }voidmain{intarr[N],n,k;system("CLS");proc(70,arr,&n);for(k=0;k<n;k++)if((k+1)%20==0)//每行输出20个数{printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}
参考答案
1.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。
2.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a’<‘z’)=1&&1=1,故选择B选项。
3.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。
4.B
5.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。
6.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。
7.BC语言是一种结构化程序设计语言。结构化程序设计是以模块化设计为中心的,有三种基本结构:顺序、选择和循环结构。各模块相互独立,因而可将原来较为复杂的问题化简为一系列简单模块并充分利用现有模块搭建新系统,提高程序的重用性和可维护性。
8.B解析:p本身就是一个字符型指针变量,返回p也就是返回变量p中存放的地址值。
9.AC语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有子表达式运算都结束后,才对其右边的子表达式进行运算,并以最右边表达式的值作为整个逗号表达式的值。因此c的值为“a%b”,即“11%3=2”。故本题答案为A选项。
10.A考查简单的C程序。由题可知,程序中输入name的值为Lili,所以输出的必定是Lili,答案选择A。
11.CC语言的实型常量可以用小数形式、指数形式来表示。题中的选项都是指数形式,指数形式的一般形式为:尾数E(或e)整型指数。C语言规定,字母E或e之前必须要有数字,且E或e后面的指数必须为整数,E或e的前后以及数字之间不得插入空格。故本题答案为C选项。
12.A函数fun的功能是求数组的n个元素之和。fun(a,5)=15。由于s岫是静态局部变量,所以保持l5不变,fun(b,4)=45,所以s=fun(a,5)+fun(b,4)=60。
13.Da、b、C都是按值传递给函数f,函数f不能改变它们的值。所以,a、b、t的值仍然是4、3、5。
14.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。
15.A本题的考点是C语言的数组及其排序。本题的程序中分为2个循环体,第一个循环体将数组中1,3,5,7,2,4,6,0的前4个元素从大到小排序,这个循环体结束后数组中的值为7,5,3,1,2,4,6,0。第二个循环体将数组中7,5,3,1,2,4,6,0从第5个开始的4个元素从小到大排序,这个循环体结束后数组中的值为7,5,3,1,0,2,4,6。所以正确答案是选项A。
16.D
17.C语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]="abe"表示定义了一个一维字符数组,并用一个字符串常量"abc"进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。
18.A
19.A
20.A本题考查逻辑与运算“&&”与逻辑或运算“||”。在选项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)的结果为真。
21.rewindrewind解析:库函数rewind()的作用是使文件位置指针重新返回文件的开头,所以本题应该填rewind。
22.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。
23.关系关系解析:在数据库中,一个表就是一个关系。一个关系的逻辑结构就是一张二维表。
24.66解析:本题考察的是一个嵌套的循环,当满足j<=i时,输出一个“#”号,符合条件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共输出6个“#”。
25.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
26.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。
27.19
28.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。
29.=aasum/nx[i]<ave=a\r\na\r\nsum/n\r\nx[i]<ave解析:sum是用来存放学生成绩总和的,a是输入的成绩,ave存放平均成绩,n既是循环变量,又表示学生人数,x[n]保存第n个学生的成绩。sum用来累加每个同学的成绩,因此有sum+=a;把新输入的学生成绩保存在数组中,因此有x[n]=a;ave是所有同学的平均成绩,因此有ave=sum/n;逐个把学生成绩和平均成绩比较,因此有if(x[i]<ave)。
30.6
31.efghefgh解析:函数*ss的作用是使字符串指针往后移strlen(s)/2个位置。形参指针a指向字符串'abcdefeh',调用函数*ss后,指针指向e,所以输出为efgh。
32.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
33.p=p+7或p+=7p=p+7或p+=7解析:本题考查通过指针引用数组元素。值为36的数组元素在a数组中是第8个元素,即a[7]。在程序中,p=a;语句将数组a的首地址赋给了指针变量p,则可以用*(p+i)来表示数组元素,*(p+i)与a[i]等价,a[7]可表示为*(p+7)。要使指针p指向a[7],可以用p=p+7移动指针,故填写p=p+7或p+=7。
34.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。
35.x=2
36.fname"#"exit(0)chfp
37.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。
38.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志\'\\0\'。
\'\\t\'f是转义字符,代表横向跳若干格:'\\'是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符;’仅AB,是以两位十六进制数AB表示的ASCII码字符,只代表一个字符;\'\\n\'是转义字符,代表回车换行。
5个字符常量各代表一个字符,再加上字母C,所以返回的长度是6。
39.调试调试
40.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。
41.A解析:在程序中先用表达式将宏替换掉,则输出语句中的表达式为(a++)*(b++),而a++的值为3,b++的值为4。因此最后的值为3*4=12。所以,4个选项中选项A符合题意。
42.A解析:当从键盘输入bowareyou时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\\0”。
43.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。
软件维护通常有以下四类;
①为纠正使用中出现的错误而进行的改正性维护;
②为适应环境变化而进行的适应性维护;
③为改进原有软件而进行的完善性维护;
④为将来的可维护和可靠而进行的预防性维护。
软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。
44.A解析:本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量c中的字符输出到标准输出设备上。并且字符可以看作整数参与运算。
45.D解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。
46.A解析:本题考查用于多分支选择的switch语句,其一般形式为:
switch(表达式)
{
case常量表达式1:语句1;
case常量表达式2:语句2;
…
case常量表达式n:语句n;
default:语句n+1;
}
其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。
47.D
48.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。
49.A解析:在C语言中,动态存储区域中存放的变量在使用时才分配内存空间,函数调用时返回的地址和自动类局部变量等存放在动态存储区域中。auto变量和register变量都属于自动类局部变量,因此选项A正确。static说明的变量为静态变量,静态变量在内存的静态存储中占据着永久的存储单元,直至程序运行结束。extern说明的变量为外部变量,属于全局变量,全局变量在整个程序运行期间都占用内存空间。
50.A
51.B解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。
52.C解析:软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误,软件测试是一个发现错误而执行程序的过程。软件调试的目的是发现错误的位置,并改正错误。
53.B解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中将p+6指的是将指针向后移动了6个存储单元,指向b[6],存放的是b[6]的地址。
54.B解析:题目中第1条要替换的语句i1=f(2);展开后是i1=(2*M);再展开为i1=(2*N+1);最后展开为i1=(2*5/1),结果使i1=11。而第2条语句i2=f(1+1);展开后为i2=(1+1*M);再展开为i2=(1+1*N+1);最后展开为i2=(1+1*5+1),结果使i2=7。故应该选择B。
55.C本题主要考查成块读函数fread。在C语言中,提供了一种成块的读写方式来操作文件,使其数组或结构体等类型可以进行一次性读写。成块读文件函数的调用形式为:
intfread(void*buf,intsize,intcount,FILE*stream)
fread()函数的意思是从stream指向的流文件读取count(字段数)个字段,每个字段为size(字段长度)个字符长,并把它们放到buf(缓冲区)指向的字符数组中,然后进行读取操作。fread()函数返回实际已读取的字段数。
从上面的分析我们可以知道,参数buf是一个无返回类型的指针,指向要读入数据的存放地址,它其实是一个缓冲区。因此本题正确的答案选C。
56.C解析:scanf输入字符串有一点要注意的是,格式控制串必须用%s。注意:gets函数和puts函数的作用。
57.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。
58.D解析:栈是一种特殊的线性表,这种线性表只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,即刚刚被插入的元素,所以栈也被称为“先进后出”表或“后进先出”表。
59.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。
60.D解析:本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。因为数组名是一个指针常量,不可以被改变。选项C首先定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,这也是错误的。因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将一个常字符型指针赋给sp。这是可行的。所以,4个选项中选项D符合题意。
61.B
62.C在本题程序中,首先定义了一个全局整型变量b,并给其赋初值为2,然后定义一个函数func,该函数带有一个指针类型的形参,在函数体中,通过形参的值来改变全局变量b的值,b+=*a等价于b=b+(*a),然后通过return语句返回计算后的变量b的结果。
在主函数中,定义两个整型变量a和res,并都赋初值为2,然后调用func函数,传递的形参是变量a的地址,即使形参指针变量a指向实参变量a的值,通过b+=*a计算,可以得到b=2+2=4。由于变量b是一个全局变量,作用域是整个程序,而非函数func,因此,在主函数中变量res的最后结果为2+4=6,程序最后的输出结果为6。
63.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。
64.Ac语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为c语言中区分大小写,所以B)选项中的“FOR”可以作为标识符来用。A)选项中含有非法字符&,因此选择A)。
65.A
66.C
67.C
68.Dfun函数的功能是对数组a[]的元素从大到小进行排序。
69.C选项A中,fun(inty,doublem);中变量y和m前不需要类型说明;因为函数fun(10,12.5)没有返回值,所以选项B错误;调用函数fun时,不需要在函数前面加上void,所以选项D错误。故本题的正确答案是选项C。
70.DX||Y是将X和Y作逻辑或运算,因为都是非0,所以结果为1,X|Y是做位或运算,即相同位置的数字只要有一个为1,结果为1,其结果也为非0,X&Y是为与运算,相同位置的数字都为1的时候才为1,其结果为非0,X^Y做位异或运算,即同0异1,因为X与Y的值相等,所以相同位置的数字一定相同。
71.D解析:根据给定的数据输入格式:123<空格>456<空格>789<回车>,第一个scanf语句中,格式字符为“%c”,只能得到一个字符\'1\',第二个scanf语句中格式字符为“%d”,变量i得到的数值为23,第三个scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组s得到的是'456\\0”。因而正确答案为选项D。
72.D
73.C选项A)和D)是实型而非整型。
74.D
75.B
76.C转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。
77.D
78.C\r\n
79.B(*q)++是q所指的字符加l,q++就是指针移到下一个字符。因此B选项正确。
80.C本题的考查点是函数的形参和实参的关系。x作为函数sub的实参时,函数对X值的改变没有返回主函数,并能使得x的值变化,所以在打印时,x的值始终是0。
81.
(1)intk=0;
(2)whffe(+pll+q)
【考点分析】
本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。
【解题思路】
(1)变量k存放数组c的下标,因此应初始化为0。
(2)while循环语句的循环条件是判断两个字符串是否到达结尾。
82.voidproc(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)//进行m次循环if(i%7==0||i%11==0)//能被7或11整除的所有整数a[j++]=i;//符合条件的数放在数组a中*n=j;//返回这些数的个数}【解析】本题需要先判断1~m每一个整数能否被7或11整除,然后将符合条件的整数放在数组a中,最后将符合条件的数的个数通过形参n返回主函数。2021年湖南省娄底市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列选项中,不是一个算法的基本特征的是()。
A.完整性B.可行性C.有穷性D.拥有足够的情报
2.以下程序的输出结果是()。main{intx=0.5;charz=‘a’;printf(“d\n”,(x&1)&&(z<‘z’));}A.0B.1C.2D.3
3.有以下程序
#include<stdio.h>
main()
{intx=1,y=2,z=3;
if(x>y)
if(y<z)printf("%d",++z);
elseprintf("%d",++y);
printf("%d\n",x++);
}
程序的运行结果是
A.A.331
B.41
C.2
D.1
4.一个递归算法必须包括()。
A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分
5.软件生命周期中,花费最多的阶段是()。
A.详细设计B.软件编码C.软件测试D.软件维护
6.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx
7.以下叙述中错误的是()。
A.c语言是一种结构化程序设计语言
B.使用三种基本结构构成的程序只能解决简单问题
C.结构化程序设计提倡模块化的设计方法
D.结构化程序由顺序、分支、循环三种基本结构组成
8.有以下函数char*fun(char*p){returnp;}该函数的返回值是______。
A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
9.若有定义“inta,b,c;”以下程序段的输出结果是()。a=11;b=3;c=0;printf(“%d\n”,c=(a/b,a%b));
A.2B.0C.3D.1
10.有以下程序段:charname[20】;intnum;scanf("name=%Snum=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lilimum=1001<回车>后,name的值为()。A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001
11.以下属于C语言实型常量的是()。
A.+6eB.e6+6C.6e+6D..e+6
12.有以下程序程序执行后的输出结果是()
A.60B.50C.45D.55
13.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5
14.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
15.A.A.75310246B.01234567C.76310462D.13570246
16.考虑下图中的程序段,①号语句的输出结果是()。A.A.'a'B.'t'C.'c'D.'k'
17.有下列程序:main{charp[]={a,h,c},q[]="a";printf("%d%d\n".sizeof(P),sizeof(q));}程序运行后的输出结果是()。A.44B.33C.34D.43
18.当接受用户输入的含有空格的字符串时,应使用()函数。
A.gets()B.getchar()C.scanf()D.printf()
19.
20.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.(!a==1)&&(!b==0)B.(a<b)&&!c‖1C.a&&bD.a||(b+b)&&(c-a)
二、2.填空题(20题)21.在对文件进行操作的过程中,若要求指针的位置回到文件的开头,应当调用的函数是【】。
22.阅读下面程序段,则执行后输出的结果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
23.在关系模型中,把数据看成是二维表,每一个二维表称为一个【】。
24.执行以下程序后,输出“#”的个数是【】。
#include<stdio.h>
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
25.结构化分析方法是面向______进行分析的方法。
26.下列程序的输出结果是______。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;}
i+=11;
a+=i;
}
printf("%d\n",A);
}
27.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
28.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
29.以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。
main()
{floatx[1000],sum=0,ave,a;
intn=0,i;
printf("Entermark:\n");scanf("%f",&a);
while(a>=0.0&&n<1000)
{sum+【】;x[n]=【】;
n++;scanf("%f",&a);
}
ave=【】;
printf("Output:\n");
printf('ave=%f\n",ave);
for(i=0;i<n;i++)
if(【】)printf("%t\n",x[i]);
}
30.执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。
31.以下程序的运行结果是:【】。
#include<stdio.h>
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
32.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。
33.若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【】。
inta[10]={19,23,44,17,37,28,49,36},*p;
p=a;
34.下列软件系统结构图的宽度为[]。
35.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}
36.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序。
#include<stdio.h>
main()
{FILE*fp;
charch,fname[10];
printf("Inputthenameoffile\n");
gets(fname);
if(fp=fopen(【】))==NULL)
{printf("can'topen\n");
【】;
}
while((ch=getchar())!='#')
fputc(【】);
fclose(fp);
}
37.以下程序段的输出结果是【】。
inti=9;
printf("%o\n",i);
38.“printf("%d\n",strlen("\t\"023\xABC\n");”语句的输出结果是______。
39.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。
40.#define命令出现在程序中函数的外面,宏名的有效范围为______。
三、1.选择题(20题)41.有以下程序:#include<studio.h>#defmeF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
42.以下程序:#include<stdio.h>main(){charstr[10];scanf("%s",&str);printf("%s\n",str);}运行上面的程序,输入字符串howareyou,则程序的执行结果是()。
A.howB.howareyouC.hD.howareyou
43.下列叙述中正确的是()。
A.软件交付使用后还需要进行维护
B.软件一旦交付使用就不需要再进行维护
C.软件交付使用后其生命周期就结束
D.软件维护是指修复程序中被破坏的指令
44.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n")}从第一列开始输入以下数据<CR>代表一个回车符。2743<CR>程序的输出结果是
A.66877B.668966C.6677877D.6688766
45.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i-){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。
A.234B.432C.23D.4534554334344523
46.以下程序的输出结果是
main()
{inta,i;a=0;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=2;
case1:
case2:a+=3;
default:a+=5;}
}printf("%d\n",a);}
A.31B.13C.10D.20
47.一个汉字的机内码在计算机内部需用2个字节存储,每个字节的最高位是()
A.0和0B.0和1C.1和0D.1和1
48.下列叙述中错误的是()。
A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值
B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容
C.在C语言中,外部变量的隐含类型是自动存储类别
D.在C语言中,函数形参的存储类型是自动(auto)类型的变量
49.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和register
B.extern和register
C.auto和static
D.static和register
50.2个指针变量不可以______。
A.相加B.比较C.相减D.指向同一地址
51.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。
A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);
52.下列对于软件测试的描述中正确的是______。
A.软件测试的目的是证明程序是否正确
B.软件测试的目的是使程序运行结果正确
C.软件测试的目的是尽可能地多发现程序中的错误
D.软件测试的目的是使程序符合结构化原则
53.若有定义intb[8],*p=b;则p+6表示()。
A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[0]的值加上6
54.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是()。
A.1212B.117C.1111D.127
55.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
56.以下正确的程序段是
A.cgarstr[20];scanf("%s",&str);
B.char*p;scanf("%s",p);
C.charstr[20];scanf("%s",&str[2])
D.charstr[20],*p=str;scanf("%s",p[2]);
57.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计
58.下列关于栈的叙述中正确的是()
A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表
59.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务
60.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
四、选择题(20题)61.
62.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
63.下列说法正确的是()。
A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组
B.在c语言中,数组元素的个数可以不确定,允许随机变动
C.在C语言中,数组元素的数据类型可以不一致
D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数
64.以下选项中不合法的标识符是()。
A.&aB.FORC.printD._00
65.从循环体内某一层跳出,继续执行循环外的语句是:___________。
A.break语句B.return语句C.continue语句D.空语句。
66.
67.设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:1
68.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序运行的结果是()。A.1,2,3,4,5,6,7,8,9,0,
B.0,9,8,7,6,5,1,2,3,4,
C.0,9,8,7,6,5,4,3,2,1,
D.1,2,3,4,9,8,7,6,5,0,
69.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun正确调用的语句是
A.fun(inty,doublem);B.k=fun(10,12.5);
C.fun(x,n);D.voidfun(n,x);
70.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是()。
A.X‖YB.X|YC.X&YD.X^Y
71.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}
A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456
72.
73.在C语言中,合法的长整型常数是()。
A.0.123456B.4962717C.9LD.5.321e2
74.
75.
76.以下不合法的字符常量是()。
A."、、"B.’\”’C.’\018’D.\xcc"
77.
78.
79.有以下程序:
程序执行后的输出结果是()。
A.PrphsbnB.ProhsbnC.ProgsbnD.Program
80.请选出以下程序的输出结果()。
A.1234
B.4321
C.0000
D.4444
五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。
例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!
六、程序设计题(1题)82.请编写一个函数proc,它的功能是:求出1~m(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传给m的值为70,则程序输出:7111421222833354244495556636670注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#defineN100voidproc(intm,int*a,int*n){ }voidmain{intarr[N],n,k;system("CLS");proc(70,arr,&n);for(k=0;k<n;k++)if((k+1)%20==0)//每行输出20个数{printf("%4d",arr[k]);printf("\n");}elseprintf("%4d",arr[k]);printf("\n");}
参考答案
1.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。
2.B(x&1)&&(z<‘z’)=(0.5&1)&&(‘a’<‘z’)=1&&1=1,故选择B选项。
3.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。
4.B
5.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。
6.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铁皮管道保温现场施工方案
- 植被清理施工方案
- 输电线路绿色施工方案
- 莆田防盗铸铁井盖施工方案
- 水泥鱼池基地施工方案
- 2025年度集装箱租赁及配套物流园区开发合同3篇
- 2025年新型食品退货保障服务合同范本3篇
- 2025年度鲜花店线上线下全渠道营销推广合作合同3篇
- 2025年度肉类食材直销配送与售后服务合同3篇
- 2025年度设计师与影视制作公司合作合同3篇
- DB-T29-74-2018天津市城市道路工程施工及验收标准
- 小学一年级20以内加减法混合运算3000题(已排版)
- 智慧工厂数字孪生解决方案
- 病机-基本病机 邪正盛衰讲解
- 品管圈知识 课件
- 非诚不找小品台词
- 2024年3月江苏省考公务员面试题(B类)及参考答案
- 患者信息保密法律法规解读
- 老年人护理风险防控PPT
- 充电桩采购安装投标方案(技术方案)
- 医院科室考勤表
评论
0/150
提交评论