
2021-2022学年山西省大同市全国计算机等级考试C语言程序设计预测试题(含答案).docx
25页2021-2022学年山西省大同市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________ 班级:________ 姓名:________ 考号:________一、单选题(12题)1.C语言提供的合法的数据类型关键字是()A.Double B.short C.integer D.Char 2.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系 B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项 C.一个关系的属性名表称为关系模式 D.一个关系可以包括多个二维表 3.以下程序段中,输出信息不能正确反映变量大小关系的是()A.if (x>y) printf(“x>y”);if (x<y) printf(“x<y”);else printf(“x=y”);B.if(x>=y)if(x>y) printf(“x>y”);else printf(“x=y”); else printf(“x<y”);C.if (x>y) printf(“x>y”);if (y>x) printf(“x<y”);if (x== y) printf(“x=y”);D.if (x>y) printf(“x>y”);else if(y<x) printf(“x<y”);else printf(“x=y”);4.5. 下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A.只能是整数0或1 B.只能是整数0或非0整数 C.可以是结构体类型的数据 D.可以是任意合法的表达式 6.若有语句“typedef struct TT { char c; int a[4]; } CIN;”,则下列叙述中正确的是()A.CIN是struct TT类型的变量 B.TT是struct类型的变量 C.可以用TT定义结构体变量 D.可以用CIN定义结构体变量 7.设栈S的初始状态为空,6个元素入栈的顺序为e1,e2,e3,e4,e5和e6若出栈的顺序是e2,e4,e3,e6,e5,el,则栈s的容量至少应该是()A.6 B.4 C.3 D.2 8.定义根节点深度为1,有n个元素的完全二叉树的深度是()A.D(n)=log2(n) B.D(n)=1+log2(n) C.D(n)=n+log2(n) D.D(n)=1+n*log2(n) 9.下列各排序法中,最坏情况下的时间复杂度最低的是()A.希尔排序 B.快速排序 C.堆排序 D.冒泡排序 10.下面不合法的常量数据是()A..023E-5 B.0x3f7b8a90 C.‘\0x6d’ D.‘\0123321’ 11.下列选项中不合法的十六进制数是( )。
A."0"xff B."0"X11 C."0"x1g D.”0”Xabc 12.有下列程序:#include <stdio.h>void fun(char *a, char *B){while(*a=='*')a++;while(*b=*A){b++;a++;}}main(){char *s="*****a*b****",t[80];fun(s,t);puts(t);程序的运行结果是( )A.*****a*b B.a*b C.a*b**** D.ab 二、2.填空题(12题)13. 以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空double fun(int n){ double s=0.0 ,fac=1.0;int i,k=1;for(i=1;i<=n;i++);{ 【 】 ;fac=fac/ks=s+fac;}}14. 设有定义:struct{int a;float b;charc;} abc;*p_abc=&abc;则对结构体成员a的引用方法可以是abc.a和p_abc 【 】 a15. 下面程序的运行结果是:【 】 fun(int t[],int n) {int i,m; if(n==1)return t[0]; else if(n>=2){m=fun(t,n-1); return m; } } main() {int a[]={11,4,6,3,8,2,3,5,9,2}; printf("%d\n",fun(a,10)); }16. 对二叉排序树进行查找的方法是:用待查的值与根结点的值相比,若比根小,则继续在【 】子树中找。
17. 以下程序的功能是计算: s=1+12+123+1234+12345main(){ int t=0,s=0,i;for(i=1;i<=5;i++){t=i+______; s=s+t; }printf("s=%d\n",s);}18. 若有语句double x=17; int y;,当执行y=(int)(x/5)%2;之后y的值为( )19. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行 】 (double,double);main(){ double x,y;scanf("%1f%1f",&x,&y);printf("%1f\n",max(x,y));}double max(double a,double B) { return(a>b ? a:b);}20. 以下程序的运行结果是【 】main(){ char *k="aeiou";for(;*k;k++) printf("%c",*k);}21. 若有如下结构体说明:struct STRU{int a,b;char c: double d;struct STRU *p1,*p2;};请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。
】t[20]22. 以下程序运行后的输出结果是【 】main(){int p=30;printf("%d\n",(p/3>0?p/10:p%3));}23. 下面invert函数的功能是将一个字符串str的内容颠倒过来,请填空include<string.h>void invert(char str[]){ int i,j,【 】;for(i=0,j=strlen(str)【 】;i<j;i++,j--){k=str[i];str[i]=str[j];str[j]=k;}}24. 常见的拓扑结构有【 】三、3.程序设计题(10题)25. 编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址注意:主函数中用¨¨作为结束输入的标志)注意:部分源程序在文件PROGl.C中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句26. 请编写函数fun(),它的功能是求Fibonacci数列中小于t的最大的一个数,结果由函数返回其中Fibonacci数列F(n)的定义为F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2)例如:t=1000时,函数值为987。
注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include <conio.h>#include <math.h>#include <stdio.h>int fun(int t){}main(){int n;clrscr();n=1000;printf("n=%d, f=%d\n",n, fun(n));}27. 函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一含新串放在t所指的数组中例如,若s所指字符串中的内容为:“ABCDEFGl23456”,其中字符A的ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推最后t所指的数组中的内容应是:“246”注意:部分源程序存在文件PROGl.C中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句28. 请编写函数fun(),该函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。
计算结果在main()函数中输出例如,输入下面矩阵:1 2 34 5 67 8 9其转置矩阵为:1 4 72 5 83 6 9则程序输出:2 6 106 10 1410 14 18注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include <stdio. h>#include<conio, h>void fun (int a[3][3], int b[3][3]){}main (){int a[3] [3]={{1,2,3}, {4,5,6},{7,8,9}},t [3] [3];int i, j;clrscr ();fun (a,t);for(i=0; i<3; i++){ for (j=0; j<3; j++)printf ("%7d",t [i] [j] );printf ("\n");}}29. 请编写一个函数int fun (int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中例如,输入如下整数:234 345 753 134 436 458 100 321 135 760则输出结果为6,100。
注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include<conio.h>#include<stdio.h>int fun(int *s,int t,int *k){}main(){int a[10]={234,345,753,134,436,458,100,321,135,760),k;clrscr();fun(a,10,&k);printf("%dr %d\n", k, a[k]);}30. 请编写函数fun(),函数的功能是求出二维数组周边元素之和,作为函数值返回二维数组中的值在主函数中赋予例如:若二维数组中的值为1 3 5 7 92 9 9 9 46 9 9 9 81 3 5 7 0则函数值为61注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include<conio.h>#include<stdio.h>#define M 4#defi。
