考研专业课资料、辅导、答疑一站式服务平台
第 1 页,共 26 页
目录
2018年首都师范大学C 语言程序设计复试仿真模拟三套题(一) (2)
2018年首都师范大学C 语言程序设计复试仿真模拟三套题(二) (11)
2018年首都师范大学C 语言程序设计复试仿真模拟三套题(三) (18)
考研专业课资料、辅导、答疑一站式服务平台
第 2 页,共 26 页 2018年首都师范大学C 语言程序设计复试仿真模拟三套题(一)
特别说明:
1-本资料为2018复试学员内部使用,严格按照2018复试常考题型及难度全真模拟预测。
2-资料仅供复试复习参考,与目标学校及研究生院官方无关,如有侵权、请联系我们立即处理。 ————————————————————————————————————————
一、编程题
1. 编写一函数
.,其功能是把字符串s 中的所有字符左移n 个位置,字符串
中的前n 个字符移到最后。
【答案】
将字符串S 循环左移n 个字符
将字符串的第一个字符保存在变量ch 中
将第二个字符开始的len-1个字符左移
将原先第一个字符置于字符串的末尾
程序运行结果:
【解析】要实现将字符串s 循环左移n 个字符,可通过n 次循环,首先将字符串的第一个字符s[0]保存到临时字符变量ch 中,然后利用strncpy 函数将字符串s 中第二个字符开始共strlen(s)一1个字符复制到s 的第一个字符的位置,最后将ch 放到s 的最后一个字符的位置。整个n 次循环结束就实现了字符串循环左移n 位的操作。
考研专业课资料、辅导、答疑一站式服务平台
第 3 页,共 26 页 2. 输入n 值,输出如图所示回型方阵。
图回形方阵线
【答案】
#definemax(x ,y)((x)>(y)?(x):(y))
main ( )
{inti ,j ,n ;
printf("\nPleaseEntern :");
scanf("%d",&n);
for(i=1;i<=n ;i++)
{for(j=1;j<=n ;j++)
if(i<=(n+1)/2)
if(j<=(n+1)/2)
printf("%4d",max((n+1)/2-i+1,(n+1)/2-j+1));
else
printf("%4d",max((n+1)/2-i+1,j-n/2));
elseif(j<=(n+1)/2)
printf("%4d",max(i-n/2,(n+1)/2-j+1));
else
printf("%4d",max(i-n/2,j-n/2));
printf("\n");
}
}
【解析】此题的关键还是要找到输出数字aij 和行列数i 、j 的关系。为此将图形分为四个区域如下图:
33333
32223
32123
32223
33333(此图n 为5)
在左上区域,即i<=(n+1)/2、j<=(n+1)/2时,输出数字为(n+1)/2-i+1和(n+1)/2-j+1中的大者,记为max{(n+1)/2-i+1,(n+1)/2-j+1};在右上区,即i<=(n+1)/2、j>(n+1)/2时,输出数字为max{(n+1)/2-i+1,j-n/2};在左下区,即i>(n+1)/2、j<=(n+1)/2时,输出数字为max{i-n/2,(n+1)/2-j+1};在右下区,即i>(n+1)/2、j>(n+1)/2时,输出数字为max{i-n/2,j-n/2}。
3. 编程计算
(n 个a)的值,n 和a 的值由键盘输入。 【答案】
考研专业课资料、辅导、答疑一站式服务平台
第 4 页,共 26 页
输入a , n 的值
求出累加项
进行累加
程序运行结果(假如a 和n 的值输入为
)
【解析】用累加和算法,累加项为
初值为0。 4. 在屏幕上显示一张如下所示的时间表:
操作人员根据提示进行选择,程序根据输入的时间序号显示相应的问候信息,选择1时显示Good morning ,选择2时显示Good afternoon ,选择3时显不Good night ,对于其他的选择显示Selection error!,用switch 语句编程实现。
【答案】
程序运行结果:
考研专业课资料、辅导、答疑一站式服务平台
第 5 页,共 26 页
【解析】使用printf 函数输出一个简单的菜单,通过switch 语句进行选择。需要注意的是,输入选项是字符型的,所以在case 后的数字要加单引号。
5. 输入任意三个数numl 、num2、num3,按从小到大的顺序排序输出。
【答案】
程序运行结果(假设输入为):
【解析】使用if-else 结构将三个数两两之间进行比较。
6. 从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。
【答案】
#defineN16
#include"stdio.h"
merge(a ,b ,c ,m)/*数组合并函数:将长度为m 的*/
inta[],b[],c[],m ;/*数组a 、b 合并到c*/
{inti=0,j=0,k=0;
while(i<m&&j<m)
if(a[i]>b[j])