
2022-2023学年山西省大同市全国计算机等级考试C语言程序设计真题(含答案).docx
30页2022-2023学年山西省大同市全国计算机等级考试C语言程序设计真题(含答案)学校:________ 班级:________ 姓名:________ 考号:________一、单选题(12题)1.就平均查找速度而言,下列查找速度从慢至快的关系是()A.顺序折半哈希分块 B.顺序分块折半哈希 C.分块折半哈希顺序 D.顺序哈希分块折半 2.下列选项中非法的字符常量是( )A.'\t' B.'\039' C.',' D.'\n ' 3.用树形结构来表示实体之间联系的模型称为( )A.关系模型 B.层次模型 C.网状模型 D.数据模型 4. 有以下程序: int *f(int *x,int *y) {if(*x<*y)return x; else return y; } main() { int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q); printf("%d,%d,%d\n",*p,*q,*r); } 程序运行后输出结果是______A.7,8,8 B.7,8,7 C.8,7,7 D.8,7,8 5.有以下程序:#include <stdio.h>main(){ int x=0x9;printf(“%c\n”, ‘A’+x);}程序运行后的输出结果是()。
A.I B.J C.K D.H 6. 已知int a=2,b=3;则执行表达式a=a<b后,变量a的值为( )A.0 B.1 C.2 D.3 7.下列程序的输出结果是( )included stdi0.h>#included string.h>void fun(int b[]){ static int i=0;do { b[i]+=b[i+1]; }while(++i<2);}main{ int k,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]); }A.13579 B.48579 C.48549 D.48999 8.下述程序的运行结果是( )included stdio.h>#included strin9.h>main{ char*s1="abDuj";char*s2="ABdUG";int t;t=strcmp(s1,s2);printf("%d",t);}A.正数 B.负数 C.零 D.不确定的值 9.执行下列程序后,输出的结果是( )include
A.-1 B.0 C.1 D.7 11.有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;A.A.a[p-a] B.*(&a[i]) C.p[i] D.*(*(a+i))12. 下列程序段的输出结果是( ) char a=9,b=020; prihtf("%o\n",~a&b<<1);A.100000 B.8 C.40 D.77 二、2.填空题(12题)13. 下列程序的输出结果是______main(){ int a[]= {31,27,20,12,6,1},*p=a;p++;printf("%d\n",*(p+2));}14. 以下程序的输出结果是【 】 #include
16. 下面程序的功能是将一个字符串str的内容倒序,请填空inelude <stdio.h>#include <strins.h>main(){ int i,j,【 】;charstr[]={"1234567"};for(i=0,j=strlen(str) 【 】;i<j; i++,j--){ k=str[i];str[i]=str[j];str[j]=k;}printf("%s\n",str);}17. 以下程序的输出结果是【 】int a=1234;printf("%2d\n",a);18. 数据结构分为逻辑结构与存储结构,线性链表属于【】19. 若a是int型变量,则表达式(a=2*3,a*2),a+6的值为 ______20. 下面程序的输出是【 】main(){ int a[]={2,4,6},*ptr=&a[0],x=8,y,z;for(y=0;y<3;y++) z=(*(ptr+y)<x)?*(prt+y):x;printf("%d\n",z);}21. 下列程序的输出结果是【 】define PR(a)printf("%d\t",(int)(a))#define PRINT(a)PR(a);printf("ok!")main(){ int i,a=1;for(i=0;i<3;i++)PRINT(a+i);printf("\n");}22. 顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
23. 以下程序的输出结果是【 】include<stdlib.h>main(){ char *s1,*s2,m;s1=s2=(char*)malloc(sizeof(char));*s1=15; *s2=20; m=*s1+*s2;printf("%d\n",m);}24. 下面程序的功能是将一个字符串str的内容颠倒过来,请填空 #include 请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include <stdio.h>#include <stdlib.h>#define N 8struct slist{ double s;struct slist *next;};typedef struct slist STREC;double fun(STREC *h){}STREC * creat (double *s){STREC *h, *p, *q;int i=0;h=p=(STREC*)malloc(sizeof(STREC));p->s=0;while(i<N)/*产生8个节点的链表,各分数存入链表中*/{q=(STREC*) malloc(sizeof(STREC));p->s=s[i]; i++; p->next=q; p=q;}p->next=0;return h; /*返回链表的首地址* /}outlist (STREC *h){STREC *p;p=h->next;printf("head");do{printf("->%2.0f ",p->s);p=p->next;}/*输出各分数* /while (p!=0);printf("\n\n ");}main(){double s[N]={85,76,69,85,91,72,64,87},max;STREC *h;h=creat(s);outlist(h);max=fun (h);printf("max=%6.1f\n ",max);}27. 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从0到p(p≤n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为1,2,3,4,5,6,7, 8,9,10,11,12,13,14,15,p的值为3移动后,一维数组中的内容应为5,6,7,8,9,10,11,12,13,14,15, 1, 2, 3, 4注意:部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句试题程序:#include <stdio.h>#define N 80void fun(int *w, int p, int n){}main (){int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};int i, p, n=15;printf("The original data:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnter p: ");scanf("%d",&p);fun(a,p,n);printf("\nThe data after mo。
