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

2016-2018年中央财经大学C语言程序设计考研真题及答案解析(5)本站小编 免费考研网/2020-03-02

8、程序的功能是求两个整数的最大公约数,请填空。

main()

{    int a=12,b=8,t;

while(                   )

{    t=a%b;

a=b;

b=t;

}

printf("%3d",a);

}

9、下面程序用指针p输出p所指向的数组元素的其后所有元素。

main()

{    int  a[10]={6,-1,3,2,5,7,6,12,-1,-3};

int i,j,*p;

p=a+4;

for(i=0;j<=5;i++)

printf("%d",                   );

}

10、以下程序把一个名为f1.dat的文件拷贝到一个名为f2.dat的文件中。

#include

main()

{  char  c;

FILE *fp1,*fp2

Fp1=fopen("f1.Doc","r");

Fp2=fopen("f2.doc","w");

c=fgetc(fp1);

while(c!=EOF)

{       fputc(c,fp2);

c=fgetc(fp1);

}

fclose(fp1);

;

}

三、程序设计题(每题15分,共75分)

1、编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。

2、对数组A中的N(0<N<100=个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。例如数组是:A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)

3、求这样一个三位数,该三位数等于其每位数字的阶乘之和。

即:abc = a! + b! + c!

4、编写一个函数实现将字符串str1和字符串str2合并,合并后的字符串按其ASCII码值从小到大进行排序,相同的字符在新字符串中只出现一次。

5、编写函数,采用递归方法实现将输入的字符串按反序输出。

答案及解析

一、选择题

1. D   2. C  3. C  4. C  5.  B

6. D   7. C  8. A  9. C  10.A

11. D   12. D  13. B  14. C  15.  B

二、填空题

1、18

2、6

3、str[i]>str[i+1]

4、 a[j-1]=t

5、2,2

6、 ((i%7==0)||(i%11==0))&&(!((i%7==0)&&(i%11==0)))

7、2.000000

8、b>1

9、*p++

10、fclose(fp2) ;

三、程序设计题

1、编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。

参考答案:

void main()

{

int i,n,k=16,a[16]={0};

printf("Please enter a digit:");

scanf("%d",&n);

while(n>0) /* 将十进制数转变为二进制数 */

{

a[--k]=n%2;

n=n/2;

}

for(i=0;i<16;i++)

printf("%2d",a[i]);

}

2、对数组A中的N(0<N<100=个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组A中元素的顺序,且相同的整数要具有相同的编号。例如数组是:A=(5,3,4,7,3,5,6) 则输出为: (3,1,2,5,1,3,4)

参考答案:

void main()

{

int i,j,k,n,m=1,r=1,a[2][100]={0}; printf("Please enter n:");

scanf("%d",&n);

for(i=0;i

{

printf("a[%d]= ",i);

scanf("%d",&a[0][i]);

}

while(m<=n) /* m记录已经登记过的数的个数 */

{

for(i=0;i

{

if(a[1][i]!=0) /* 已登记过的数空过 */

continue;

k=i;

for(j=i;j

if(a[1][j]==0 && a[0][j]

k=j;

a[1][k]=r++; /* 记录名次,r为名次 */

m++; /* 登记过的数增1 */

for(j=0;j

if(a[1][j]==0 && a[0][j]==a[0][k])

{

a[1][j]=a[1][k];

m++;

}

break;

}

}

for(i=0;i

printf("a[%d]=%d, %d\n",i,a[0][i],a[1][i]);

}

3、求这样一个三位数,该三位数等于其每位数字的阶乘之和。

即:abc = a! + b! + c!

参考答案:

f(int  m)

{

int i=0,t=1;

while(++i<=m)

t*=i;

return(t);

}

void main()

{

int a[5],i,t,k;

for (i=100;i<1000;i++)

{

for(t=0,k=1000;k>=10;t++)

{

a[t]=(i%k)/(k/10);

k/=10;

}

if(f(a[0])+f(a[1])+f(a[2])==i)

printf("%d ",i);

}

}

4、编写一个函数实现将字符串str1和字符串str2合并,合并后的字符串按其ASCII码值从小到大进行排序,相同的字符在新字符串中只出现一次。

参考答案:

#include "string.h"

strcmbn(a,b,c) /* 数组合并函数:将数组a、b合并到 */

char a[],b[],c[];

void main()

{

char tmp;

int i,j,k,m,n;

m=strlen(a);

n=strlen(b);

for(i=0;i

{

for(j=i+1,k=i;j

if(a[j]

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值