已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
模拟一一、单选题1、有以下程序段char ch; int k;ch=a; k=12;printf(%c,%d,ch,ch,k); printf(k=%dn,k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是_a,97,k=12_。2、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,程序如下:main() int n,k; float score,sum,ave; sum=0.0; for(n=1;n=10;n+) for(k=1;knext=&c; q-next=p-next;B:p.next=q; q.next=p.next;C:a.next=c; c.next=b;D:(*p).next=q; (*q).next=&b; 本题考的是指针的运用。 答案为D,即先将元素a的指针指向q指针所指向的元素即c,然后将c的指针指向b元素,采取的是直接取元素地址的方式。本题答案为D。6、有以下程序段 int k=0; while(k=1)k+;while循环执行的次数是_无限次_。 乍一看,还以为程序要表达的意思是当k等于1的时候做k+,但是C语言里关系表达式的等于应该是=。一个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=1的值总为1,while后面的表达式恒为真,当然会进入死循环。本题答案为A。7、有如下程序:long fib(int n)if(n 2)return (fib(n-1) + fib(n - 2);elsereturn (2);main()printf(%dn,fib(3);该程序的输出结果是_D_。A:8B:6C:2D:4 本题的考查点是函数的递归调用。函数fib内部有两个递归调用,当n = 3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1) + fib(n - 2)的值为4。8、若有定义:int *p3;,则以下叙述中正确的是_B_。A:定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素B:定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C:定义了一个名为*p的整型数组,该数组含有三个int类型元素D:定义了一个基类型为int的指针变量p,该变量具有三个指针 本题的考查点是指针数组。 一个数组,其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都是指针变量。 int *p3表示此数组是指针类型的,每个数组元素(指针变量)都可指向一个整型的指针变量。故本题答案选B。9、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是_C_。A:if(yy & y!=0);C:if(x0) x- else y+;D:if(x+);本题考查的是if语句。if是C语言关键字,表达式两侧的圆括号不可少,最后是一条语句或是用花括号括起来的一组语句。选项A和B是在表达式后跟了一条空语句,选项D是在表达式后跟了一组空语句,选项C中x-是表达式而不是语句,所以在编译时会出现错误信息。10、以下函数返回a所指数组中最小值所在的下标值。fun(int *a,int n)int i,j = 0,p;p = j;for( i = j; i n; j+)if(ai ap)_;return(p);在下划线处应填入的是_C_。A:i=PB:ap=aiC:p=iD:p=j本题的考查点是求数组中的最小元素。 函数要求返回数组中最小值所在的下标值,而变量p的值就是函数的返回值,所以p为最小值所在的下标,循环比较数组中的值,将小值的下标赋给变量p,横线上应填入p=i。11、有以下程序#include main() int n, *p=NULL; *p=&n; printf(Input n:); scanf(%d,&p); printf(output n:); printf(%dn,p);该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是_B_。A:scanf(%d,&p)B:int n , *p=NULL;C:printf(%dn,p);D:*p=&n;本题考查的是指针的赋值。*p代表存储单元的值,而&n代表的是变量n的地址,将一个地址赋给一个值是不正确的,所以选项B错误;指针p代表存储单元的地址,前面不需要再加&,所以选项C错误;选项D是将一个地址进行输出,所以也是错误的。除了给指针变量赋地址值外,还可以给指针变量赋NULL值12、有以下程序main() char a7=a00a00; int i,j; i=sizeof(a); j=strlen(a); printf(%d %dn,i,j); 程序运行后的输出结果是_A_。A:7 2B:7 6C:2 2 D:6 2 本题考查的是字符串函数的使用。 C语言中以0作为字符串的结束符,且strlen()函数计算的是0字符前的所有字符的个数。故本题中strlen(a)应为2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组所分配到的内存空间的大小。所以本题的sizeof(a)为7。13下列关于单目运算符+、-的叙述中正确的是_D_。A:它们的运算对象可以是char型变量和int型变量,但不能是float型变量B:它们的运算对象可以是任何变量和常量C:它们的运算对象可以是int型变量,但不能是double型变量和float型变量D:它们的运算对象可以是char型变量、int型变量和float型变量 本题的考查点是自增、自减运算符。自增、自减运算符的作用是使变量的值增1或减1,只能用于变量,包括char型变量、int型变量和float型变量,而不能用于常量或表达式。14、有以下结构体说明和变量定义,如下图所示,指针p、q、r分别指向一个链表中的三个连续结点。struct node int data; struct node *next;*p,*q,*r; data next data next data next p q r现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是_C_。A:p-next=r;q-next=r-next;r-next=p;B:q-next=r-next;p-next=r;r-next=q;C:r-next=q;q-next=r-next;p-next=r;D:q-next=r-next;r-next=q;p-next=r;本题的考查点是指向结构体变量的指针以及用指针处理链表。 一个结构体变量的指针就是该变量所占据的内存字段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组的元素。 在C语言中,q-next相当于(*q).next。即:q所指向的是结构体变量中的next成员。 链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它根据需要开辟内存单元。链表中的各元素在内存中可以不是连续存放的。所以必须利用指针变量才能实现。即:一个结点中应包括一个指针变量,用它存放下一结点的地址。 r-next=q表示让q指向新开辟的结点,r指向链表中最后一个结点,把r所指的结点连接在q所指的结点后面。同样,p-next=r表示让r指向新开辟的结点,p指向链表中最后一个结点,把p所指的结点连接在r所指的结点后面。那么在A中,执行r-next=q后,r-next指向了q。此时第2句相当于q-next=q;所以q的下一个结点指向了自己,而不是指向原来r的下一个结点。15、若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是_-12_。 C语言中对赋值运算的运算顺序是自右向左。本题中,计算a*a之后,a的值依然为3,表达式a*a的值为9;a-=9,a=3-9=-6;a+=-6,a=-6+-6=-12。二、填空题16、以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。void fun(int,int,int(*)4,int *);main() int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i; fun(3,4,a,b); for(i=0;i3;i+) printf(%4d,bi); printf(n);void fun(int m,int n,int ar4,int *br) int i,j,x; for(i=0;im;i+) x=ari0; for(j=0;jn;j+) if(xarij) x=arij; _=x; 本题考查的是循环的嵌套。本题定义了二维数组a存放3行4列的数组元素,定义了一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大的数据,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则循环4次,并求出了这一行的最大值x,最后将每一行求出的最大值x赋给存放最大值的数组br,故本题答案为bri 或 *(br+i)。17、先有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:#include #include myfun.cmain() fun(); printf(n); myfun.c文件如下:void fun() char s80,c; int n=0; while(c=getchar()!=n) sn+=c; n-; while(n=0) printf(%c,sn-);当编译连接通过后,运行程序T18时,输入Thank!则输出结果是_。 本题考查的是文件包含处理功能。文件包含处理是指一个源文件可以将另外一个源文件的全部内容包含进来,供源文件使用。此题中myfun.c就是被包含在T18.c下进行编译。myfun.c文件是用来实现字符串反序的功能,用getchar()函数输入字符并赋给数组s,每输入一个字符,数组下标n自行加1,直到遇到回车键时输入结束。while(n=0)下的条件语句就是来实现字符串反续功能的。18、 函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,当st返回正值,当st时返回负值。请填空。mycmp( char *s,char *t) while (*s=*t) if (*s=0)return 0; +s;+t; return(_); 本题的考查点是比较字符串的大小。 函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数组s和t的第一个字符,在while循环中,是通过s和t值的不断变化改变两个串的第一个字符,要返回s和t的第一个不同字符的ASCII码的差值,必须使用*s-*t得出。故本题答案为:*s-*t。19、以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。main() int x,y,z,max,*px,*py,*pz,*pmax; scanf(%d%d%d,&x,&y,&z); px=&x; py=&y; pz=&z; pmax=&max; _; if(*pmax*py) *pmax=*py; if(*pmax*pz) *pmax=*pz; printf(max=%dn,max);本题考查的是指针变量的应用。题目中定义了4个指针,分别指向变量的地址。假设x中的值最大,根据题目中的if语句是将pmax指向的存储单元的值与另两个数值比较,由px=&x;可知*px代表的就是存储单元(x)的值,所以答案填:*pmax=*px。20、以下程序运行后的输出结果是_。#define S(x) 4*x*x+1main() int i=6,j=8; printf(%dn,S(i+j); 本题考查的是宏定义。带参数的宏定义是按#define命令行中指定的字符串从左到右进行转换。本题中替换的式子为:4*i+j*i+j+1,代入i,j的值得81。21、下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。 #include stdio.h FILE *fp; main() char ch; if(fp=fopen(_)=NULL)exit(0); while( (ch=getchar()!=)fputc(ch,fp); fclose(fp); “bi.dat”,”w”或“bi.dat”,“w+”或“bi.dat”a+”22、以下程序的输出结果是 。main() int a=0; a+=(a=8); printf(%dn,a); 本题的考查点是表达式。 表达式a+=8相当于a=a+8,对表达式逐步求解过程如下: a+=(a+8)此时,a的值赋值为8,而不再是0; a+=8 a=a+8 a=16故本题答案为16。23、以下程序运行后的输出结果是_。main() int x=1,y=0,a=0,b=0; switch(x) case 1:switch(y) case 0:a+; break; case 1:b+; break; case 2:a+;b+; break; printf(%d %dn,a,b);本题考查的是switch语句。 解题过程:(1)x=1则,switch(y)(2)因为y=0 所以:case 0:a+;break; 结果a=1 (3)继续switch(x),case 2;结果 a=2,b=1(4)输出结果a=2,b=1 又因输出格式两个%d之间是空格,所以输出的两个数字之间也必为空格。(2 1)24、若要使指针p指向一个double类型的动态存储单元,请填空。 p=_malloc(sizeof (double);(double*)25、若要使指针p指向一个double类型的动态存储单元,请填空。p = _malloc(sizeof(double);(double*)26、 在考生文件夹下的给定程序modi44.c中,fun函数的功能是:将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!Modi44。C程序:#include #include #include fun(int n,int *a)int i,j,p,t; for (j=0;jn-1;j+) p=j;/*found*/ for (i=j+1;iai)/*found*/ t=i; if (p!=j) t=aj;aj=ap;ap=t; putarr(int n,int *z)int i; for (i=1;i=n;i+,z+) printf(%4d,*z); if (!(i%10) printf(n); printf(n);main() int aa20=9,3,0,4,1,2,5,6,8,10,7,n=11; system(cls); printf(nnBefore sorting %d numbers:n,n);putarr(n,aa); fun(n,aa); printf(nAfter sorting %d numbers:n,n);putarr(n,aa); 本题着重考察考生对C语言中一些简单算法的掌握情况。 本题中的第一个错误:程序中外循环的循环次数少了一次,导致数列不能正确排序,所以应将程序中的语句for(i=j+1;in-1;i+)改为for(i=j+1;in;i+)或相同作用的语句。 本题中的第二个错误:程序中变量t是作为中间变量交换数据用的,变量p是用来记录较小值的,所以应将程序中的语句t=i;改为p=i;。 本评析仅作参考。27、 请编写一个函数fun,它的功能是:求出一个2M整型二维数组中最大元素的值,并将此值返回调用函数。 注意:部分源程序存在考生文件夹下的文件prog65.c中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。Prog65。C#define M 4#include fun (int aM)main() int arr2M=5,8,3,90,76,-4,12,82; printf(max=%dn,fun(arr); NONO( ) ;NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *wf ; int arrM=5,8,3,90,76,-4,12,82 ; wf = fopen(bs08.out,w) ; fprintf(wf, max=%dn, fun(arr) ; fclose(wf) ;本题的考核点是二维数组、循环语句的嵌套。 解题思路:先用一个变量记录二维数组的第一个元素,然后通过嵌套的循环语句依次将数组中的其他元素与这个变量作比较,如果大于它则交换两者的值。 本评析仅供参考。fun (int aM) int i,j,base; base=a00; /*将二维数组的第一个元素赋给变量base,该变量是存放数组中最大元素的值*/ for(i=0;i2;i+) /*设置循环变量*/ for(j=0;jM;j+) if(baseaij) /*依次将数组中的元素与base作比较*/ base=aij; /*二维数组中最大元素的值*/ return base; /*返回最大值*/28、给定程序功能是用冒泡法对6个字符串进行排序。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的blank6.c中。 不得增行或删行,也不得更改程序的结构!Blank6。C#include #define MAXLINE 20fun ( char *pstr6)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省上半年普法考试考试试题
- 2013护士资格证考试真题《实践能力》
- 工程类试卷土地规划管理练习试卷6及答案与解析
- 多媒体技术复习答案
- 导游考试历年真题(2021年)及答案
- 上海市安全员C3证考试题及解析
- 2025年安全生产管理人员考试真题及答案
- 2025年围产医学多胎妊娠管理真题解析
- 出纳人员入职考核试卷
- 2025年安全员B证考试试卷附答案详解【满分必刷】
- 共享菜园创业路演
- 气象基础知识讲解
- 网约车租赁合同简单范本
- 精装修装饰工程投标书
- 中试平台管理制度
- 蛋鸡养殖场管理方案
- 如何当好教务主任培训
- 第四讲大力推进现代化产业体系建设-形势与政策
- 中国咳嗽基层诊疗与管理指南(2024年)解读
- 中国急性缺血性卒中诊治指南(2023版)
- 《智慧物流与供应链基础》课程标准(含课程思政)
评论
0/150
提交评论