
2022-2023学年山西省大同市全国计算机等级考试C语言程序设计真题一卷(含答案).docx
26页2022-2023学年山西省大同市全国计算机等级考试C语言程序设计真题一卷(含答案)学校:________ 班级:________ 姓名:________ 考号:________一、单选题(12题)1.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A.并 B.交 C.投影 D.笛卡儿乘积 2. 以下定义语句中正确的是A.int a=b=0; B.char A=65+1,b='b'; C.noat a=1,*b=&a,*c=&b; D.double a=0.0;b=1.1; 3.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图A.5 B.6 C.7 D.8 4. 下列程序的输出结果是( ) #include <stdio.h> main() { struct st { int y,x,z; }; union { long i; int j; char k; } un; printf("%d,%d\n",sizeof(struct st),sizeof(un)); }A.6, 2 B.6, 4 C.8, 4 D.8, 6 5.6.有以下程序 main() { char s[]="abcde"; s+=2; printf("%d\n",s[0]); } 执行后的结果是______。
A.输出字符a的ASCⅡ码 B.输出字符c的ASCⅡ码 C.输出字符c D.程序出错 7.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()A.scanf(“%d”,pa); B.scanf(“%d”,a); C.scanf(“%d”,&pa); D.scanf(“%d”,*pa); 8.设线性链表中结点的结构为(data,next)若想删除结点p的直接后继,则应执行下列()操作A.p->next=p->next->next; B.p=p->nextp->next=p->next->next; C.p->next=p->next; D.p=p->next->next; 9.下列叙述中正确的是( )A.一个逻辑数据结构只能有一种存储结构 B.逻辑结构属于线性结构,存储结构属于非线性结构 C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率 D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率 10.线性结构是数据元素之间存在一种()A.一对多关系 B.多对多关系 C.多对一关系 D.一对一关系 11.深度为5的二叉树至多有C个结点。
A.16 B.32 C.31 D.10 12.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______A.详细设计 B.需求分析 C.总体设计 D.编程调试 二、2.填空题(12题)13. 执行以下程序后,输出‘#’号的个数是______include <stdio.h>main(){int i,j;for (i=1; i<5; i++)for(j=2;j<=i;j++)putchar('#');}14. 若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【 】15. 下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组bo请填空include<stdio.h>main(){ int a[10],b[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)______;for(i=0;i<9;i++){ if(i%4==0)printf("\n");printf("%3d",b[i]);}}16. 设有定义:struct{int a;float b;charc;} abc;*p_abc=&abc;则对结构体成员a的引用方法可以是abc.a和p_abc 【 】 a。
17. 若有以下程序:main(){ char a;a='H'-'A'+'0';printf("%c\n",a);}执行后的输出结果是【 】18. 常用的软件结构设计工具是结构图(SC),也称程序结构图其中,用矩形表示______,用带空心圆的箭头表示传递的是数据19. 下面程序的功能是调用sub函数计算数组a中字符串的长度,请填空sub(char s[]){ int n;for(n=0;【 】n++);return 【 】;}main(){ char*a;int k;gets(a);【 】printf("%d",k);20. 执行以下程序后的输出结果是【 】main(){ int a=10;a=(3*5,a+4); printf("a=%d\n",a);}21. 在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【 】22. 下列程序中的数组a包括10个整数元素,分别将前项和后项之和存入数组b,并按每行4个元素输出数组binclude<stdioh>main(){int a[10],b[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<9;i++)for(i;0;i<9;i++){if(i%4==0)primf("\n");printf("%3d",b[i];}}23. 有以下程序:int sub(int n) { return(n/10+n%10); }main(){ int x, y;scanf("% d", &x);y=sub(sub(sub(x)));printf("% d\n", y);}若运行时输入:1234<回车>,程序的输出结果是【 】。
24. 下列程序的运行结果是______main(){ int i,a[10];a[0]=a[1]=1;for(i=2;i<5;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<5;i++){ if(i%2==0) printf("\n");printf("%d",a[i]);}}三、3.程序设计题(10题)25. 请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)例如,若输入ABC4efG,则应输出aBc4efg注意:部分源程序给出如下请勿改动主函数miain和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include<conio.h>#include<stdio.h>#include<string.h> void fun(char *SS){}main(){char tt[81];clrscr();printf("\nPlease enter an string within 80characters:\n");gets(tt);printf("\n\nAfter changing,the string\n\%s",tt);fun(tt);printf("\nbecomes\n \%S\n",tt);}26. 请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270注意:要求n的值大于2但不大于100部分源程序给出如下清勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句[试题源程序] #include<math.h>#include<stdio.h>double fun(int n){}main(){int n;double sum;printf("\n\nInput n:");scanf("%d",&n);sum=fun(n);printf("\n\nsum=%f\n\n",sum);}27. 请编写函数fun(),它的功能是计算:s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5在C语言中可调用log(n)函数求ln(n)例如,若m的值为20,则fun()函数值为6.506583注意:部分源程序给出如下请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句试题程序:#include <conio. h>#include <stdio. h>#include <math.h>double fun(int m){}main (){clrscr ();printf ("%f\n ", fun (20));}28. 请编写一个函数fun(),它的功能是:根据以下公式求π的值(要求满足精度0.005,即某项小于0.005时停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1))程序运行后,如果输入精度0.0005,则程序输出3.14…注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include<conio.h>#include<math.h>double fun(double eps){}main(){double x;printf("Input eps: ");scanf("%1f", &x);printf("\neps=%1f,PI=%1f\n",x,fun(x));}29. 请编写一个函数,用来删除字符串中的所有空格例如:输入asd af aa z67,则输出为asdafaz67注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include<stdio.h>#include<ctype.h>#include<conio.h>int fun(char*str){}main(){char str[81];int n;clrscr();printf("Input a string:");gets(str);puts(str);fun(str);printf("*** Str: %s\n",str);}30. 假定输入的字符串中只包含字母和*号。
请编写函数 fun(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除例如,若字符串中的内容为*。
