好文档 - 专业文书写作范文服务资料分享网站

(完整版)上海工程技术大学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(\

}while(k>0&&n<=7); }

2.该程序的输出是

#include void main() {

char a[]=\,b[]=\; 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 \int Ack(int m,int n)

1

{

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(\ return ackmn; } } main() {

int m,n,sum;

printf(\ scanf(\ sum=Ack(m,n);

printf(\}

4. 输入自然数n=5时, 该程序的输出是 #include \main() {

int n,a,i,j,k;

printf(\ scanf(\ printf(\ a=1;

for (i=1;i<=n;i++) { k=a;

for (j=1;j<=n+1-i;j++) {printf(\ k=k+(n-j+1); }

printf(\ a=a+1; } }

5. 输入自然数n=5时, 该程序的输出是 #include main()

2

{

char c=96; int i,j,n,k;

printf(\ scanf(\ printf(\ 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(\ printf(\ }

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

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

for(j=1;j<=i*2-1;j++) printf(\ printf(\ } }

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

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

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

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

重复以上过程,最后得到的结果是6174,这个数被称为卡布列克数。 读完程序后,补全标有分值的程序段,使程序具有验证卡布列克运算的功能。 int count=0;

main() { int n;

printf(\

scanf(\输入任意正整数*/ 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(\输出该步计算过程*/

3

} }

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 \main() {

char string[100],*cp; int i,j,k,l; cp=string;

printf(\ 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; }

4

if ((*(cp+i)>='a')&&(*(cp+i)<='z')) { *(cp+i)=*(cp+i)-5;

if ((*(cp+i)<'a')) *(cp+i)=*(cp+i)+26; } }

printf(\

printf(\ }

四.下列程序是求4阶矩阵a中是否存在鞍点的程序段(列中最大,行内最小);请在空白处填入正确的内容, 使程序得以完成其功能.(14分) (每一空为3.5分) #include 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(\ col=%d a[%d][%d]= %d \\n\ flag = 1; } } } }

if( flag == 0)

printf(\此矩阵没有马鞍点4\ printf(\

5

}

五 .编程题(16分)

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

6

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

(勤奋、求是、创新、奉献)2009-2010(1)C语言试卷A课程序号___________班级__________学号__________姓名__________
推荐度:
点击下载文档文档为doc格式
4y7zx3e5zq0zn011oo6h6et871df8g0192o
领取福利

微信扫码领取福利

微信扫码分享