西华大学C语言程序设计复习题.doc_第1页
西华大学C语言程序设计复习题.doc_第2页
西华大学C语言程序设计复习题.doc_第3页
西华大学C语言程序设计复习题.doc_第4页
西华大学C语言程序设计复习题.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计考试题型示例 & 复习例程一、单项选择题1以下四组变量标识符均为合法的是( B )。A)cosx_Value、CASE、sin(x)B)Sum_Value、x01_value、xxxC)a_b_c_01、FILE、x_01_yD)Num#、abc_01、X_value_A2设有二维数组定义:float a33 ; 假设&a00= =2001H,则&a22= =( C )。A)2010HB)2036HC)2021HD)2024H3设有整型变量x和y,且x=y=10;则计算表达式x=(x+ , y+) , x+y;后x的值为( D)A)11B)20C)22D)104如果要使用一维数组,其正确的定义是(D )A)int array ;B)const n=10, arrayn;C)int n, arrayn; cinn;D)int n=5, *array=new int n;5下述函数myfun的功能是( C ) int myfun(char s ,char t )(A)将字符串t复制到字符串s char *ps=s,*pt=t;(B)将串s连接到串t的尾部 while(*ps)ps+;(C)将串t连接到串s的尾部 whie(*pt)*ps+=*pt+;(D)将字符串s复制到字符串t*ps=0; 6下面的程序运行后的输出结果是( A )void swap(int *x,int *y)main( )int *t;int a=111,b=333;t=*x;*x=*y;*y=t;swap(&pa,&pb);coutatbendl;(A)111 333 (B)333 111 (C)111 111 (D)333 3337下面的程序运行后的输出结果是( A )int x=100;main( )void myfun( )int x=100;int i;myfun( );for(i=1;i=10;i+)x+;coutxendl;(A)100(B)110(C)0(D)随机值8程序段char str110=”Hello” , str210=”Hello!” ; if(strcmp( str1,str2 )puts(“Yes”) ; else puts(“No”); 的输出结果是( B)A)NoB)YesC)语法错误D)无输出结果9下面的程序段的输出结果是( B )int a33=11,22,33,44,55,66,77,88,99;int *p=a0+1;cout*pt*(*(a+1)+1)=10)break ; if(x%2)continue ; sum=sum+x ;A)6,10B)6,12C)7,10D)7,1215关于以下函数的功能,正确的描述是( C )void fun(int aC,int R)int i,j;A)输出矩阵全部元素for(i=0;iR;i+)B)输出矩阵上半三角for(j=0;ji)continue ; coutsetw(3)aij);D)没有什么输出结果coutendl;16在函数调用时,以下叙述中正确的是( A )A) 实参与其对应形参各占独立的存储单元B) 实参与其对应形参共占同一个存储单元C) 只有实参与其对应形参同名时才共占同一存储单元D) 形参是一种虚拟的参数,不占存储单元17若用数组名作为函数调用的实参,则实际传递给形参的是( A )A)数组首地址B)数组首元素C)数组全部元素D)数组元素个数18C语言中,函数形式参数的默认存储类别是( B )A)externB)autoC)registerD)static19下面的程序运行后的输出结果是( A )int x=100;main( )void myfun(int *p)int i,x=*p;myfun(&x);for(i=1;i=10;i+)x+;coutxnum;B)(p+1)-score;C)(*p).numD)p=&stu.score二、程序填空题1函数DecTo2816(int d,int r)的功能是将十进制整数d转换为r进制数的形式,实现方法是辗转除取余,将每次取得的余数转换为字符存入字符数组trans后反向输出。void DecTo2816(int d , int r)int res , i=0 ; char trans33=0;while(d)res=d%r;/取余数if(res=9)transi+= 0+res 【1】;/余数=0) put char(transi-) 【3】;/反向输出trans中的字符2本程序功能是将两个递增整数表LA=(3,5,8,11)和LB=(2,6,8,9,11,15,20)归并到新的整数表LC=(2,3,5,6,8,8,9,11,11,15,20)。整数表均采用单向链表存储。#includetypedef struct elem/链表结点类型intNode的定义int v;/数据域,存储整数struct elem *next;/指针域intNode;intNode *CreateList(intNode *Head , int n)/函数:创建能存储n个整数的链表intNode *pnew,*pend ; int i;/pnew用于创建新结点,pend为辅助指针for(i=1;ipnew-v;if(Head=NULL) Head=pnew 【4】;/若当前头指针为空,应赋什么值else pend-next=pnew;/新结点接入当前尾部结点之后pend=pnew ; pend-next=NULL; /pend更新,当前尾结点指针域赋空return(Head);/返回链表头指针/以下MergeList( )函数,归并LA、LB到LCintNode *MergeList(intNode *LA,intNode *LB,intNode *LC) intNode *pa=LA,*pb=LB,*pnew,*pend;while( pa&pb 【5】)/当pa与pb不为空时pnew=(intNode*)malloc(sizeof(intNode);/为LC创建新结点if(pa-vv)/若结点pa的v值小于或等于pb结点的v值pnew-v=pa-v;/LC的新结点的v赋值为pa结点的v值pa=pa-next;/当前结点处理完毕,pa指针下移else pnew-v=pb-v 【6】 ; pb=pb-next 【7】 ; if(LC=NULL)LC=pnew;/当前LC链表还为空else pend-next=pnew;pend=pnew ; pend-next=NULL;while(pa!=NULL)/如果LA比LB长,将剩余部分接入LCpnew=new intNode;pnew-v=pa-v ; pa=pa-next;pend-next=pnew ; pend=pnew ; pend-next=NULL;while(pb!=NULL)/如果LB比LA长,将剩余部分接入LCpnew=new intNode; Pnew-v=pb-v 【8】; pb=pb-next 【9】;pend-next=pnew ; pend=pnew ; pend-next=NULL; Return LC 【10】;/此函数应返回什么值void main(void)/以LA=(3,5,8,11)和LB=(2,6,8,9,11,15,20)为实例数据intNode *LA=NULL,*LB=NULL,*LC=NULL;LA= CreateList(la 4) 【11】;/创建链表LA LB=CreateList(LB 7) 【12】;/创建链表LBLC=MergeList(LA,LB,LC);/归并LA和LB到LC3以下函数功能是使用对分法在递增排序的整型数组a 中查找指定元素SearchNum,算法思想是:取数组的中点下标c,若ac=SearchNum则找到,若SearchNum ac,则查找范围缩小为右半,否则缩小为左半,依此循环直到查找范围不能再缩小为止。void BisectSearch(int a , int n)/n为数组长度,即元素个数int s=0 , e=n-1 , c;/s和e分别为查找范围的起点和终点下标,c为中点int flag=0 , SearchNum;/flag作为是否找到的标志,SearchNum待查找cinSearchNum;if(a0=SearchNum)/判断数组首元素coutFount it: a0=SearchNum ; return;if(an-1=SearchNum)/判断数组尾元素coutFound it: an-1=SearchNum ; return;while( el=(s+1) 【13】)/e=s+1时,查找范围不能再缩小c=(s+e)/2;/取数组的中点下标if(ac=SearchNum) flag=1 【14】; break 【15】; else if(acSearchNum) s=c 【16】;/更新s还是e?else e=c 【17】;/更新s还是eif(flag=1)coutFount it! ac=ac);else coutNot found!endl;4下列函数LocateSubString(char *s , char *t)的功能是在字符串s中定位字符串t并返回首次出现的位置(又称模式匹配,s称目标串,t称模式串)。char *LocateSubString(char *s,char *t)int s_len=strlen(s) , t_len=strlen(t);/求串s和t的长度char *ps=s,*pt=t , *pa;/ps和pt分别指向s和t的首字符,pa为辅助指针int flag=0;/标志变量,找到t为1,否则为0while(ps= s+s 【18】)/ps指针最多只能移动到什么地方?pa=ps ;pt=t;/为本轮匹配运算做准备工作while(*pt!=0)/pt指针往下移动直到串尾if(*pa=*pt)/如果对应字符相等,如何处理?flag=1; pa+ 【19】; pt+ 【20】;else/对应字符不相等,也就是不匹配flag=0 ; break;/不匹配,提前结束内层循环/while内层循环if(flag=1)break;/上面的内层循环结束,flag=1说明找到了子串telseps+;/本轮结束后,没找到子串t,ps下移一个字符/while外层循环if(flag=1) return ps;/当前ps即子串t首次出现的位置else return 0;/返回空串三、编制程序题1编写一个函数sort(int a,int n),实现任意长度一维整型数组的元素排序,在main( )中完成一维数组的定义和初始化,调用sort( )函数后输出排序的结果。2编程实现:求119999之间的m,使满足m、m2、m3均为回文数。例如121、1221、43634等即为回文数。要求将求得的m存储到一个动态数组之中并输出。四、参考例程1.简单的学生成绩管理演示程序/文件包含及命名空间的使用语句,此处省略/结点类型定义typedef struct studentint ID;char name16;float score;struct student *next;StuNode;/存储文件的函数void SaveFile(StuNode *Head)int k=0;if(Head=NULL)cout链表为空,无法存储文件!next;outfile.close();cout创建结点数=kendl;/读取文件的函数StuNode *ReadFile()int k=0;StuNode *Head=NULL,*pnew=NULL,*paid=NULL;ifstream infile;infile.open(.Stu.dat,ios:in);if(infile.fail()cout文件不存在,打开失败!next=NULL;infile.read(char*)pnew,sizeof(StuNode);if(infile.tellg()next=NULL;elsepaid-next=pnew;paid=pnew;paid-next=NULL;/while,读文件结束infile.close();cout读取结点数=kendl;return Head;/创建学生信息链表的函数StuNode *CreateList(StuNode *Head)StuNode *pnew,*paid,*ps,*pe;cout开始创建学生链表,输入学号为0或负则停止:next=NULL;coutpnew-ID;if(pnew-ID=0)delete pnew;break;coutname,15);coutpnew-score;if(Head=NULL)Head=pnew;pnew-next=NULL;paid=pnew;elseif(pnew-IDID)pnew-next=Head;Head=pnew;else if(pnew-ID=paid-ID)pai

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论