当前位置:文档之家› 上海工程技术大学2009-2010(1)C语言试卷A

上海工程技术大学2009-2010(1)C语言试卷A

一.读程序,写结果(第1题题5分;第2题每题7分;第3、4、5题10分;共计31分)1. 该程序的输出是main(){int k =7,n=0;do{switch(k){case 1:case 3:n+=1; k--; break;case 5:case 6: n++;k--;break;default:n=0;k--;case 2:case 4:n+=2; k--;break;}printf("%d",n);}while(k>0&&n<=7);}2.该程序的输出是#include <stdio.h>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;}{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 <stdio.h>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分)*/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)=*(cp+i)+26;}if ((*(cp+i)>='a')&&(*(cp+i)<='z')){ *(cp+i)=*(cp+i)-5;if ((*(cp+i)<'a')) *(cp+i)=*(cp+i)+26;}}printf("%s",string);printf("\n");}四.下列程序是求4阶矩阵a中是否存在鞍点的程序段(列中最大,行内最小);请在空白处填入正确的内容,使程序得以完成其功能.(14分) (每一空为3.5分)#include<stdio.h>{ 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."。

相关主题