2008年春c语言试题答案.doc_第1页
2008年春c语言试题答案.doc_第2页
2008年春c语言试题答案.doc_第3页
2008年春c语言试题答案.doc_第4页
2008年春c语言试题答案.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2008年春浙江省高等学校计算机等级考试试卷(二级C)试题1(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入1个正整数n(n=2),输出菲波那契(Fibonacci)序列的前n项,每行输出6个数。菲波那契(Fibonacci)序列:1,1,2,3,5,8,13, ,数列的前两个数都是1,从第三个数开始,每个数是前两个数之和。运行示例:Enter n: 101 1 2 3 5 813 21 34 55【程序】#include main( ) int count, i, n, x1, x2, x; printf(Enter n:); scanf(%d, &n); x1 = x2 = 1; /*注意1:数列的前两个数都是1*/ printf (%6d%6d, x1, x2); (1) ; for(i = 1; i = n-2; i+) (2) ; /*注意2:每个数是前两个数之和*/ printf(%6d, x); count+; if( (3) ) printf(n); x1 = x2; /*注意3:递推*/ (4) ; 【供选择的答案】(1) A、 count = 2B、count = 0 C、 count = 1D、count = -1讲解:本题与课本P91的例题5.20基本一样。Count是一个记数变量,下面有语句count+,根据“和的初值为0”的原则,这里应该选B。(2) A、x = x1 - x2B、x = x1 + x2 C、x = x1D、x = 2根据题目中的“每个数是前两个数之和。”判断这里应该选B。(3) A、count / 6 = 0B、count % 6 != 0 C、count % 6 = 0D、count / 6 != 0每够6个,就换行。(4) A、x = x1 + x2B、x2 = x1C、x = x2D、x2 = x 这里:x1=x2;x2=x;实现了一次递推。也就是“从第三个数开始,每个数是前两个数之和。”程序中的注意1、注意2、注意3是菲波那契(Fibonacci)序列的核心。试题2(每小题3分,共12分)参考09秋第二题阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入2个正整数m和n(1=mn=500),统计并输出m 和n之间的素数的个数以及这些素数的和。要求定义和调用函数prime(m)判断m是否为素数,当m为素数时返回1,否则返回0。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。运行示例:Enter m, n: 1 10count = 4, sum = 17 【程序】#include #include int prime(int m) int i, n; if(m = 1) return (5) ; n = sqrt(m); for( i = 2; i = n; i+) if(m % i = 0) return (6) ; return (7) ; main() int count = 0, i, m, n, sum = 0; printf(Enter m, n:); scanf(%d%d, &m, &n); for(i = m; i = n; i+) if( (8) ) sum += i; count+; printf(count=%d, sum=%dn, count, sum); 【供选择的答案】(5) A、1B、m C、m = 1D、0讲解:本题与课本P88的例题5.17基本一样。这里只能选择A和D。根据(8)推断出(5)、(6)和(7)的答案。(6) A、mB、1 C、0D、n(7) A、mB、1 C、0 D、i = n(8) A、prime(i) != 0B、prime(i) = 0 C、i = prime(i)D、!prime(i)试题3(每小题3分,共12分)阅读下列程序说明和程序,在每小题提供的若干可选答案中,挑选一个正确答案。【程序说明】输入一个2 * 3的二维数组,找出最大值以及它的行下标和列下标,并输出该矩阵。运行示例:Enter a array(2*3): 3 2 10 -9 6 -1max = a02 = 103 2 10-9 6 -1【程序】#include main( ) int col, i, j, row; int a23; printf(Enter array(2*3):); for(i = 0; i 2; i+) for(j = 0; j 3; j+) scanf(%d, (9) ); (10) for(i = 0; i 2; i+) for(j = 0; j arowcol) (11) printf(max = a%d%d = %dn, row, col, arowcol); for(i = 0; i 2; i+) for(j = 0; j arowcol)可以推断row,col的对应关系。不能简单地用英文单词来推断。(12) A、printf(n);B、printf(n); C、 ;D、printf(n);注意这一句最后的: if(aij arowcol)可以推断出每行输出完成后换行。选D则每输出一个元素换行。试题4(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include main() int op1, op2, res; char operator; scanf(%d, &op1); operator = getchar(); while(operator != =) scanf(%d, &op2); switch(operator) case +: res = op1+op2; break; case -: res = op1-op2; break; case *: res = op1*op2; break; case /: res = op1/op2; break; default: res = 0; op1 = res; operator = getchar(); printf(%dn, res);(13) 程序运行时,输入2*3-2=,输出 (13) 。 A、6B、2 C、0D、4 (14) 程序运行时,输入15+2/3=,输出 (14) 。 A、16B、15 C、6D、5(15) 程序运行时,输入1+2*10-10/2=,输出 (15) 。 A、10B、16 C、15D、25(16) 程序运行时,输入1+3*5/2-7=,输出 (16) 。 A、3B、1 C、-2D、-3本题的关键在于要按照程序流程逐步计算,不要看到输入的形式来计算。试题5(每小题3分,共12分)阅读下列程序并回答问题,在每小题提供的若干可选答案中,挑选一个正确答案。【程序】#include #define MAXLEN 80main( ) int k = 0, number = 0; char strMAXLEN; while(strk = getchar() != #) k+; strk = 0; for (k=0; strk != 0; k+) if (strk=0 & strk= 0&strk = 9) number = number * 12 + strk - 0; else if(strk = A|strk = B) number = number * 12 + strk -A + 10; else; /* 第15行 */ else break; /* 第16行 */ printf(%dn,number); (17) 程序运行时,输入10#,输出 (17) 。 A、16B、10 C、12 D、1第1次:number = number * 12 + strk - 0; number=0*12+1-0=1第2次:number = number * 12 + strk - 0; number=1*12+0-0=12(18) 程序运行时,输入1a0#,输出 (18) 。 A、264 B、10 C、1 D、12第1次:number = number * 12 + strk - 0; number=0*12+1-0=1第2次没有执行。 (19) 将第16行改为“;”后,程序运行时,输入A*0#,输出 (19) 。 A、0 B、120 C、10 D、12第1次:number = number * 12 + strk -A + 10; number=0*12+A-A+10=10第2次没有执行。第3次:number = number * 12 + strk - 0; number=10*12+0-0=120(20) 将第16行改为“else break;”后,删除第15行,程序运行时,输入1b0#,输出 (20) 。 A、10 B、12 C、276 D、1第1次:number = number * 12 + strk - 0; number=0*12+1-0=1第2次没有执行。第3次:number = number * 12 + strk - 0; number=1*12+0-0=12试题6(每小题3分,共12分)#include #include main( ) char *s2 = *, *; while(*s1 != 0) printf(%sn, s0+strlen(s1)-1); s1+; (21) 程序运行时,第1行输出 (21) 。A、* B、*C、* D、* S是一个指针数组。S0指向字符数组”*”,也就是说,* * * * 0s0S1指向字符数组”*”,也就是说,* * * * 0s1strlen(s1)计算指针s的长度。循环第一次时,*s1=*, *s1 != 0为真。strlen(s1)=4strlen(s1)-1=3s0+strlen(s1)-1=s0+3这时,s0的指针变化为(向后移动指针3位):* * * * 0s0 所以输出的结果是*(22) 程序运行时,第2行输出 (22) 。A、* B、*C、* D、* 循环第2次时,*s1=*, *s1 != 0为真。strlen(s1)=3 (注意:s1+;使s1的指针后移一位,所以长度减少)strlen(s1)-1=2s0+strlen(s1)-1=s0+2这时,s0的指针变化为(向后移动指针2位):* * * * 0s0 所以输出的结果是*(23) 程序运行时,第3行输出 (23) 。A、* B、*C、* D、* 循环第3次时,*s1=*, *s1 != 0为真。strlen(s1)=2(注意:s1+;使s1的指针后移一位,所以长度减少)strlen(s1)-1=1s0+strlen(s1)-1=s0+1这时,s0的指针变化为(向后移动指针1位):* * * * 0s0 所以输出的结果是*(24) 程序运行时,第4行输出 (24) 。A、* B、*C、* D、* 同理。试题7 程序设计题1) 定义函数fact(n)计算n的阶乘: n! = 1 * 2 * * n,函数返回值类型是double。2) 定义函数cal(m, n)计算累加和:,函数返回值类型是double。3) 定义函数main(),输入正整数n,计算并输出下列算式的值。该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算;每一项的分母是阶乘,要求调用函数fact(n)计算n!。#include double fact(int n) /*计算n!*/int k;double result=1;for (k=1;k=n;k+)result

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论