




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年四川省广元市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}
A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面
2.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。A.A.7B.8C.9D.10
3.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
4.以下叙述中正确的是()A.当对文件的读(写操作完成之后,必须将它关闭,否则可能导致数据丢失
B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
D.语言中的文件是流式文件,因此只能顺序存取数据
5.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。
A.1B.1.9C.2D.2.4
6.下列二叉排序树中查找效率最高的是()
A.平衡二叉树B.二叉查找树C.没有左子树的二叉排序树D.没有右子树的二叉排序树
7.有以下程序:#include<stdio.h>inta=1,b=2:voidfunl(inta,intb){printf("%d%d",a,b);}voidfun2(){a=3;b=4;}main(){funl(5,6);fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是()。A.1256B.5634C.5612D.3456
8.以下有4组用户标识符,其中合法的一组是()。
A.FOr-subCase
B.4dDOSize
C.f2_G3IFabc
D.WORDvoiddefine
9.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有‘\0’
10.软件调试的目的是A.发现错误B.改正错误C.改善软件的性能D.验证软件的正确性
11.若已知一个栈的进栈序列是1,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=n,则Pi(1<i<p)为()。
A.IB.n-iC.n-i+1D.不确定
12.若有定义语句:“intx=10;”,则表达式x-=x+x的值为()。
A.-20B.-l0C.0D.10
二、2.填空题(12题)13.下列程序段的输出结果是______。
intn='c';
switch(n++)
{default:printf("error");break;
case'a':printf("good");break;
case'c':printf("morning");
case'd':printf("class");
}
14.软件工程研究的内容主要包括:软件开发技术和【】。
15.按“先进后出”原则组织数据的数据结构是[]。
16.在面向对象方法中,类之间共享属性和操作的机制称为______。
17.若有以下定义和语句:
intw[10]={23,54,10,33,47,98,72,80,61},*p;
p=w;
则通过指针p引用值为98的数组元素的表达式是【】。
18.以下程序的运行结果是【】。
#include<stdio.h>
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:a++;b++;break;
case3:a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
19.Jackson方法是一种面向【】的结构化方法。
20.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。
21.若变量n中的值为24,则prnt函数共输出【】行。
voidprnt(intn,intaa[])
{inti;
for(i=1;i<=n;i++)
{printf("%6d",aa[i]);
if!(i%5))printf("\n");
}
printf("\n");
}
22.以下函数用来在w数组中插入x,w数组中的数已按由小到大的顺序存放,n为数组中存放的数的个数。插入后数组中的个数仍然有序。请填空,使之完整。
voidfun(char*w,charx,int*n)
{inti,p;
p=0;
w[*n]=x;
whiel(x>w[p])【】;
for(i=*n;i>p;i--)w[i]=【】;
w[p]=x;
++*n;
}
23.以下程序的功能是输出如下形式的方阵:
13141516
9101112
5678
1234
请填空。
#include<stdio.h>
main()
{inti,j,x;
for(j=4;j【】;j--)
{for(i=1;i<=4;i++)
[x=(j-1)*4+【】;
printf("%4d",x);
}
printf("\n");
}
24.栈中允许进行插入和删除的一端叫做______。
三、3.程序设计题(10题)25.请编写函数fun(),该函数的功能是:将两个两位数的正整数a,b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45时,b=12,调用到该函数后,c=5142。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.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);
}
26.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
27.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号:若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
例如,字符串中的内容为:******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为;*******A*BC*DEF*G****。n的值在主函数中输入。
在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容。仅在函数fun的花括号中填入你编写的若干语句。
28.下列程序定义了N×N的二维数组,并在主函数中自动赋值;请编写函数fun(inta[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如a数组中的值为
a=197
238
456
则返回主程序后a数组中的值应为
097
008
000
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
/*产生—个随机的5*5矩阵*/
{for(j=0;j<N;j++)
{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("THERESULT\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j));
printf("\n");
}
}
29.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):
程序运行后,如果输入精度0.0005,则程序输出为3.140578。
注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
30.编写函数fun,其功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>n。
例如:m=12,n=8时,运行结果为495.000000。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
31.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。
例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32.请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为
AAAA
BBBBBBB
CC
则合并后的字符串内容应该是AAAABBBBBBBCC
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#defineM3
#defineN20
voidfun(chara[M][N],char*b)
{
}
main()
{
charw[M][N]={"AAAA","BBBBBBB","CC"},i;
chara[100]={"####################"};
printf("Thestring:\n");
for(i=0;i<M;i++)
puts(w[i]);
printf("\n");
fun(w,a);
printf("TheAstring:\n");
printf("%s",a);
printf("\n\n");
}
33.请编写一个函数fun,其功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入“abc4EFg”,则应输出“aBc4EFg”。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
34.请编写函数fun,其功能是:计算并输出
例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。
注意:要求n的值大于1但不大于100。
部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
四、单选题(0题)35.以下叙述中正确的是()。
A.C语言编译系统对标识符的长度没有规定
B.C语言标识符的规定长度因系统而异
C.C语言规定标识符长度最多允许16个字符,超长报错
D.C语言规定以下划线开头的标识符长度必须大于1
五、单选题(0题)36.以下选项中合法的c语言常量是()。
A.,C—STR’B.2014.1C.”\l.0D.2EK
六、单选题(0题)37.有三个关系R,S和T如下:
其中关系T由关系R和s通过某种操作得到,该操作为()。
A.选择B.交C.投影D.并
参考答案
1.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。
2.A"\0"表示空字符,strlen函数求得的是不包括字符串结束符'\0'的长度。故选A。
3.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。
4.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。
5.A在表达式“z=0.9+x/y”中,先计算“3.6-2”,结果为1;再计算“0.9+1”,结果为1.9。因为变量z为整型,所以z的值为1。故本题答案为A选项。
6.A
7.BFunl是输出局部变量的值,fun2是把全局变量的值改成3和4,所以输出的结果是5634。
8.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。
9.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。
10.B本题考查软件工程调试。调试与测试是两个不同的过程,有着根本的区别:调试是一个随机的、不可重复的过程,它用于隔离和确认问题发生的原因,然后修改软件来纠正问题;测试是一个有计划的,可以重复的过程,它的目的是为了发现软件中的问题。因此,软件调试的目的是为了改正软什中的错误。本题的正确答案是选项\u3000B。
11.C
12.B表达式x-=x+X可以写成x=x-(x+x),所以X的值为-l0。
13.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。
14.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。
15.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。
16.继承继承
17.*(p+5)
18.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。
19.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。
20.封装封装
21.55解析:本题的关键在于if(!(i%5))printf('\\n),这句,即如果i可被5整除时,则换行。i值为24,可以被5整除4次,并余4,因此,prnt函数共输出5行,最后一行有4个数。
22.++pw[i-1]
23.>=1或>0i>=1或>0\r\ni解析:程序的外层for循环控制输出数据的行数,故第一处填“>=1”或“>0”;内层循环控制每行输出的个数。在内层for循环中,语句x=(j-1)*4+______;用于控制输出方阵中的具体数据,由于这些数据与其所在的行、列(j,i)具有x=(j-1)*4+i的关系,故第二处填i。
24.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。
25.voidfun(intaihtblong*c){*c=a%10*i000+b/10*l00+a/10*10+b%10;/*将a数的十位和个位数依次放在c数的十位和千位上b数的十位和个位数依次放在c数的百位和个位上*/}voidfun(inta,ihtb,long*c)\r\n{\r\n*c=a%10*i000+b/10*l00+a/10*10+b%10;/*将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和\r\n个位数依次放在c数的百位和个位上*/\r\n}解析:本题中主要的问题是怎么取出a和b的个位数和十位数,取出后怎么表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。如45/10结果为4而不是4.5(这是由于两个数都为整型,所以结果出为整型),45%10结果为5。若a为45,则a/10*10的结果为40而非45。乘1000,乘100和乘10的作用是分别使其胶面的数成为*c的千位数、百位数。注意要使用c时要注意进行指针运算,即*c,不能少了*号。
26.
解析:该程序功能是把高于或等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数返回值返回。解题过程首先求得平均分,然后将所有成绩与平均分进行比较,如果大于或等于平均分,存入指定数组。
27.
解析:该程序功能是根据字符串前导的“*”号个数进行相关操作。解题过程首先确定字符串尾,然后由串头开始对字符进行判断,同时对“*”字符进行统计,如果大于n,就进行截取。
28.intfun(inta[][N]){intij;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;/*将数组左下半三角元素中的值全部置成0*/}intfun(inta[][N])\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<=i;j++)\r\na[i][j]=0;/*将数组左下半三角元素中的值全部置成0*/\r\n}解析:本题旨在考查控制数组中左下半三角元素的算法,也就是两个千篇一律的循环语句,希望学习者能够掌握消化。
29.
解析:进入fun函数,根据前面的分析:(1)根据题意,需要把每一项累加起来;若每一累加项的值放在t中,后一项等于前一项累加项的值乘以n/(2*n+1)来求得。
(2)根据公式将求到的π/2的值放到变量pi中,每累加一次,n的值就增加1,以便求下一个累加项,不断重复,直到满足题目中的精度要求。
30.
解析:(1)该程序功能是对组合数公式求值。它的解题思路,可以分解为以下几步:求m!→求n!→求(m-n)!→求组合数的值。
(2)从已给部分源程序的main主函数开始入手,主函数中的“printf(“P=%f\n”,fun(12,8));”语句中“fun(12,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 陕西国防工业职业技术学院《单片机原理与应用》2023-2024学年第二学期期末试卷
- 陕西学前师范学院《检测技术实验》2023-2024学年第二学期期末试卷
- 陕西工商职业学院《混合动力汽车结构原理》2023-2024学年第二学期期末试卷
- 陕西理工大学《土体工程稳定性分析》2023-2024学年第一学期期末试卷
- 陕西省咸阳市永寿县中学2025年高三4月调研测试(二诊)物理试题试卷含解析
- 陕西省商洛市洛南中学2025年七校联考高考历史试题一模试卷含解析
- 陕西省泾阳县阶段性自测题2025届数学三下期末学业质量监测模拟试题含解析
- 幼儿园海滩课件
- 医学知识 便秘宣教 学习课件
- 固定资产知识
- 各省市光伏电站发电时长和量速查
- DZ∕T 0210-2020 矿产地质勘查规范 硫铁矿(正式版)
- 焊工操作证理论考题题库大全
- 护理三查八对课件
- 弯制法制作卡环及支架
- JGJ82-2011 钢结构高强度螺栓连接技术规程
- 中国十五冶招聘线上笔试测评题库
- 安琪儿夜游记故事原文阅读
- 姓氏文化杨姓
- 《体育保健学》课件-第三章 运动与营养
- 卫生许可证管理制度
评论
0/150
提交评论