[计算机类试卷]国家二级C语言机试(操作题)模拟试卷356.doc
计算机二级C语言考试模拟题包括答案.doc

2019 年 12 月计算机二级 C 语言考试模拟题及答案A.用户自己定义的函数只能调用库函数B. 实用的 C语言源程序总是由一个或多个函数组成C.不同函数的形式参数不能使用相同名称的标识符D.在 C语言的函数内部,能够定义局部嵌套函数参考答案: B参考解析: A 选项中,”用户自己定义的函数只能调用库函数”描述是不准确的,也能够调用自定义函数 ;C 选项中,对于不同函数的形式参数能够使用相同名称的标识符 ;D 选项中,关于函数的定义不能够嵌套,但函数的调用能够嵌套。
所以 B 选项准确。
2[ 单选题 ] 以下关于 C语言数据类型使用的叙述中错误的是( ) 。
A.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型B.若要保存带有多位小数的数据,可使用双精度类型C.若只处理“真”和“假”两种逻辑值,应使用逻辑类型D.整数类型表示的自然数是准确无误差的参考答案: C参考解析: C语言中没有逻辑类型,所以 c 错误。
若要保存带有多位小数的数据,能够用单精度类型也能够用双精度类型。
处理包含不同类型的相关数据能够定义为结构体类型。
整数类型能够无误差的表示自然数。
3[ 单选题 ] 下面选项中关于编译预处理的叙述准确的是A.预处理命令行必须使用分号结尾B.凡是以 #号开头的行,都被称为编译预处理命令行C.预处理命令行不能出现在程序的最后一行D.预处理命令行的作用域是到最近的函数结束处参考答案: B参考解析:本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A 选项错误,预处理命令行能够出现在程序的最后一行,预处理命令行作用域是整个文件。
4[ 单选题 ] 设--X 树共有 150 个结点,其中度为 l 的结点有 l0 个,则该---X 树中的叶子结点数为 ( ) 。
A.71B.70C.69D. 不可能有这样的二叉树参考答案: D参考解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中的度称为树的度。
国家二级C语言机试(操作题)模拟试卷363(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷363(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。
即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #include<stdlib.h>3 #define N 64 typedef struct node{5 int data;6 struct node *next;7 } NODE;8 void fun(NODE *h)9 { NODE *p,*q;int t;10 /**********found**********/11 p=___1__;12 while(p) {13 /**********found**********/14 q=__2__;15 while(q) {16 /**********found**********/17 if(p->data__3__q->data)18 { t=p->data;p->data=q->data;q->data=t;}19 q=q->next;20 }21 p=p->next;22 }23 }24 NODE *creatlist(int a[])25 { NODE *h,*p,*q;int i;26 h=(NODE *)malloc(sizeof(NODE));27 h->next=NULL;28 for(i=0;i<N;i++)29 { q=(NODE *)malloc(sizeof(NODE));30 q->data=a[i];31 q->next=NULL;32 if(h->next==NULL)h->next=p=q;33 else{p->next=q;p=q;}34 }35 return h;36 }37 void outlist(NODE *h)38 { NODE *p;39 p=h->next;40 if(p==NULL)printf(‘‘The list is NULL!\n’’);41 else42 { printf(‘‘\nHead’’);43 do44 {printf(‘‘->%d’’,p->data);p=p->next;}45 while(p!=NULL);46 printf(‘‘->End\n’‘);47 }48 }49 main( )50 { NODE *head;51 int a[N]={0,10,4,2,8,6};52 head=creatlist(a);53 printf(‘‘\nThe original list:\n’’);54 outlist(head);55 fun(head);56 printf(‘‘\nThe list after sorting:\n’’);57 outlist(head);58 }正确答案:(1)h->next (2)p->next (3)>=解析:函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序,在fun函数内采用的是选择法排序。
国家二级C语言机试(操作题)模拟试卷300(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷300(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。
所有学生数据均以二进制方式输出到文件中。
函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!试题程序:1 #include<Stdio.H>2 #define N 53 typedef struct student {4 long sno;5 char name[10];6 float score[3];7 }STU;8 void fun(char*filename,STU n)9 {FILE*fp;10 /*********found*********/11 fp=fopen(【1】,”rb+”);12 /*********found*********/13 fseek(【2】,-(long)sizeof(STU),SEEK END);14 /*********found*********/15 fwrite(&n,sizeof(STU),1,【3】);16 fclose(fP);17 }18 main( )19 {STU t[N]={{10001,”MaChao”,91,92,77},{10002,”CaoKai”,75,60,88},{10003,”LiSi”,85,70,78),{10004,”FangFang”,90,82,87},{10005,”ZhangSan”,95,80,88)};20 STU n={10006,”ZhaoSi”,55,70,68},SS[N];21 int i,j;FILE*fP;22 fp=fopen(“student.dat”,”wb”);23 fwrite(t,sizeof(STU),N,fp);24 fclose(fp);25 fp=fopen(“student.da”,”rb”);26 freacl(ss,sizeof(STU),N,fp);27 fclose(fp);28 print;f(“\nThe original data:\n\n”);29 for(j=0;j<N;j++)30 {printf(“\nNo:%ld Name:%一8s Scores:”,ss[j].sno,ss[j].name);31 for(i=0;i<3;i++)32 printf(“%6.2f”,ss[j].score[i]);33 printf(“\n”);34 }35 fun(“student.dat”,n);36 printf(“\nThe data after modif-ing:\n\n”);37 fp=fopen(“student.dat”,”rb”);38 fread(ss,Sizeof(STU),N,fp);39 fclose(fp);40 for(j=0;j<N;j++)41 {printf(“\nNo:%ld Name:%-8s Scores:”,ss[j].sno,ss[j].name);42 for(i=0;i<3;i++)43 printf(“%6.2f”,ss[j].score[i]);44 printf(“\n”);45 }46 }正确答案:(1)filename(2)fp(3)fp解析:填空1:本空是对文本文件的打开,filename所指的文件中的最后数据要进行重写,因此首先是要打开,因而本空填写filename。
国家二级C语言机试(操作题)模拟试卷480(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷480(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构! 试题程序:#include <stdio.h >#include <string.h >#define M 5#define N 20int fun(char(*ss)[N],int*n){ int i,k=0,fen=N;/*********found*********/ for(i=0;i <【1】;i++) { fen=str1en(ss[i]);if(i==0) *n=1en;/*********found*********/ if(fen【2】*n) {*n=fen;k=i;} }/*********found*********/ return(【3】);} main( ) {char ss[M][N]={“shang hai”,”guangzhou”,”beijing”,”tianjirig”,”chongqing”);int n,k,i ;printf(“\nThe original strings aEe:\n”);for(i=0;i <M;i++)puts(ss[i]);k=fun(ss,&n);printf(“\nThe length ofshortest string is:%d\n”,n);printf(“\nThe shortest string is:%s\n”,ss[k]);}正确答案:(1)M(2)<(3)k解析:本题考查:for循环语句的循环条件;if语句条件表达式;return语句完成函数值的返回。
国家二级C语言机试(操作题)模拟试卷6(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷6(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。
然后将文件的内容读出显示在屏幕上。
文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h>#include <stdlib.h>void WriteText(FILE *);void ReadText(FILE *);mairl( ){FILE *fP;if((fp=fopen(“myfile4.txt”,”w”))==NULL) { printf(“ open fail!!\n”);exit:(0);} WriteText(fp);fclose(fp);if((fp=fopen(“myfile4.txt”,”r”))==NULL) { printf(“open fail!!\n”);exit(0);} ReadText(fp);fclose(fp);}/**********found**********/void WriteText(FILE _____1_____){ char str[81];printf(“\nEnter string with -1 to end:\n”);get s(str);while(strcmp(str,”-1”)!=0) {/**********found**********/fput s(_____2_____,fw);fput s(“\n”,fw);gets(str);}}void ReadText(FILE *fr){ char str[81];printf(“\nRead file and output to screen:\n”);fgets(str,81,fr);while(!feof(fr)) {/**********found**********/printf(“%s”,____3____);fgets(str,81,fr);}}正确答案:(1)*fw(2)str(3)str解析:第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,fputs(“\n”,fw)是将字符“\n”写入文件,可知fw是文件指针名,因此第一空处应该是void WriteText(FILE*fw)。
国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷365(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:有N×N矩阵,将矩阵的外围元素顺时针旋转。
操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。
例如,若N=3,有下列矩阵: 1 2 3 计算结果为7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!1 #include<stdio.h>2 #define N 43 void fun(int(*t)[N])4 { int j,r[N];5 for(j=0;j<N;j++)r[j]=t[0][j];6 for(j=0;j<N;j++)7 /**********found**********/8 t[0][N-j-1]=t[j][__1__];9 for(j=0;j<N;j++)10 t[j][0]=t[N-1][j];11 /**********found**********/12 for(j=N-1;j>=0;__2__)13 t[N-1][N-1-j]=t[j][N-1];14 for(j=N-1;j>=0;j--)15 /**********found**********/16 t[j][N-1]=r[__3__];17 }18 main( )19 {int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;20 printf(‘‘\nThe original array:\n’’);21 for(2=0;i<N;i++)22 {for(j=0;j<N;j++)printf(‘‘%2d”,t[i][j]);23 printf(‘‘\n’’);24 }25 fun(t);26 printf(‘‘\nThe result is:\n’’);27 for(i=0;i<N;i++)28 { for(j=0;j<N;j++)printf(‘‘%2d’’,t[i][j]);29 printf(‘‘\n’’);30 }31 }正确答案:(1)0 (2)j-- (3)j解析:第一空:由审题分析可知,此处是使第一列成为第一行,即把第一列元素移动到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N-j-1]”,故第一空处应为“0”。
国家二级C语言机试(操作题)模拟试卷620(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷620(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.使用VC++2010打开考生文件夹下blank1中的解决方案。
此解决方案的项目中包含一个源程序文件blank1.c。
在此程序中,函数fun的功能是计算下式直到并将计算结果作为函数值返回。
例如,若形参e的值为1e-3,函数的返回值为2.985678。
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>double fun(double e){int i;double s,x;/*********found*********/s=0;i=【1】;x=1.0;while(x>e){/*********found*********/【2】;/*********found*********/x=(2.0*i-1)/((【3】)*(2.0*i));s=s+x;}return s;}main( ){double e=1e-3;printf(“\nThe result is:%f\n”,fun(e));}正确答案:(1)0(2)i++或++i或i+=1或i=i+1(3)2.0*i解析:填空1:循环变量i从1开始参加运算,但是在每次循环的开始i都进行自加1操作,故i应赋初值为0。
填空2:循环变量i自增1运算。
填空3:根据公式确定表达式通项。
注意x为double型,故应将i变为double型再进行运算。
程序修改题2.使用VC++2010打开考生文件夹下modi1中的解决方案。
此解决方案的项目中包含一个源程序文件modi1.c。
在此程序中,函数fun的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在w所指的数组中。
国家二级C语言机试(操作题)模拟试卷1(题后含答案及解析)

国家二级C语言机试(操作题)模拟试卷1(题后含答案及解析) 全部题型 2. 程序填空题 3. 程序修改题 4. 程序设计题程序填空题1.给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。
SS所指字符串数组中共有N个内容不同的字符串,且串长小于M。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>#include <string.h >#define N 5#define M 8int fun(char(*ss)[M],char *t){ int i;/**********found**********/for(i=0;i<____1____;i++)/**********found**********/if(Strcmp(ss[i],t)==0)return____2____;return -1;}main( ){ char ch[N][M]={“if”,”while”,”switch”,”int”,”for”},t[M];int n,i;printf(“\nThe original string\n\n”);for(i=0;i<N;i++)puts(ch[i]);printf(“\n”);printf(“\nEnter a string for search:”);gets(t);n=fun(ch,t);/**********found**********/if(n==____3____) printf(“\nDon’t found!in”);else printf(“\nThe position is %d.\n”,n);}正确答案:(1)N(2)i(3)-1解析:第一空:“fof(i=0;i<___1___;i++)”补充循环的结束条件,fun的参数(**ss)[M]是指向N行M列的字符串数组,循环是逐行查找是否存在t所指的字符串,因此循环次数是N次,故第一空处应为“N”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[计算机类试卷]国家二级C语言机试(操作题)模拟试卷356
一、程序填空题
1 给定程序中,函数fun的功能是:统计形参s所指字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。
例如,形参s所指的字符串为: abcdef35adgh3kjsdf7。
输出结果为:4。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include <stdio.h>
void fun (char *s, int *t)
{ int i,n;
n=0;
for(i=0; ____1____ !=0; 1++)
____3____ ;
}
main ( )
{ char s [80] ="abcdef35adgh3kj sdf7";
int t;
printf ( " \nThe original string
is:%s/n",s);
printf("\nThe result is : %d\n",t);
}
二、程序修改题
2 给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。
例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <stdio .h>
int fun (int *x,int y)
{
int t ;
return (y) ;
}
main ( )
{ int a =3,b= 8 ;
printf("%d %d\n",a,b);
b=fun (&a, b) ;
printf ("%d %d\n", a, b) ;
}
三、程序设计题
3 请编写函数fun,它的功能是:求出1到1000之间能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>
void fun (int *a,int *n)
{
}
main()
{int aa [1000], n, k ;
void NONO ();
fun (aa, &n);
for (k= 0 ; k< n ; k++)
if((k+1)00 10==0)printf("\n");
else printf ("%5d", aa [k]);
NONO();}
void NONO ()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。
*/ int aa[1000],n. k ;
FILE *fp;
fp= fopen ("out.dat","w");
fun (aa, &n);
for (k= 0 ,k< n ; k++)
if((k+1)00 10==0)fprintf( fp,"\n"); else fprintf (fp,"%5d",aa [k]); fclose( fp);
}。