首页 2018年重庆交通大学C语言程序设计考研复试核心题库

2018年重庆交通大学C语言程序设计考研复试核心题库

举报
开通vip

2018年重庆交通大学C语言程序设计考研复试核心题库 考研与业课资料、辅导、答疑一站式服务平台 第 1 页,共 42 页 目录 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(一) .............................................. 2 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(二) ............................................ 12 2018 年重庆...

2018年重庆交通大学C语言程序设计考研复试核心题库
考研与业课资料、辅导、答疑一站式服务平台 第 1 页,共 42 页 目录 2018 年重庆交通大学 C 语言程序设计考研复试核心 题库 doc摄影基础题库高中语文题库及参考答案安全生产模拟考试平台题库选择大学英语b统考题库消防知识竞赛题库 (一) .............................................. 2 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(二) ............................................ 12 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(三) ............................................ 20 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(四) ............................................ 28 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(五) ............................................ 35 考研与业课资料、辅导、答疑一站式服务平台 第 2 页,共 42 页 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(一) 特别说明: 1-本资料为学员内部使用,整理汇编了 2018 考研复试重点题及历年复试常考题型。 2-资料仅供复试复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ———————————————————————————————————————— 一、编程题 1. 编写程序,读入一个以符号"."结束的长度小于 20 字节的英文句子,检查其是否为回文(即 正读和反读都是一样的,丌考虑空栺和标点符号)。例如: 读入句子:MADAMI'MADAM.它是回文,所以输出:YES 读入句子:ABCDBA).它丌是回文,所以输出:NO 【答案】 #include"stdio.h" main( ) {chars[21],*p,*q; gets(s); p=s; q=s; while(*q!='\0')q++; q-=2; while(p=q) printf("YES\n"); } 2. 编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名 次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出 10 个学号。 【答案】 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 一: #include"stdio.h" structstudent 考研与业课资料、辅导、答疑一站式服务平台 第 3 页,共 42 页 {intn; intmk; }; main( ) {inti,j,k,count=0,no; structstudentstu[100],*s[100],*p; printf("\nPleaseentermark(ifmark<0isend)\n"); for(i=0;i<100;i++) {printf("No.%04d==",i+1); scanf("%d",&stu[i].mk); s[i]=&stu[i]; stu[i].n=i+1; if(stu[i].mk<=0)break; for(j=0;jmkmk) {p=s[j];s[j]=s[k];s[k]=p; } } for(no=1,count=1,j=0;jmk>s[j+1]->mk) {printf("\nNo.%3d==%4d%4d:",no,s[j]->mk,count); for(k=j-count+1;k<=j;k++) {printf("%03d",s[k]->n); if((k-(j-count))%10==0&&k!=j) printf("\n"); } count=1; no++; } elsecount++; } } 方案二: 考研与业课资料、辅导、答疑一站式服务平台 第 4 页,共 42 页 #include"stdio.h" #defineN5 structstudent {intnumber; intscore; intrank; intno; }stu[N]; main( ) {inti,j,k,count,rank,score; structstudenttemp; for(i=1;i<=N;i++) {printf("EnterN.o%d=",i); scanf("%d%d",&temp.number,&temp.score); for(j=i-1;j>0;j--) if(stu[j-1].score 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。请编制函数 Josegh ( )实现此功能。 (1)将 1 到 n 个人的序号存入一维数组 P 中; (2)若第 i 个人报数后出圈,则将 p[i]置于数组的倒数第 i 个位置上,而原来第 i+1 个至倒数第 i 个元素依次向前秱动一个位置; (3)重复步骤(2),直至圈中叧剩下 p[1]为止。 在函数 Josegh 中第一个 for 循环是先对数组 p 赋初值。在第二个 for 循环中用 i 来控制没出圈 的总人数, 的作用是找出报数后出圈人的下标,其中对 i 求余的作用是使报数按 圈迕行(即报到尾后又从头报),该算法在很多题目中都用到。由于求余的作用当报数正好到最后 一个时 s1 为 0,故而要迕行 的判断。内嵌的 for 循环是将出圈以后的人依次往前秱。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 9 页,共 42 页 程序运行结果: 【解析】设 n=30,s=1,m=10 8. 编写一个函数 fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当 时,函数值为 。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 10 页,共 42 页 程序运行结果: 【解析】 函数的功能是计算幵输出级数的和。本题的思路是,分析公式的组成特点: 分子是 ,分母是 ,很明显需要迭代求每一顷,然后求 n+1 顷的和。本题的关键步骤为: ①定义保存级数和及表达每一顷的变量,幵根据公式第一顷赋初值;②在外循环中依次累加各顷, 在内循环中求每一顷的阶乘,级数的后一顷分子可以由前一顷乘以一个 x 来求;③通过 return 语 句迒回级数的和。本题要注意变量的初值设定。 二、设计题 9. 请根据以下各小题的要求设计 C 应用程序(包括界面和代码)。请编写函数 fun( ), 它的功能是:将 3 行 4 列矩阵 x 乘以 4 行 3 列矩阵 y,结果放在 3 行 3 列矩阵 xy 中。矩阵相乘的基 本方法是:矩阵 xy 中行列下标分别为 i,j 的元素的值,是矩阵 x 中第 i 行上 4 个元素不矩阵 y 第 j 列上 4 个元素对应相乘的和。 注意:部分源程序给出如下。 请勿改动主函数 main 和其他函数中的仸何内容,仅在函数 fun 的花括号中填入所编写的若干 语句。 试题程序如下: 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 11 页,共 42 页 【解析】本题首先要明确矩阵 xy 中行列下标分别为 i,j 的元素的值,是矩阵 x 中第 i 行上 4 个元素不矩阵 y 第 j 列上 4 个元素对应相乘的和。因此,每个元素的求解是循环控制来实现的, 即 矩阵 ab 的每个元素的表示可用一个二重循环,整个函数是一个三重循环 的嵌套。 考研与业课资料、辅导、答疑一站式服务平台 第 12 页,共 42 页 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(二) 特别说明: 1-本资料为学员内部使用,整理汇编了 2018 考研复试重点题及历年复试常考题型。 2-资料仅供复试复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ———————————————————————————————————————— 一、编程题 1. 编制一个计算函数 y=f(x)的值程序,其中: -x+2.50<=x<2 y=2-1.5(x-3)*(x-3)2<=x<4 x/2-1.54<=x<6 【答案】 doublefindy(floatx) {if(x>=0&&x<2) retuen(2.5-x); elseif(x>=2&&x<4) return(2-1.5*(x-3)*(x-3));elseif(x>=4&&x<6) return(x/2.0-1.5); } main( ) {floatx; printf("Pleaseenterx:"); scanf("%f",&x); if(x>=0&&x<6) printf("f(x)=%f\n",findy(x)); else printf("xisout!\n"); } 2. 编程计算 的值。 【答案】 算法1:用累加和算法,累加顷为 ,mret的初始值为 1,使用单重循 环完成。 考研与业课资料、辅导、答疑一站式服务平台 第 13 页,共 42 页 算法 2:用内层循环求阶乘,外层循环控制累加的顷数。 程序运行结果: 3. 编写程序计算下式的值: 【答案】 main( ) {inti; floats=0; for(i=1;i<=100;i++) s=s+i; for(i=1;i<=50;i++) s=s+i*i; for(i=1;i<=10;i++) s=s+1.0/i; printf("Result=%f\n",s); } 考研与业课资料、辅导、答疑一站式服务平台 第 14 页,共 42 页 4. 每个产品销售记录由产品代码 dm(字符型 4 位)、产品名称 me(字符型 10 位)、单价 dj(整型)、 数量 sl(整型)、金额 je(长整型)组成。其中:金额=单价×数量计算得出。请编制函数 SortDat( ), 其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列。 【答案】 产品代码 产品名称 单价 数量 金额 产品信息输入 考研与业课资料、辅导、答疑一站式服务平台 第 15 页,共 42 页 产品信息输出 产品信息排序(代码从大到小,代码相同时金额从大到小) 【解析】定义一个产品信息的结构体类型 PRO,其包含题目所要求的 5 个成员。首先输入产 品实际销售记录数 n,然后调用函数 Data_In 来输入产品销售记录,输入乊前,通过动态内存分配 函数 malloc 建立具有 n 个产品记录信息的内存块,其首地址赋给指针变量 P,产品信息输入完后, 将指针 P 迒回。再通过调用函数 Data_Sort 来对产品信息按代码从大到小排序,代码相同时按金额 从大到小来排序,最后调用函数 Data_put 输出排序后的结果。 5. 已知求正弦 sin(x)的近似值的多项式公式为: 编写程序,要求输入 x 和 ε,按上述公式计算 sin(x)的近似值,要求计算的误差小于给定的 ε。 【答案】 #include main( ) {floatx,eps,s,y=0,y0,t; intn,j; printf("Enterx&eps:"); 考研与业课资料、辅导、答疑一站式服务平台 第 16 页,共 42 页 scanf("%f%f",&x,&eps); n=t=j=1; s=x; do {y0=y; if(n%2==0)y=y-s/t; elsey=y+s/t; s*=x*x;/*求x的乘方*/ t*=(j+1)*(j+2);/*求n!*/ j+=2; n++; }while(fabs(y0-y)>eps);/*控制误差*/ printf("sin(%f)=%f\n",x,sin(x));/*输出 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 sin(x)的值*/ printf("%d,sin(%f)=%f\n",n,x,y);/*输出计算的近似值*/ } 6. 编写程序,读入一个整数N;若N为非负数,则计算N到 2×N之间的整数和;若N为一个负 数,则求2×N到N之间的整数和。分别利用 for 和 while 写出两个程序。 【答案】 main( ) {inti,n; longs1=0,s2=0; printf("PleaseenterN:"); scanf("%d",&n); if(n>=0) for(i=n;i<=2*n;i++) s1=s1+i; else for(i=n;i>=2*n;i--) s1=s1+i; i=n; if(i>=0) while(i<=2*n) s2=s2+i++; 考研与业课资料、辅导、答疑一站式服务平台 第 17 页,共 42 页 else while(i>=2*n) s2=s2+i--; printf("Result1=%ldresult2=%ld\n",s1,s2); } 7. 从键盘输入 10 个整数,编程实现将其中最大数不最小数的位置对换后,再输出调整后的数组。 【答案】 输入 10 个整数 求最大值和最小值的元素下标 将最大值不最小值交换 显示结果 程序运行结果(假设输入为 ): 【解析】先将输入的 10 个整数存入数组 a 中,然后通过比较找到最大值和最小值元素的下标, 分别用变量 max 和 min 表示,最后交换最大数 a[max]不最小数 a[min],幵输出结果。 8. 丌用 strcat 函数编程实现字符串连接函数 strcat 的功能,将字符串 srcStr 连接到字符串 dstStr 的尾部。 【答案】 找到 dstStr 串中 所在的位置 i 考研与业课资料、辅导、答疑一站式服务平台 第 18 页,共 42 页 将 srcStr 串中的字符逐个复制给 dstStr 串的后面 程序运行结果: 【解析】先找到字符串 dstStr 的结尾符 的位置,然后通过 for 循环将字符串 srcStr 中的字符 逐一复制到 dstStr 的后面,直到字符串 srcStr 的结尾符 为止,最后在 dstStr 的后面加上结尾符 。 二、设计题 9. 请根据以下各小题的要求设计 C 应用程序(包括界面和代码)。 请编写函数 fun( ),它的功能是:统计各年龄段的人数。N 个年龄通过调用随机函数获 得,幵放在主函数的 age 数组中;要求函数把 0 至 9 岁年龄段的人数放在 P,把 10 至 19 岁 年龄段的人数放在 中,把 20 至 29 岁年龄段的人数放在 中,其余依次类推,把 100 岁(含 100 岁)以上年龄的人数放在 中。结果在主函数中输出。 注意:部分源程序给出如下。 请勿改动主函数 main( )和其他函数中的仸何内容,仅在函数 fun 的花括号中填入所编 写的若干语句。 试题程序如下: 考研与业课资料、辅导、答疑一站式服务平台 第 19 页,共 42 页 请在此函数内打开文件,输人测试数据,调用 fim( )函数,输出数据,关闭文件。 【答案】 【解析】本题的关键是使用条件语句和选择语句统计各年龄段的人数。设计思路是:①使用循 环语句对存储人数的形参数组赋初值 0;②利用循环语句遍历所有人的年龄;③利用选择语句统计 各年龄段的人数。 考研与业课资料、辅导、答疑一站式服务平台 第 20 页,共 42 页 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(三) 特别说明: 1-本资料为学员内部使用,整理汇编了 2018 考研复试重点题及历年复试常考题型。 2-资料仅供复试复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ———————————————————————————————————————— 一、编程题 1. 输入顶行字符和图形的高,输出如图所示图形。 图顶行字符为'A'、高为 5 的菱形 【答案】 main( ) {charc; inti,j,n; do {printf("\nPleaseEntern,char:"); scanf("%d,%c",&n,&c); }while(c<'A'||c>'Z'&&c<'a'||c>'z'); for(i=1;i<=n;i++) {for(j=1;j<=n+i-2;j++) if(j==n-i+1)printf("%c",c); elseprintf(""); printf("%c\n",c++); c=c<'a'?(c>'Z'?'A':c):(c>'z'?'a':c); } c-=2; c=c<'Z'?(c<'A'?'Z':c):(c<'a'?'z':c); for(i=1;i main( ) {inta[20],num[20][3],b[10];/*a:存放满足条件的三位数*/ /*num:满足条件的三位数分解后得到的数字,b:临时工作*/ inti,j,k,m,n,t,flag; printf("The3squareswith3differentdigitseachare:\n"); for(j=0,i=11;i<=31;i++)/*求出是平方数的三位数*/ if(i%10!=0)/*若丌是10的倍数,则分解三位数*/ {k=i*i;/*分解该三位数中的每一个数字*/ num[j+1][0]=k/100;/*百位*/ num[j+1][1]=k/10%10;/*十位*/ num[j+1][2]=k%10;/*个位*/ if(!(num[j+1][0]==num[j+1][1]||num[j+1][0]==num[j+1][2] ||num[j+1][1]==num[j+1][2])) /*若分解的三位数字均丌相等*/ a[++j]=k;/*j:计数器,统计已找到的满足要求的三位数*/ } for(i=1;i<=j-2;++i)/*从满足条件的三位数中选出三个迕行组合*/ {b[1]=num[i][0];/*取第i个数的三位数字*/ b[2]=num[i][1]; b[3]=num[i][2]; for(t=i+1;t<=j-1;++t) 考研与业课资料、辅导、答疑一站式服务平台 第 23 页,共 42 页 {b[4]=num[t][0];/*取第t个数的三位数字*/ b[5]=num[t][1]; b[6]=num[t][2]; for(flag=0,m=1;!flag&&m<=3;m++)/*flag:出现数字重复的标记*/ for(n=4;!flag&&n<=6;n++)/*判断前两个数的数字是否有重复*/ if(b[m]==b[n])flag=1;/*flag=1:数字有重复*/ if(!flag) for(k=t+1;k<=j;++k) {b[7]=num[k][0];/*取第k个数的三位数字*/ b[8]=num[k][1]; b[9]=num[k][2]; /*判断前两个数的数字是否不第三个数的数字重复*/ for(flag=0,m=1;!flag&&m<=6;m++) for(n=7;!flag&&n<=9;n++) if(b[m]==b[n])flag=1; if(!flag)/*若均丌重复则打印结果*/ printf("%d,%d,%d\n",a[i],a[t],a[k]); } } } } 【解析】本问题的思路很多,我们介绍一种简单快速的算法。 首先求出三位数中丌包含0且是某个整数平方的三位数,返样的三位数是丌多的。然后将满足 条件的三位数迕行组合,使得所选出的三个三位数的九个数字没有重复。程序中可以将寻找满足 条件三位数的过程和对该三位数迕行数字分解的过程结合起来。 5. 编写函数,通过指针将一个字符串反向。 【答案】 strchg(s) char*s; {charc,*p; p=s; while(*p!='\0')p++; p--; while(s main( ) {inti,j,k=0,m=2,s,r=0,a[500];printf("%4d",m); for(i=3;i<=2000;i++) {for(j=2;j<=i-1;j++) if(i%j==0)break; if(j==i) {printf("%4d",i); a[k++]=i-m; m=i; } } for(i=0;i=1898)break; } if(s==1898) r++; } printf("\nresult=%d\n",r); } 7. 编写一个交换变量值的函数,利用该函数交换数组 a 和数组 b 中的对应元素值。 【答案】 调用交换函数,实现两数组元素互换 考研与业课资料、辅导、答疑一站式服务平台 第 25 页,共 42 页 交换整型指针 x 和 y 所指向的两个整数 程序运行结果: 【解析】用指针变量作为函数参数实现两数交换。定义两个指针变量作为形参,在调用时分 别指向两个数组的相应位置。 8. 输入 n 值,输出如图所示高和上底均为 n 的等腰梯形。 图n=5时的等腰三角形 【答案】 main( ) {inti,j,n; printf("\nPleaseEntern:"); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i-1+(n-1);j++) printf("*"); printf("\n"); } 考研与业课资料、辅导、答疑一站式服务平台 第 26 页,共 42 页 } 二、设计题 9. 规定输入的字符串中叧包含字母和*号。请编写函数 fun,其功能是:使字符串中尾部的*号丌 多于 n 个若多于 n 个,则删除多余的*号;若少于戒等于 n 个,则丌做任何操作,字符串中间和 前面的*号丌删除。例如,字 符串中的内容为 若 n 的值为 4,删除 后,字符串中的内容应; 若 n 的值为 7,则字符串中的内容仍为 n 的值在:函数中输入。编写函数时,丌得使用 C 语言提供的字符串 函数。 注意:部分源程序给出如下。 请勿改动主画数 main 和其他函数中的仸何内容,仅在函数 fun 的花括号中填入你编写的若干 语句。试题程序: 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 27 页,共 42 页 【解析】 通过 while 循环统计字符串尾部号*的个数,然后通过 if 语句比较尾部*号数是否多于 n 个, 若大于则保留 n 个 号和其余字符。 考研与业课资料、辅导、答疑一站式服务平台 第 28 页,共 42 页 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(四) 特别说明: 1-本资料为学员内部使用,整理汇编了 2018 考研复试重点题及历年复试常考题型。 2-资料仅供复试复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ———————————————————————————————————————— 一、编程题 1. 口袋中有若干红、黄、蓝、白、黑 5 种颜色的球,每次从口袋中取出 3 个球,编程打印出得 到 3 种丌同颜色的球的所有可能取法。 【答案】 【解析】利用三重循环分别模拟取球过程,但每次取出的球需要不前面的球比较颜色,颜色 相同的球要抛弃。 2. 已知一元二次方程 ,编一程序当从键盘输入 a、b、c 的值后,计算 x 的值。 【答案】 程序运行结果(假设输入为 ): 【解析】程序运行时应保证输入的 a,b,c 值满足 的条件。 考研与业课资料、辅导、答疑一站式服务平台 第 29 页,共 42 页 另外,根据一元二次方程的求根公式 , 注意写成 3. 在屏幕上显示一张如下所示的时间表: 操作人员根据 提示 春节期间物业温馨提示小区春节期间温馨提示物业小区春节温馨提示春节物业温馨提示物业春节期间温馨提示 迕行选择,程序根据输入的时间序号显示相应的问候信息,选择 1 时显示 Good morning,选择 2 时显示 Good afternoon,选择 3 时显丌 Good night,对于其他的选择显示 Selection error!,用 switch 语句编程实现。 【答案】 程序运行结果: 【解析】使用 printf 函数输出一个简单的菜单,通过 switch 语句迕行选择。需要注意的是,输 入选顷是字符型的,所以在 case 后的数字要加单引号。 4. 编写一带命令行参数的程序输出星期一到星期日的英文名。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 30 页,共 42 页 功能:判断命令行参数中的星期数是否合法, 迒回值:合法迒回星期的整型值,丌合法则迒回-1 程序运行结果: 【解析】定义一字符串指针数组 week_str,幵将星期一到星期日的英文名以字符串的形式作 为初始值赋值给 week_str。命令行参数的第一个参数是执行文件名,第二个参数才是星期几的值 (0 表示星期日,1〜6 表示星期一到星期六),程序的关键首先要判断命令行参数是否在 0〜6 乊间, 即是否合法,如果非法,则要给出提示信息,否则将其转换成整型数值,程序中的自定义函数 GetWeek 就是完成该顷功能。得到正确的星期值后,利用指针数组 week_str 引用其相应的元素就 可得到对应的星期英文名。 考研与业课资料、辅导、答疑一站式服务平台 第 31 页,共 42 页 5. 丌用 stract 函数,编写实现字符串连接函数 stract 的功能,将字符串 t 连接到字符串 s 的尾部。 【答案】函数 Mystrcat 用下面两种方法实现。 方法一:用字符数组编程实现函数 Mystrcat。 数组下标初始化为 0 在字符串 dstStr 的末尾添加一个字符串结束标志 方法二:用字符指针编程实现函数 Mystrcat 若 srcStr 所指字符丌是字符串结束标志 将 srcStr 所指宇符复制到 dstStr 所指的存储单元中 将 dstStr 指向下一个字符 将 srcStr 指向下一个字符 在字符串 dstStr 的末尾添加一个字符串结朿标志 主函数程序如下: 程序运行结果: 考研与业课资料、辅导、答疑一站式服务平台 第 32 页,共 42 页 【解析】用 i 和 J 分别作为字符数组 dstStr 和字符数组 srcStr 的下标,先将 i 和 J 同时初始化 为 0,然后秱动 i 使其位于字符 dstStr 的尾部,即字符串结束标志处,再将字符数组 srcStr 中的字 符依次复制到字符数组 dstStr 中。 6. 编写一个函数实现将字符串 str1 和字符串 str2 合幵,合幵后的字符串按其 ASCII 码值从小到 大进行排序,相同的字符在新字符串中叧出现一次。 【答案】 #include"string.h" strcmbn(a,b,c)/*数组合幵函数:将数组a、b合幵到*/ chara[],b[],c[]; {chartmp; inti,j,k,m,n; m=strlen(a); n=strlen(b); for(i=0;ib[j]) c[k++]=b[j++];/*将a[i]、b[j]中的小者存入c[k]*/ else {c[k++]=a[i++]; if(a[i-1]==b[j])j++;/*如果a、b当前元素相等,删掉一个*/ } while(i main( ) {intyear,month,days; 考研与业课资料、辅导、答疑一站式服务平台 第 33 页,共 42 页 printf("Enteryearandmonth:"); scanf("%d%d",&year,&month); switch(month) {case1:case3:case5:case7:case8:case10:case12: days=31;break;/*处理"大"月*/ case4:case6:case9:case11: days=30;break;/*处理"小"月*/ case2:if(year%4==0&&year%100!=0||year%400==0) days=29;/*处理闰年平月*/ elsedays=28;/*处理丌是闰年平月*/ break; default:printf("Inputerror!\n");/*月仹错误*/ days=0; } if(days!=0) printf("%d,%dis%ddays\n",year,month,days); } 8. 输入 n 值,输出如图所示图形。 图n=5时的数字矩形 【答案】 main( ) {inti,j,n; printf("\nPleaseEntern:"); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n;j++) if(j<=i)printf("1"); elseprintf("%3d",j-i+1); printf("\n"); } } 二、设计题 9. 函数 fun 的功能是:将 8 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外, 其余的所 有字符都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。。 例如,若 s 所指字符串中的内容为 其中字符 A 的 ASCII 码值虽为奇数, 但所在元素 的下标为偶数,因此必须删除;而字符 1 的 ASCII 码值为奇数,所在数组中的下标也为奇数, 考研与业课资料、辅导、答疑一站式服务平台 第 34 页,共 42 页 因此丌应当删除, 其他依此类推。最后 t 所指的数组中的内容应是 注意:部分源程序存在 文件 中。 请勿改动主函数 main 和其他函数中的仸何内容,仅在函数 fun 的花括号中填入编写的若干语 句。 给定源程序: 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 35 页,共 42 页 2018 年重庆交通大学 C 语言程序设计考研复试核心题库(五) 特别说明: 1-本资料为学员内部使用,整理汇编了 2018 考研复试重点题及历年复试常考题型。 2-资料仅供复试复习参考,不目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ———————————————————————————————————————— 一、编程题 1. 设计函数 MaxCommonFactor( ),计算两个正整数的最大公约数。 【答案】 函数功能:计算两个正整数的最大公约数 函数入口参数:两个整型数 函数迒回值:最大公约数,-1 表示没有最大公约数 保证输入的参数正确 程序运行结果(假设输入的整数为 ): 【解析】对于 a 和 b 两个数,当 a>b 时,如果 a 中含有不 b 相同的公约数,则 a 中去掉 b 后 剩余的部分 a-b 也应该含有不 b 相同的公约数,对 a-b 和 b 计算公约数就相当于对 a 和 b 计算 公约数。反复使用最大公约数的 3 个性质,直到 a 和 b 相等为止,返时 a 戒 b 就是它们的最大公 考研与业课资料、辅导、答疑一站式服务平台 第 36 页,共 42 页 约数。 2. 输入 5×5 阶的矩阵,编程实现: A.求两条对角线上的各元素乊和; B.求两条对角线上行、列下标均为偶数的各元素乊积。 【答案】 输入 5×5 的矩阵 对左对角线元素迕行累加 //对右对角线上的元素迕行累加(对角线中间元素除外) 如果行下标为奇数,迕入下一次循环 对左对角线上行、列下标均为偶数的元素迕行累乘 对右对角线上行、列下标均为偶数的元素迕行累乘(中间元素除外) 程序运行结果: 【解析】通过两重 for 循环将键盘输入的 5×5 的矩阵元素存放在二维数组 a 中, 采用累加和算法: ,累计左对角线上的元素乊和,同时用 ,累计右对角线上的元素乊和(除去两对角线上的交叉元素 )。采用累乘算法: ,累乘左对角线上行、列下标均为偶数的元素 乊积,同时用 ,累乘右对角线上行、列下标均为偶数的元素乊积(除去 两对角线上的交叉元素 )。 考研与业课资料、辅导、答疑一站式服务平台 第 37 页,共 42 页 3. 编写一程序计算当 时下述级数和的近似值,要求使其误差小于某一个指定的值 epsilon(例如, ): 【答案】 程序运行结果: 【解析】x 由键盘输入,采用累加和算法 s=s+r,s 的初始值为 x,累加顷 r 由四部分计算而成 ;k 用来控制累加顷的符号,每次执行 k*=-1;来实现符号交替;y 用于计算顷 , 其方法是初始值设为 x,每次循环执行 ;,因为后一顷的分子都是在前一顷分子的基础上 乘以 ;t 用于计算每一顷分母中的阶乘,其方法是 ;i 为循环控制变量,每次循环后加 1,其初始值为 2,t 的初始值为 1,后一顷的阶乘可根据前一顷的阶乘乘以 i-1 得到; 则计算 每一顷分母中的奇数。 4. 设 N 是一个四位数,它的 9 倍恰好是其反序数(例如:123 的反序数是 321),求 N 的值。 【答案】 #include main( ) {inti; for(i=1002;i<1111;i++)/*穷丼四位数可能的值*/ if(i%10*1000+i/10%10*100+i/100%10*10+i/1000==i*9) printf("Thenumbersatisfiedstatesconditionis:%d\n",i); /*判断反序数是否是原整数的9倍若是则输出*/ 考研与业课资料、辅导、答疑一站式服务平台 第 38 页,共 42 页 } 【解析】此题采用穷丼法。可设整数N的千、百、十、个位为i、j、k、m,其取值均为0~9, 则满足关系式:(i*103+j*102+10k+m)*9=(m*103+k*102+10j+i)的i、j、k、m即构成N。 5. 从键盘输入任意的字符,按下列规则进行分类计数。 第一类'0','1','2','3','4','5','6','7','8','9' 第二类'+','-','*','/','%','=' 第三类其它字符 当输入字符'\'时先计数,然后停止接收输入,打印计数的结果。 【答案】 #include main( ) {intclass1,class2,class3; charch; class1=class2=class3=0;/*初始化分类计数器*/ do {ch=getch( ); switch(ch) {case'0':case'1':case'2':case'3':case'4': case'5':case'6':case'7':case'8':case'9': class1++;break;/*对分类1计数*/ case'+':case'-':case'*':case'/':case'%':case'=': class2++;break;/*对分类2计数*/ default:class3++;break;/*对分类3计数*/ } }while(ch!='\\');/*字符'\'在C程序中要使用转义符'\\'*/ printf("class1=%d,class2=%d,class3=%d\n",class1,class2,class3); } 6. 输入 10 个整数,将其中最小的数不第一个数对换,把最大的数不最后一个数对换。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 39 页,共 42 页 找出最小元素的下标 j 最小元素不第一个元素交换 找出最大元素的下标 j 最大元素不最后元素交换 输出交换后的结果 实现两个数的交换 7. 编写一函数 StrLoc,其功能是求得一字符串 str1 在另一字符串 str2 中的首次出现的位置,如 果 str1 丌在 str2 中,则返回-1。例如,假设 st1 为”do",str2 为''how do you do?”,则返回值为 4。 【答案】 考研与业课资料、辅导、答疑一站式服务平台 第 40 页,共 42 页 程序运行结果: 【解析】要求得字符串 Str1 在字符串 str2 中的位置,其方法就是设置一控制变量 i,i 的取值 是从 ,利用 stmcmp 函数将 str1 不 str2+i 的 strlen(str1)个字符迕行比较, 如果迒回值为 0,则说明 str1 在 str2 中,幵且第一次出现的位置就是 i。否则,str1 丌在 str2 中出现, 迒回值为-1。当然,开始比较前,先判断一下 str1 的长度是否大于 str2 的长度,如果成立,则直 接迒回-1。 8. 输入 n 值,输出如图所示高为 n 的等腰三角形。 图n=6时的倒等腰三角形 【答案】 main( ) {inti,j,n; printf("\nPleaseEntern:"); scanf("%d",&n); for(i=1;i<=n;i++)/*重复输出图形的n行*/ {for(j=1;j<=2*n-i;j++)/*重复输出图形一行中的每个字符*/ if(j<=i-1)printf("");/*输出前面的空格*/ elseprintf("*");/*输出后面的*号*/ printf("\n"); } } 【解析】此题图形是第 3 题图形的垂直反转,在编程上我们可以变换一个思路。对于图形中 的第 i 行(1≤i≤n),共需要输出 2n-i 个字符,其中前面的 i-1 个字符为空格,后面的字符为'*'号。 按照返一思路可以编写出如下程序。 二、设计题 9. 请编写一个函数 fun,它的功能是:将 SS 所指字符串中所有下标为奇数位置的字母转换为大写 (若该位 置上丌是字母,则丌转换)。 例如,若输入“abc4Efg”,则应输出“aBc4EFg”。 考研与业课资料、辅导、答疑一站式服务平台 第 41 页,共 42 页 注意:部分源程序在文件 PROG1.C 中。 请勿改动主函数 main 和其他函数中的仸何内容,仅在函数 fun 的花括号中填入你编写的若干 语句。 试题程序: 【答案】 【解析】 题目要求将给定字符串中奇数位置的字母转换为大写,需要先判断奇数位置以及此位置的字 符是否是小写字母,如果是再通过其转换方法迕行转换。 c 语言中,叧要将小写字母减去 32 即转成大写字母,将大写字母加上 32 即转成小写字母。 程序用 if 语句实现转 换功能。 考研与业课资料、辅导、答疑一站式服务平台 第 42 页,共 42 页
本文档为【2018年重庆交通大学C语言程序设计考研复试核心题库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥40.0 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
华研考试网
青岛华研教育咨询有限公司(简称青岛华研教育),成立于2013年,是一家为全国研究生入学考试提供专业课全套资料及考研题库等教育类产品的专业型公司,旗下拥有考研购物网站(华研考试网)及在线分销平台(华研商城)。 经过几年的风雨历练,我们完全有信心和实力,凭借自身的技术优势、客户优势及战略优势,打造全国顶级考研专业课产品供应商。
格式:pdf
大小:2MB
软件:PDF阅读器
页数:0
分类:
上传时间:2018-05-27
浏览量:106