版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年山东省泰安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.
2.
3.以下叙述中正确的是
A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式
B.语句inta[4][3]={1,2,4,5};是错误的初始化形式
C.语句inta[][3]={1,2,4,5};是错误的初始化形式
D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵
4.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.scanfB.getcharC.getsD.getc
5.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
6.下列叙述中正确的是()。A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对
7.指针可以用来表示数组元素,若已知语句:inta[3][7];则下列表示中正确的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
8.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是
A.34756B.23445C.35745D.12345
9.下列叙述中,不符合良好程序设计风格的是()。
A.程序的效率第一,清晰第二B.程序的可读性好C.程序中有必要的注释D.输人数据前要有提示信息
10.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
11.在一个C语言源文件中定义的全局变量,其作用域为()。
A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
12.有如下嵌套的if语句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下选项中与上述if语句等价的语句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
二、2.填空题(12题)13.有以下程序:
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是【】。
14.以下程序的输出结果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
15.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
16.下面的程序实现字符串的复制。
voidcopy_string(from,to)
【】;
{for(;*from;from++,to++)
*to=*from;
【】;
}
main()
{char*a="Iamwang",*b="youareLi";
printf("%s\n%s\n",a,b);
【】;
printf("%s\n%s\n\n",a,b);
}
17.下列程序的运行结果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",-i);
}
18.在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。
19.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
20.下列程序的输出结果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
21.以下程序运行后的输出结果是【】。
main()
{
chara[]="Language",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));
}
22.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
23.数据结构分为逻辑结构与存储结构,线性链表属于【】。
24.下列程序的输出结果是【】。
#include<stdio.h>
main()
{charb[]="Helloyou";
b[5]=0;
printf("%s\n",b);
}
三、3.程序设计题(10题)25.请编写函数fun,其功能是:计算并输出下列多项式的值:
例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。
注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
26.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是;找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定义结构体*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
27.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirtString--SecondStdng
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
28.请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串:World,然后输入3。则调用该函数后的结果为:Word。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
29.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除:而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是“BDFl2345”。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*输出指定分数范围内的学生记录*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分数在80~98之间的学生记录按他数从低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
31.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。
部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。
例如,输入下面的矩阵:其转置矩阵为:
123147
456258
789369
程序输出:
2610
61014
101418
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
34.请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
voidfun(inta,intb/long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
四、单选题(0题)35.下列定义数组的语句中,正确的是()。A.#defineN10;intx[N];
B.intN=10;intx[N];
C.int:x[0.10];
D.intx[];.
五、单选题(0题)36.下列叙述中正确的是()。
A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上3种说法都不对
六、单选题(0题)37.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
参考答案
1.B
2.D
3.D二维数组在初始化时,可以省第1维,但是不可以省第2维。可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。因此D选项正确。
4.C解析:C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets\u3000(输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。
5.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
6.D算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。故答案为D选项。
7.D
8.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。
9.A一般来讲,程序设计风格首先应该简单和清晰,其次程序必须是可以理解的,可以概括为“清晰第一,效率第二”。
10.A循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。
11.A全局变量的作用域是从声明处到文件的结束。故本题答案为A选项。
12.C条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式做真/假检测,然后根据结果返回两个表达式中的一个作为运算的结果。<表达式1>?<表达式2>:<表达式3>。在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
13.87788,7,7,8解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。
14.852852解析:循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852。
15.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
16.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函数copy_string()用到了形参from,to是指针变量,实参a、b是字符串指针,第一个空格应填形参说明语句“char*from,*to”。当from所指的字符串全部复制给to所指的字符串时,有可能to所指原字符串长度大于from所指字符串长度,即可能to所指串的后面字符仍留在复制后的to所指串中。为避免这种情况,必须在from所指串复制完后,马上给to所指串加上串结束符。因此,第二个空格应填*to='\\0'。main()函数应调用copy_string()函数,第三个空格应填copy_string(a,b)。
17.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,轴出结果为3。
18.消息消息解析:消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
19.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
20.21
21.gaegae解析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*p1+k)=*(p2+k))条件为真,执打输出*(p1+k)对应的字符。即当k=0时,*(p1+k)对应的字符串数组a中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(p1+k)=*(p2+k))条件为假,不执行printf语句,依此类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。
22.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。
23.存储结构
24.HelloHello解析:语句b[5]=0;相当于语句b[5]='\\0';且'\\0'为字符串结束标志,输出时遇到'\\0'就停止输出。
25.
解析:该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。
26.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成绩最高的学生记录*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成绩最高的学生记录*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}解析:本题的流程是这样的,先使s指向第1个学生,我们的题干目的是找出分数最高的学生,所以if语句的条件是s->s<a[i].s。此外,在做本题时,我们应该熟练掌握“指向运算符”和“成员运算符”的相关知识。题中“s->s”也可换成“(*s).s”。
27.
解析:该程序功能是实现两个字符串的连接。本题要把串2连接到串1之后,则需要把串2的第一个字符放到串1的尾符的位置上,把串2的后面的字符放到串1的后面的位置。
28.
解析:(1)该程序功能是删除一个字符串中指定下标的字符。它的解题思路,可以分解为以下两步:逐个判断字符串中的下标是否满足条件,满足条件的就放到题目要求的新串,否则就不放。
(2)从已给部分源程序的main主函数开始入手,核心函数“fun(str1,str2,n);”中的参数由题目可知,str1存放着原始字符串,str2存放删除了下标为n的字符的结果字符串,注意下标是从“0”开始的。
29.
解析:该程序功能是删除下标为偶数同时ASCII值为奇数的字符。解题过程利用if判断表达式选择下标为偶数同时ASCII值为奇数的字符,然后将符合条件的字符放入指定的字符串,这样就实现了函数功能。
30.intfun(STREC*aSTREC*bint1inth){intij=0;for(i=0;i<N;i++)if(a[i].s>-l&&a[i].s<=h)/*将分数高于1低于h的学生记录存在于结构体数组b中*/b[j++]=a[i];returnj;/*返回分数范围内的学生人数*/}intfun(STREC*a,STREC*b,int1,inth)\r\n{\r\ninti,j=0;\r\nfor(i=0;i<N;i++)\r\nif(a[i].s>-l&&a[i].s<=h)/*将分数高于1,低于h的学生记录存在于结构体数组b中*/\r\nb[j++]=a[i];\r\nreturnj;/*返回分数范围内的学生人数*/\r\n}解析:处理此类分段统计问题,可采用多分支选择语句或条件选择语句。此处采用条件选择语句解答,具体见参考答案。使用条件选择语句进行分段统计时应当注意分段范围。
31.
解析:该程序功能是计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。解题过程首先求出能被5或9整除的所有自然数,然后在此基础上求得这些数的倒数之和。
32.
解析:(1)该程序功能是返回低于平均分的人数。它的解题思路可以分解为以下几步:求总分一求平均分一逐个元素与平均分比较一统计低于平均分的人数。
(2)从已给部分源程序的main主函数开始入手,核心函数fun(score,9,below)中的参数由题目可知,score存放着m个人的成绩,below存放低于平均分的分数。另外,根据score的定义,可知9为score数组中元素的个数,传给函数fun中的参数m。
33.
解析:该程序功能是实现B=A+Aˊ,即把矩阵A加上A的转置。其中,所谓矩阵的转置,是把行中的数据与列中的数据进行对调。解题过程中首先求得已给的矩阵的转置,然后在循环过程中对矩阵与该矩阵的转置对应元素求和。
34.voidfun(intaintblong*c){*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;}voidfun(inta,intb,long*c)\r\n{\r\n*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;\r\n}解析:语句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。注意“/”和“%”的用法。
35.A[解析]数组说明的一般形式为:类型说明符数组名[常量表达式]。B)中N是变量,不能用变量定义数组长度。C)选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D)选项中数组长度为空,所以非法。\u3000\u3000
36.D程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。设计算法时要考虑到数据结构的设计,但是不仅仅是要考虑到数据结构的设计,还要考虑到其他的程序结构的问题。设计算法时不能只考虑结果的正确性和可靠性,还需要考虑到程序的时间冗余度等方面。所以答案选择D。
37.C(10)C)解析:DB即数据库(Database),是统一管理的相关数据的集合;DBMS即数据库管理系统(DatabaseManagementSystem),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法;DBS即数据库系统(DatabaseSystem)由如下5部分组成,数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。2022年山东省泰安市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.
2.
3.以下叙述中正确的是
A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式
B.语句inta[4][3]={1,2,4,5};是错误的初始化形式
C.语句inta[][3]={1,2,4,5};是错误的初始化形式
D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵
4.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。
A.scanfB.getcharC.getsD.getc
5.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
6.下列叙述中正确的是()。A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对
7.指针可以用来表示数组元素,若已知语句:inta[3][7];则下列表示中正确的是()。
A.*(a+1)[5]B.*(*a+3)C.*(*(a+1))D.*(&a[0][0]+2)
8.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是
A.34756B.23445C.35745D.12345
9.下列叙述中,不符合良好程序设计风格的是()。
A.程序的效率第一,清晰第二B.程序的可读性好C.程序中有必要的注释D.输人数据前要有提示信息
10.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
11.在一个C语言源文件中定义的全局变量,其作用域为()。
A.由具体定义位置和extern说明来决定范围B.所在程序的全部范围C.所在函数的全部范围D.所在文件的全部范围
12.有如下嵌套的if语句:if(a<b)if(a<c)k=a;elsek=C:elseif(b<c)k=b;elsek=C;以下选项中与上述if语句等价的语句是()。A.k=(a<b)?a:b;k=(b<c)?b:C;
B.k=(a<b)?((b<c)?a:b):((b>c)?b:c);
C.k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D.k=(a<b)?a:b;k=(a<c)?a:c;
二、2.填空题(12题)13.有以下程序:
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是【】。
14.以下程序的输出结果是【】。
main()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}}
15.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
16.下面的程序实现字符串的复制。
voidcopy_string(from,to)
【】;
{for(;*from;from++,to++)
*to=*from;
【】;
}
main()
{char*a="Iamwang",*b="youareLi";
printf("%s\n%s\n",a,b);
【】;
printf("%s\n%s\n\n",a,b);
}
17.下列程序的运行结果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",-i);
}
18.在面向对象的程序设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。
19.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
20.下列程序的输出结果是【】。
main()
{inta=1,b=2;
a=a+b;b=a-b,a=a-b;
printf("%d,%d\n",a,b);
}
21.以下程序运行后的输出结果是【】。
main()
{
chara[]="Language",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));
}
22.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
23.数据结构分为逻辑结构与存储结构,线性链表属于【】。
24.下列程序的输出结果是【】。
#include<stdio.h>
main()
{charb[]="Helloyou";
b[5]=0;
printf("%s\n",b);
}
三、3.程序设计题(10题)25.请编写函数fun,其功能是:计算并输出下列多项式的值:
例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。
注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
26.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是;找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定义结构体*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
27.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString--
SecondString
程序输出:
FirtString--SecondStdng
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
28.请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串:World,然后输入3。则调用该函数后的结果为:Word。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
29.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为“ABCDEFGl2345”,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除:而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是“BDFl2345”。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b,int1,inth)
{
}
main()
{
STRECs[N]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",96},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",94},{"GA012",64},
{"GA014",91},{"GA011",90},{"GA017",64},
{"GA018",64},{"GA016",72}};
STRECh[N],tt;
FILE*out;
inti,j,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)
{t=heigh;heigh=low;low=t;}
n=fun(s,h,low,heigh);
printf("Thestudent'sdatabetween
%d--%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%s%4d\n",h[i].num,h[i].s);
/*输出指定分数范围内的学生记录*/
printf("\n");
ut=fopen("out74.dat","w")
fprintf(out,"%d\n",n)-
n=fun(s,h,80,98);
for(i=0;i<n-1;i++)
/*分数在80~98之间的学生记录按他数从低到高排序*/
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{tt=h[i];h[ii=h[j];h[j]=tt;}
for(i=0;i<n;i++)
fprintf(out,"%4d\n",h[i].s);
fprintf(out,"\n");
fclose(out);
}
31.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。
例如,在主函数中从键盘给n输入20后,输出为:s=0.583333。注意:要求n的值不大于100。
部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。
例如,输入下面的矩阵:其转置矩阵为:
123147
456258
789369
程序输出:
2610
61014
101418
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
34.请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
voidfun(inta,intb/long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
四、单选题(0题)35.下列定义数组的语句中,正确的是()。A.#defineN10;intx[N];
B.intN=10;intx[N];
C.int:x[0.10];
D.intx[];.
五、单选题(0题)36.下列叙述中正确的是()。
A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上3种说法都不对
六、单选题(0题)37.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMSB.DBMS包含DB和DBSC.DBS包含DB和DBMSD.没有任何关系
参考答案
1.B
2.D
3.D二维数组在初始化时,可以省第1维,但是不可以省第2维。可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。因此D选项正确。
4.C解析:C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets\u3000(输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。
5.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
6.D算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。故答案为D选项。
7.D
8.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。
9.A一般来讲,程序设计风格首先应该简单和清晰,其次程序必须是可以理解的,可以概括为“清晰第一,效率第二”。
10.A循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。
11.A全局变量的作用域是从声明处到文件的结束。故本题答案为A选项。
12.C条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式做真/假检测,然后根据结果返回两个表达式中的一个作为运算的结果。<表达式1>?<表达式2>:<表达式3>。在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
13.87788,7,7,8解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。
14.852852解析:循环前,变量y的值为9,其中的循环语句在y大于0情况下循环,每次循环后y的值减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环。所以程序输出852。
15.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
16.char*from*to*to='\0'copy_string(ab)char*from,*to\r\n*to='\\0'\r\ncopy_string(a,b)解析:函数copy_string()用到了形参from,to是指针变量,实参a、b是字符串指针,第一个空格应填形参说明语句“char*from,*to”。当from所指的字符串全部复制给to所指的字符串时,有可能to所指原字符串长度大于from所指字符串长度,即可能to所指串的后面字符仍留在复制后的to所指串中。为避免这种情况,必须在from所指串复制完后,马上给to所指串加上串结束符。因此,第二个空格应填*to='\\0'。main()函数应调用copy_string()函数,第三个空格应填copy_string(a,b)。
17.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,轴出结果为3。
18.消息消息解析:消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。
19.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
20.21
21.gaegae解析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*p1+k)=*(p2+k))条件为真,执打输出*(p1+k)对应的字符。即当k=0时,*(p1+k)对应的字符串数组a中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(p1+k)=*(p2+k))条件为假,不执行printf语句,依此类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。
22.k=p;k=p;解析:为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码'k=p;'。
23.存储结构
24.HelloHello解析:语句b[5]=0;相当于语句b[5]='\\0';且'\\0'为字符串结束标志,输出时遇到'\\0'就停止输出。
25.
解析:该程序功能是计算并输出多项式值。根据题干中给出的数列,首先推出每一项的表达式,然后再对多项式进行累加求和。
26.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程施工居间服务协议 项目介绍提成居间合同书
- 运动损伤急救治疗
- 妇科疾病康复
- ARMADS集成开发环境
- e5吸科耐药革兰阴性杆菌与治疗策略
- L12其它温度计完例题还没完
- JAVA语言的结构化程序设计
- 公司全国质量月活动总结
- 2026北师大二下最喜欢的水果公开课课件
- kj25 汽车防抱死制动系统及驱动防滑控制系统
- 静脉输液护理技术操作规范
- 生产现场作业指导书模板集
- 护理沟通:有效沟通技巧培训
- 2026年建信金科测试题及答案
- 初中语文学考合一知识清单·兰州专版
- 水电工程图纸审核方案
- 热电站锅炉水循环计算书
- 基层党务干部培训班测试题及答案
- 2025年杨浦卫健委事业单位考试及答案
- 翡翠鉴定培训课件
- DG-TJ08-2244-2025 既有建筑改造项目节能量核定标准
评论
0/150
提交评论