《西华大学C语言程序设计复习题90.pdf》由会员分享,可在线阅读,更多相关《西华大学C语言程序设计复习题90.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.C 语言程序设计考试题型示例&复习例程 一、单项选择题 1以下四组变量标识符均为合法的是(B)。A)cosx_Value、CASE、sin(x)B)Sum_Value、x01_value、xxx C)a_b_c_01、D)Num#、abc_01、X_value_A 2设有二维数组定义:float a33;假设&a00=2001H,则&a22=(C)。A)2010H B)2036H C)2021H D)2024H 3设有整型变量 x 和 y,且 x=y=10;则计算表达式 x=(x+,y+),x+y;后 x 的值为(D)A)11 B)20 C)22 D)10 4如果要使用一维数组,其正确的定义
2、是(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 s*x,int*y)main()int
3、*t;int a=111,b=333;t=*x;*x=*y;*y=t;s);coutatbendl;(A)111 333 (B)333 111 (C)111 111 (D)333 333 7下面的程序运行后的输出结果是(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
4、(“No”);的输出结果是(B)A)No B)Yes C)语法错误 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,10 B)6,12 C)7,10 D)7,12 15关于以下函数的功能,正确的描述是(C)void fun(int aC,int R)int i,j;A)输出矩阵全部元素 for(i=0;iR;i+)B)输出矩阵上半三角 for(j=0;ji)continue;coutse
5、tw(3)aij);D)没有什么输出结果 coutendl;.16在函数调用时,以下叙述中正确的是(A )A)实参与其对应形参各占独立的存储单元 B)实参与其对应形参共占同一个存储单元 C)只有实参与其对应形参同名时才共占同一存储单元 D)形参是一种虚拟的参数,不占存储单元 17若用数组名作为函数调用的实参,则实际传递给形参的是(A )A)数组首地址 B)数组首元素 C)数组全部元素 D)数组元素个数 18C 语言中,函数形式参数的默认存储类别是(B )A)extern B)auto C)register D)static 19下面的程序运行后的输出结果是(A )int x=100;main(
6、)void myfun(int*p)int i,x=*p;myfun(&x);for(i=1;i=10;i+)x+;coutxnum;B)(p+1)-score;C)(*p).num D)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+
7、=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)。整数表均采用单向链表存储。#include typedef struct elem /链表结点类型 intNode 的定义 int v;/数据域,存储整数 struct elem*next;/指针域 intNode;intNode*CreateList(intNode*Head,int n)/函数:创建能存
8、储 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 到 LC intNode*MergeList(intNode*LA,intNode*LB,intNod
9、e*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
10、pend-next=pnew;pend=pnew;pend-next=NULL;.while(pa!=NULL)/如果 LA 比 LB 长,将剩余部分接入 LC pnew=new intNode;pnew-v=pa-v;pa=pa-next;pend-next=pnew;pend=pnew;pend-next=NULL;while(pb!=NULL)/如果 LB 比 LA 长,将剩余部分接入 LC pnew=new intNode;Pnew-v=pb-v 【8】;pb=pb-next 【9】;pend-next=pnew;pend=pnew;pend-next=NULL;Return LC 【
11、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】;/创建链表 LB LC=MergeL ist(LA,LB,LC);/归并 LA 和 LB 到 LC 3以下函数功能是使用对分法在递增排序的整型数组 a 中查找指定元素SearchNum,算法思想是:取数组的中点下标 c,若 ac=SearchNum 则找到,若 Sea
12、rchNum 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:
13、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 还是 e if(flag=1)coutFount it!ac=ac);else coutNot found!endl;4下列函数 LocateSubString(char*s,char*t)的功能是在字符串 s 中定位字符串 t 并返回首次
14、出现的位置(又称模式匹配,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,否则为 0 while(ps=s+s 【18】)/ps 指针最多只能移动到什么地方?pa=ps;pt=t;/为本轮匹配运算做准备工作 while(*pt!=0)/pt 指针往下移动直到串尾 if(*pa=*pt)/
15、如果对应字符相等,如何处理?flag=1;pa+【19】;pt+【20】;else /对应字符不相等,也就是不匹配 flag=0;break;/不匹配,提前结束内层循环 /while 内层循环 if(flag=1)break;/上面的内层循环结束,flag=1 说明找到了子串 t else ps+;/本轮结束后,没找到子串 t,ps 下移一个字符 /while 外层循环 if(flag=1)return ps;/当前 ps 即子串 t 首次出现的位置 else return 0;/返回空串 三、编制程序题 1编写一个函数 sort(int a,int n),实现任意长度一维整型数组的元素排序,
16、在main()中完成一维数组的定义和初始化,调用 sort()函数后输出排序的结果。2 编程实现:求 119999 之间的 m,使满足 m、m2、m3 均为回文数。例如 121、1221、43634 等即为回文数。要求将求得的m 存储到一个动态数组之中并输出。四、参考例程 1.简单的学生成绩管理演示程序/文件包含及命名空间的使用语句,此处省略./结点类型定义 typedef struct student int ID;char name16;float score;struct student*next;StuNode;/存储文件的函数 void Save*Head)int k=0;if(He
17、ad=NULL)cout链表为空,无法存储文件!next;out();cout创建结点数=kendl;/读取文件的函数 StuNode*ReadFile()int k=0;StuNode*Head=NULL,*pnew=NULL,*paid=NULL;ifstream infile;in(.Stu.dat,ios:in);if(in()cout文件不存在,打开失败!next=NULL;in(char*)pnew,sizeof(StuNode);if(in()next=NULL;else paid-next=pnew;paid=pnew;paid-next=NULL;/while,读文件结束 i
18、n();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;else if(pnew-IDID)pnew-next=Head;Head=p
19、new;else if(pnew-ID=paid-ID)paid-next=pnew;pnew-next=NULL;paid=pnew;else ps=Head;pe=ps-next;while(pnew-ID=pe-ID)ps=ps-next;pe=pe-next;ps-next=pnew;pnew-next=pe;return Head;/输出链表的函数 void PrintList(StuNode*Head)(省略)/主函数 void main()StuNode*Head=NULL;.Head=CreateList(Head);Save);Head=ReadFile();PrintLis
20、t(Head);system(pause);一、选择题参考答案 15:BCDDC 610:AABBC 1115:BDADC 1620:AABAD 二、程序填空题参考答案【1】0+res 【2】A+res%10【3】putchar(transi-)【4】Head=pnew【5】pa&pb 【6】pnew-v=pb-v【7】pb=pb-next 【8】pnew-v=pb-v【9】pb=pb-next 【10】return LC【11】CreateList(LA,4)【12】LB=CreateList(LB,7)【13】e!=(s+1)【14】flag=1【15】break 【16】s=c【17】e=c 【18】s+s_len-t_len【19】pa+【20】pt+