版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年广东省江门市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.C语言的基本单位是()。
A.函数B.过程C.子程序D.子函数
2.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。
A.iB.n-iC.n-i+1D.不确定
3.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()
4.以下描述中,不是线性表顺序存储结构特征的是()。
A.可随机访问B.需要连续的存储空间C.不便于插入和删除D.逻辑相邻的数据物理位置上不相邻
5.
6.字符组a[20]和b[20],下面正确的输出语句是()。A.put(a,b)
B.prinf(“%s,%s”,a[],b[])
C.putchar(a,b)
D.puts(a);puts(b)
7.已知广义表的表头为A,表尾为(B,C),则此广义表为________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
8.程序执行后的输出结果是()。A.321.cbaB.123.abcC.abc,123D.1bc,a23
9.有两个关系R和T如下:
则由关系R得到关系T的操作是()。A.选择B.投影C.交D.并
10.C语言提供的合法的数据类型关键字是()。
A.DoubleB.shortC.integerD.Char
11.表达式:(int)((double)9/2)-(9)%2.的值是A.0B.3C.4D.5
12.在黑盒测试方法中,设计测试用例的主要根据是()。
A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图
二、2.填空题(12题)13.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。
14.函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数,且要求m>n。
例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。
#include<stdio.h>
floatfun(intm,intn)
{inti;
doublep=1.0;
for(i=1;i<=m;i++)【】;
for(i=1;i<=n;i++)【】;
for(i=1;i<=m-n;i++)p=p/i;
returnp;
}
main()
{printf("p=%f\n",fun(12,8));
}
15.在关系模型中,把数据看成是二维表,每一个二维表称为一个【】。
16.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
17.下列程序的循环次数是______。
x=2;
do
{x=x*x;}
while(!x);
18.派生类对基类继承控制访问有三种。派生类可以定义其基类中不具备的【】。
19.数据模型包括数据结构、()和数据条件。
20.以下程序的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。请填空。#include<stdio.h>main(){longs,t,s1=10;pfintf("\n.Pleaseenters:");scanf("%1d",&s);t=s%10;while(s>0){s=s/100;t=();s1=s1*10;}printf("Theresultis:%1d\n",t);}
21.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
22.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
23.以下程序运行后的输出结果是【】。
main()
{charc;intn=100;
floatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
}
24.下程序的输出结果是【】。
#include<stdio.h>
#defineMAX_COUNT4
voidfun()
main()
{intcount;
for(count=1;count<=MAX_COUNT;coun++)fun();
}
voidfun()
{staicinti;
i+=2;
printf(”%d,i);
}
三、3.程序设计题(10题)25.请编写一个函数,函数的功能是删除字符串中的所有空格。
例如,主函数中输入“asdafaaz67”,则输出为“asdafaaz67”。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
26.请编写一个函数intfun(int*s,intt,int*k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:
234345753134436458100321135760
则输出结果为6,100。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{
}
main()
{
inta[10]={234,345,753,134,436,458,
100,321,
135,760),k;
clrscr();
fun(a,10,&k);
printf("%dr%d\n",k,a[k]);
}
27.下列程序定义了N×N的二维数组,并在主函数中赋值。请编写一个函数fun(),函数的功能是:求数组周边元素的平方和,并作为函数值返回给主函数。例如,若数组a中的值为
01279
1112155
2216111
979102
54141
则返回主程序后s的值应为310。
[注意]部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineN5
intfun(intw[][N])
{
}
main()
{
inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);
inti,j;
ints;
clrscr()
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:%d\n",s);
}
28.请编写一个函数fun(),它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较K的字符串。若两个字符串长度相等,则返回第1个字符串。
例如,输入beijing<CR>shanghai<CR>(<CR>为回车键),函数将返回shanghai。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
char*fun(char*s,char*t)
{
}
main()
{
chara[20],b[10],*p,*q;
inti;
printf("Input1thstring:");
gets(a);
printf{"Input2thstring:");
gets(b);
printf("%s",fun(a,b));
}
29.请编写函数fun(),其功能是:将所有大于1小于整数m的素数存入xx所指数组中,素数的个数通过k传回。
例如,输入25,则应输出23571113171923。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,int*k,intxx[])
{
}
main()
{
intm,n,zz[100];
clrscr();
printf("/nPleaseenteranintegernumberbetween10and100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dprimenumbers
lessthan%d:",m,n);
for(n=0;n<m;n++)
printf("\n%4d",zz[n]);
}
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fjun(),该函数的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#defineN12
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
main()
STRECsIN]={{"GA05",85},{"GA03",76},
{"GA02",69},{"GA04",85},{"GA01",91},
{"GA07",72},{"GA08",64},{"GA06",87},
{"GA09",60},{"GAll",79},{"GA12",73},
{"GA10",90}};
STRECh[N],t;
FILE*out;
inti,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichis
higherthan%7.3f:In",n,ave);
for(i=0;i<n;i++)
printf("%s%4.1f\n",h[i].num,h[i].s);
printf("\n");
out=fopen("out90.dat","w");
fprintf(out,"%dkn%7.3f\n",n,ave);
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(h[i].s<h[j].s)
{t=hIi];h[i]=h[j];h[j]=t;}
/*分数从高到低排列*/
for(i=0;i<n;i++)
fprintf(out,"%4.1f\n",h[i].s);
fclose(out);
}
31.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。
例如:二维数组中的值为:
13579
29994
69998
13570
则函数值为61。
注意:部分源程序存在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32.编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio,h>
#defineN8
typedefstruct
{charnum[10];
doubles;
}STREC;
doublefun(STREC*a,STREC*b,int*n)
{
}
main()
{
STRECs[N]={{"GA05",85},{"GA03",76}
{"GA02",69},{"GA04",85}
{"GA01",91}{"GA07",72},{"GA08",64}
{"GA06",87}};
STSCh[N],t;
FILE*out;
int.i,j,n;
doubleave;
ave=fun(s,h,&n);
printf("The%dstudentdatawhichis
lowerthan%7.3f:\n"n,ave);
for(i=0;i<n;i++)
/*输出成绩低平均值的学生记录*/
printf("%s%4lf\n"h[i]num,
h[i].s);
printf("\n");
ut=fopen("out71dat","w"
fprintf(out,"%d\n%7.3f\n",nave);
/*输出平均值/
for(i=0;i<n-1;i++)
for(j=i+l;j<n;j++)
if(h[i].s>h[j].s)
{t=h[i];h[i]=h[j];h[j]=t;}
/*将成绩由低至高排列*/
for(i=0;i<n;i++)
fprintf(out,"%4lf\n"h[i]s);
fclose(out);
}
34.请编写函数fun(),其功能是;计算井输出下列多项式值。
S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)
例如,若主函数从键盘给n输入8后,则输出为S-0.662872。
注意;部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序;
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doubles;
printf("\nInputn:");
scanf("%d",&n);
s=fun(n);
printf("\ns=%f\n",s);
}
四、单选题(0题)35.有以下程序
main()
{intk=5,n=0;
do
{switch(k)
{case1:case3:n+=1;k--;break;
default:n=0;k--;
case2:case4:n+=2;k--;break;
}
printf("%d",n);
}while(k>0&&n<5);
}
程序运行后的输出结果是
A.235B.0235C.02356D.2356
五、单选题(0题)36.在长度为n的顺序表的第i个位置上插入一个元素(1≤i≤n+1),元素的移动次数为:()。
A.n–i+1B.n–iC.iD.i–1
六、单选题(0题)37.
参考答案
1.AA。【解析】C语言是函数式的语言。它的基本组成单位是函数,在C语言中任何程序都是由一个或者多个函数组成的。
2.C
3.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。
4.DD)【解析】线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。
5.C
6.D难易程度:中
7.B
8.D[解析]字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即"abc的第一个字符的地址。s2指向的是"123"的第一个字符的地址。调用swap函数之后交换的是两个字符串的第一个字符ai和1的内容,所以打印输出为D)。
9.A
10.Bdouble,char,int,第一个字母都是小写。
11.B\n本题考查了强制类型转换。9/2为double型,所以结果为4.5,又强制转换为整型,所以结果为4。9%2为取余运算,结果为1。最终结果4-1=3。
\n
12.A【答案】:A
【知识点】:黑盒测试
【解析】:黑盒测试也称功能测试或数据驱动测试,它完全不考虑程序内部的逻辑结构和内部特征,只着眼于程序的外部结构,主要用来检查程序功能是否按照需求规格说明书的规定正常使用。故选A。
13.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。
14.p=p*ip=p/ip=p*ip=p/i解析:本题中,欲求p的值,需要先求m!,n!,(m-n)!,可分别用循环语句实现。
15.关系关系解析:在数据库中,一个表就是一个关系。一个关系的逻辑结构就是一张二维表。
16.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。
17.11解析:do…while语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环;do…while语句的特点是先执行后判断,因此循环体至少执行1次.本程序中x=2不符合循环条件,所以只循环1次。
18.数据和操作数据和操作
19.数据操作数据操作解析:数据模型就是现实世界的反映,数据模型所描述的内容有3个部分,它们是数据结构、数据操作与数据约束。
20.s%10*s1+t
21.22
22.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
23.220.000000220.000000解析:注意区分运算符的优先级。先是给c赋值,然后计算x=f*=n/=50,得x=f*=2,最后有x=20。x输出是按浮点数的形式输出的,小数点后的0不能少。
24.2468(若字符间有空格扣1分)2468(若字符间有空格扣1分)
25.
解析:该程序功能是删除字符串中的所有空格。本题的解题思路是首先利用一个指向字符串的指针,查找不是空格的字符,然后将不是空格的字符赋值到字符串,如果是空格,则跳过该字符,这样就实现了空格字符的删除。
26.intfun(int*sinttint*k){inti;*k=0/*k所指的数是数组的下标值*/for(i=0;i<t;i++)if(s[*k]>s[i])*k=i;/*找到数组的最小元素把该元素的下标赋给k所指的数*/returns[*k];/*返回数组的最小元素*/}intfun(int*s,intt,int*k)\r\n{\r\ninti;\r\n*k=0/*k所指的数是数组的下标值*/\r\nfor(i=0;i<t;i++)\r\nif(s[*k]>s[i])\r\n*k=i;/*找到数组的最小元素,把该元素的下标赋给k所指的数*/\r\nreturns[*k];/*返回数组的最小元素*/\r\n}解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应让*k的值为数组中的某一下标值勤,即*k=0。
27.intfun(intw[][N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}intfun(intw[][N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)\r\n{\r\ns=s+w[i][j]*w[i][j];\r\n}\r\nreturns;\r\n}
28.char*fun(char*schar*t){intii;for(i=0;s[i]!='\0';i++);/*求字符串的长度*/for(j=0;t[i]!='\0';j++);if(i>=j)/*比较两个字符串的长度*/returns;/*函数返回较长的字符串若两个字符串长度相等则返回第1个字符串*/elsereturnt;}char*fun(char*s,char*t)\r\n{\r\ninti,i;\r\nfor(i=0;s[i]!='\\0';i++);/*求字符串的长度*/\r\nfor(j=0;t[i]!='\\0';j++);\r\nif(i>=j)/*比较两个字符串的长度*/\r\nreturns;/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/\r\nelse\r\nreturnt;\r\n}解析:本题中,第1个for循环的作用是求出s的字符个数i,第2个for循环的作用是求出t的字符个数j,因为任何循环都要控制一条语句,所以在每一个for循环条件后面必须要有一个分号。
本题也可用如下技巧:
char*fun(char*s,char*t)
{if(strlen(s)>=strlen(t)returns;
elsereturnt;
}
29.voidfun(intmint*kintXX[]){intijtn=0;for(i=2;i<m;i++)/*找出大于1小于整数m的素数*/{t=l;for(j=2;j<i;j++)if(i%j==0){t=0;break;}if(t==1)xx[n++]=i;}*k=n;/*返回素数的个数*/}voidfun(intm,int*k,intXX[])\r\n{\r\ninti,j,t,n=0;\r\nfor(i=2;i<m;i++)/*找出大于1小于整数m的素数*/\r\n{\r\nt=l;\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\n{\r\nt=0;\r\nbreak;\r\n}\r\nif(t==1)\r\nxx[n++]=i;\r\n}\r\n*k=n;/*返回素数的个数*/\r\n}解析:这道题是考查一个数是不是素数,只要掌握了判断素数的方法,问题便能顺利解决,请以此题为例,掌握判断素数的方法。
30.doublefun(STREC*aSTREC*bint*n){inti;doubleay=0.0;*n=0;for(i=0;i<N;i++)av=av+a[i].s;ay=ay/N;/*求平均值*/for(i=0;i<N;i++)if(av<=a[i].s){b[*n]=a[i];*n-*n+l;}/*将高于等于平均分的学生存从所指存储单元中并统计人数*/returnay;/*返回严均分*/}doublefun(STREC*a,STREC*b,int*n)\r\n{\r\ninti;\r\ndoubleay=0.0;\r\n*n=0;\r\nfor(i=0;i<N;i++)\r\nav=av+a[i].s;\r\nay=ay/N;/*求平均值*/\r\nfor(i=0;i<N;i++)\r\nif(av<=a[i].s)\r\n{b[*n]=a[i];*n-*n+l;}/*将高于等于平均分的学生存从所指存储单元中,并统计人数*/\r\nreturnay;/*返回严均分*/\r\n}解析:本题中第1个循环的作用求出所有分数的总和,只有进行了av=av/N后才得到平均值(我们在前面的程序中碰到过类似问题)。第2个循环的作用是将高于等于平均分的学生存入b所指存储单元中。同一结构体变量之间可以互相赋值。
本程序中直接用*n来表示b的下标,注意开始时要给,*n赋0,且使用时不能少*号。因为单独的n是一个指针变量,而我们要用的是它所指向的那个存储单元中的值。
31.
解析:该程序功能是求出二维数组周边元素之和。其中周边元素是指数组的最上和最下的两行,最左和最右的两列。数组第一行元素的行下标为0,最后一行元素的行下标为M-1,第一列的列下标为0,最后一列的列下标为N-1。
32.
解析:该程序功能是求一定范围内的素数。素数是只能被1和自身除尽的数。判断i是不是素数最简单的方法就是用2~(i/2)去除i,只要能除尽就不是素数。
33.dou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目十一 建筑设计之美
- 2025年监理考试真题及参考答案
- 《政务信息公开目录编制规范(2026年)》
- 广播电视编辑记者、播音员主持人资格考试(广播电视基础知识)考前冲刺试题及答案(2026年青海西宁市)
- 2025年新闻记者职业资格考试(新闻基础知识)复习题库含答案(湖南张家界)
- 四川省2025年度评标专家续聘复审考试(水利类)训练题及答案
- 2025年上海市(秋季)高考语文真题详解
- 保温隔热涂料创新中心及应用项目可行性研究报告模板-立项申报用
- 山东威海市2026届高三第二次模拟模拟考试语文试题及参考答案
- 2025-2030年都市农业解决方案企业制定与实施新质生产力战略分析研究报告
- 2026文化和旅游部恭王府博物馆招聘应届毕业生4人考试备考试题及答案解析
- 昆明供电局项目制用工招聘笔试真题2025
- 内蒙古杉杉年产4万吨锂离子电池负极新能源材料加工项目环境影响报告表
- CPU性能测试实验报告
- 2025年光伏组件拆卸和更换施工技术方案
- 香港定居申请书
- 船员机工英语题库及答案
- DB6108T 100-2024 一般工业固体废物矿坑回填修复治理技术规范
- 2025年国家安全部公开遴选公务员面试题及答案
- 订单应急预案管理办法
- 节能施工应急预案措施
评论
0/150
提交评论