2016-2018年中央财经大学C语言程序设计考研真题及答案解析(2)

本站小编 免费考研网/2020-03-02


   exit(0);
  }
  whilefgetc(fp)!=EOF)
   num++;
  printf("%ld\n",num);
  fclose(fp);
 }
10、下面函数从字符数组s[ ]中删除字符c。
 void del(char  s[ ],  char c)
 {   
  int i,j;
  for(i=j=0;s[i]!+'\0';i++)
  if(s[i]!=c)
   s[j++]=s[i];
                ='\0';
 }
三、程序设计题(每题15分,共75分)
1、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。
2、将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。
3、十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14 块,第十个小孩20块。然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖?
4、输入5×5的数组,编写程序实现:
(1)求出对角线上各元素的和;
(2)求出对角线上行、列下标均为偶数的各元素的积;
(3)找出对角线上其值最大的元素和它在数组中的位置。
5、编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。
 
答案及解析
一、选择题
1. D   2. A  3. D  4. D  5. A
6. D   7. A  8. C  9. D  10.A
11. A   12. C  13. A  14. D  15. C
 
二、填空题
1、5 
2、无数次  
3、i<80  
4、3      
5、1245056   
6、15    
7、  i%3=0    
8、s2[j]!='\0'
9、 (fp=fopen("f1.dat","r") 
10、s[i]  
三、程序设计题
1、编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。
 void main( )
 {
   int f1,f2,f5,count=0;
  for(f5=0;f5<=20;f5++)
   for(f2=0;f2<=(100-f5*5)/2;f2++)
   { 
    f1=100-f5*5-f2*2;
    if(f5*5+f2*2+f1==100)
   printf("No.%2d >> 5: %4d 2: %2d 1: %2d\n",++count,f5,f2,f1);
   }
 } 
2、将一个数的数码倒过来所得到的新数叫原数的反序数。如果一个数等于它的反序数,则称它为对称数。求不超过1993的最大的二进制的对称数。
参考答案:
 void main()
 { 
  int i,j,n,k,a[16]={0};
  for(i=1;i<=1993;i++)
  {
    n=i;k=0;
   while(n>0) /* 将十进制数转变为二进制数 */
   {
     a[k++]=n%2;
    n=n/2;
   }
   for(j=0;j<k;j++)
    if(a[j]!=a[k-j-1]) break;
   if(j>=k)
   {
     printf(" %d: ",i);
    for(j=0;j<k;j++)
    printf("%2d",a[j]);
    printf("\n");
   }
  }
 } 
3、十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,
第七个小孩10块,第八个小孩6块,第九个小孩14 块,第十个小孩20块。然后所有的小孩同时将自己手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次调整后大家手中的糖的块数都一样?每人各有多少块糖?
参考答案:
 void main()
 { 
  int i,count=0,a[11]={0,10,2,8,22,16,4,10,6,14,20};
  while(1)
  {
    for(i=1;i<=10;i++)
    a[i-1]=a[i-1]/2+a[i]/2;
   a[10]=a[10]/2+a[0];
   for(i=1;i<=10;i++)
    if(a[i]%2==1) 
     a[i]++;
   for(i=1;i<10;i++)
    if(a[i]!=a[i+1]) 
     break;
   if(i==10) 
    break;
   else
   { 
    a[0]=0;
    count++;
   }
  }
  printf("count=%d number=%d\n",count,a[1]);
 }
4、输入5×5的数组,编写程序实现:
(1)求出对角线上各元素的和;
(2)求出对角线上行、列下标均为偶数的各元素的积;
(3)找出对角线上其值最大的元素和它在数组中的位置。
 void main()
 { 
  int i,j,s1=0,s2=1,a[5][5];
  for(i=0;i<5;i++)
   for(j=0;j<5;j++)
   {
     printf("%d %d: ",i,j);
    scanf("%d",&a[i][j]);
   }
   for(i=0;i<5;i++)
   { 
    for(j=0;j<5;j++)
    printf("%5d",a[i][j]);
    printf("\n");
   }
   j=0;
   for(i=0;i<5;i++)
   { 
    s1=s1+a[i][i];
    if(i%2==0) 
     s2=s2*a[i][i];
    if(a[i][i]>a[j][j]) 
     j=i;
   }
  printf("SUN=%d\nACCOM=%d\na[%d]=%d\n",s1,s2,j,a[j][j]);
 } 
5、编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。
参考答案:
 #include "stdio.h"
 void main()
 {
   int i,n=0,a[4]={0};
  printf("Please enter a digit:");
  for(i=0;i<4 && (a[i]=getchar())!='\n';i++) ;
   for(i=0;i<4;i++)
    if(a[i]>=48&&a[i]<=57) 
     a[i]=a[i]-48;
    else if(a[i]>=65&&a[i]<=69) 
     a[i]=a[i]-55;
    else if(a[i]>=97&&a[i]<=102) 
     a[i]=a[i]-87;
    else 
     printf("input Error!");
   for(i=0;i<4;i++)
    n=n*16+a[i];
  printf("%d",n);
 } 
机密★启用前
中央财经大学2017年全日制硕士研究生
招生入学考试试卷
 
 
考试科目: C语言程序设计
课程编号: 901
阅 卷 人:
考试日期:
姓    名:
考    号:
注  意  事  项
 
1.考 前 研 究 生 将 上 述 项 目 填 写 清 楚
2.字 迹 要 清 楚,保 持 卷 面 清 洁
3.交 卷 时 请 将 本 试 卷 和 题 签 一 起 上 交
 
 
中央财经大学研究生院
 
一、选择题(每题3分,共45分)
1、若有说明:char  c[10]={'E','a','s','t','\0'};则下述说法中正确的是(             )。
(A) c[7]不可引用                                 (B) c[6]可引用,但值不确定
(C) c[4]不可引用                                 (D) c[4]可引用,其值为空字符
2、下列初始化语句中,正确且与语句char  c[ ]="string";等价的是(             )。
(A) char  c[ ]={'s','t','r','i','n','g'};                   (B) char  c[ ]='string';
(C) char  c[7]={'s','t','r','i','n','g','\0'};            (D) char  c[7]={'string'};
3、若有说明char  c[7]={'s','t','r','i','n','g'};则对元素的非法引用是(             )。
(A) c[0]              (B) c[9-6]               (C) c[4*2]                (D) c[2*3]
4、如有说明:char s1[5],s2[7]; ,要给数组s1和s2整体赋值,下列语句中正确的是(             )。
(A) s1=getchar();  s2=getchar();               (B) scanf("%s%s",s1,s2);
(C) scanf("%c%c",s1,s2);                         (D) gets(s1,s2);

相关话题/中央财经大学 语言 程序 设计