验证卡列克运算C语言,上海工程技术大学2009-2010(1)C语言试卷A.doc

void main()

{

char a[]="programming",b[]="language";

char *p1;*p2;

int i;

p1=a;p2=b;

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

if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));

}

3.设本题输入的数n=2,m=2,该程序的输出是

#include "stdio.h"

int Ack(int m,int n)

{

int ackmn;

if(m==0)

{

ackmn=n+1;

return ackmn;

}

else if(n==0)

{

ackmn=Ack(m-1,1);

return ackmn;

}

else

{

ackmn=Ack(m-1,Ack(m,n-1));

printf("ackmn=%d\n",ackmn);

return ackmn;

}

}

main()

{

int m,n,sum;

printf("input m and n:");

scanf("%d,%d",&m,&n);

sum=Ack(m,n);

printf("\n%d\n",sum); /

}

4. 输入自然数n=5时, 该程序的输出是

#include "stdio.h"

main()

{

int n,a,i,j,k;

printf("Please inpt a Number:");

scanf("%d",&n);

printf("\n");

a=1;

for (i=1;i<=n;i++)

{ k=a;

for (j=1;j<=n+1-i;j++)

{printf("%4d",k);

k=k+(n-j+1);

}

printf("\n");

a=a+1;

}

}

5. 输入自然数n=5时, 该程序的输出是

#include main()

{

char c=96;

int i,j,n,k;

printf("Input a number n=");

scanf("%d",&n);

printf("\n");

k=(n+1)/2;

for(i=1;i<=k;i++)

{

for(j=1;j<=k-i;j++) printf(" ");

for(j=1;j<=i*2-1;j++) printf("%c",c+i);

printf("\n");

}

for(i=k-1;i>=1;i--)

{

for(j=1;j<=k-i;j++) printf(" ");

for(j=1;j<=i*2-1;j++) printf("%c",c+i);

printf("\n");

}

}

二.(16分)下列程序是要完成验证卡布列克运算,即任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:

1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;

2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);

3)求两个数的差,得到一个新的四位数(高位零保留)。

重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数。

读完程序后,补全标有分值的程序段,使程序具有验证卡布列克运算的功能。

int count=0;

main()

{

int n;

printf("Enter a number:");

scanf("%d", &n); /*输入任意正整数*/

vr6174(n); /*调用函数进行验证*/

}

int vr6174(int num)

{

int each[4],max,min ;

while (num!=6174&&num) /*若不等于6174且不等于0则进行卡布列克运算*/

{

parse_sort(num,each); /*将整数分解,数字存入each数组中*/

max_min(each,&max,&min); /*求数字组成的最大值和最小值*/

num=max-min; /*求最大值和最小值的差*/

printf("[%d]: %d-%d=%d\n",++count,max,min,num); /*输出该步计算过程*/

}

}

int parse_sort(int num,int *each)

{

int i,*j,*k,temp;

for(i=0;i<=4;i++) /*将NUM分解为数字(3分)*/

for(i=0;i<3;i++) /*对各保数字从大到小进行排序(6分)*/

return;

}

int max_min(int *each,int *max,int *min) /*将分解的数字还原为最大整数和最小整数*/

{

int *i;

*min=0; /*还原为最小的整数(4分)*/

*max=0; /*还原为最大的整数(3分)*/

}

三.下列程序的逻辑功能是: 为了安全,发送方在电报发送前对报文进行编码后再发出;例如原始报文中有sues,实际发出的电文是:npzn; 要求读懂下列程序后,在右侧编写接受方将电文还原成原始报文的程序。(12分)

.#include "stdio.h"

main()

{

char string[100],*cp;

int i,j,k,l;

cp=string;

printf("Please Input A string:");

gets(string);

for (i=0;(*(cp+i)!=\0);i++)

{

if ((*(cp+i)>=A)&&(*(cp+i)<=Z))

{

*(cp+i)=*(cp+i)-5;

if ((*(cp+i)=a)&&(*(cp+i)<=z))

{ *(cp+i)=*(cp+i)-5;

if ((*(cp+i)main()

{ int n=4, m=4, i, j, k, l, minn, maxx, flag ;

int a[4][4]={

{ 6, 26, 61, 19},

{ 7, 17, 93, 19},

{ 12, 28, 63, 19},

{ 4, 24, 5,777}

};

(1) ;

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

{

for( j = 0; j < m; j++)

{

minn = (2) ;

for( k = 0 ;k < m; k++)

{

if( minn > (3) )

break;

}

if( k == m)

{

maxx = a[i][j];

for( l = 0; (4) )

{

if( maxx < a[l][j])

break;

}

if( l == n)

{

printf(" row=%d col=%d a[%d][%d]= %d \n",i , j ,i,j,a[i][j]);

flag = 1;

}

}

}

}

if( flag == 0)

printf("此矩阵没有马鞍点4");

printf("\n");

}

五 .编程题(16分)

编写程序 其功能是:读入一行英文文本, 将其中每个单词的最后一个字母改成大写,然后输出此文本行(这里的“单词”是指由空格隔开的字符串)。 例如, 若输入I am a student to take the examination., 则应输出"I aM A studenT tO takE thE examinatioN."。

6

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值