C语言程序设计试卷AB卷及标答2011年

  • 格式:doc
  • 大小:126.50 KB
  • 文档页数:13

2011—2012学年度第二学期期末考试《程序设计》(C语言)试题A卷10年级 90分钟2012年6月一、用C语言描述下列命题(每小题2分,共10分)已知变量a、b、c是整数。

1、a和b同为正数或同为负数。

2、a或b其中之一小于c。

3、a、b、c中有二个是奇数。

4、变量a若是小写字母,则将其转换为大写字母。

5、一元方程f(x)在区间[x1,x2]内奇数个解。

二、填空(每小题2分,共20分)1、TC2.0中int a=-1,a在内存中的存储形式是( )2、已知大写字母A的ASCII码是65,则char a='A';语句执行后内存中存储的二进制码是()。

3、整型常量和实型常量也称为(),它们有正负值之分。

4、C语言基本数据类型包括整型、字符型、枚举类型和()。

5、在C语言中,将字符串作为()处理。

6、在C语言中,变量名、符号常量名、函数名、数组名等命名只能由字母、数字或下划线组成,且首字符只能是()。

7、一个函数由两部分组成,它们是()。

8、由一次函数调用加一个分号构成一个()语句。

9、如果想输出字符“%”,则应该在”格式控制”字符串中用()表示。

10、continue语句的作用是(),即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

三、读程序,写出其结果(第1、2题各4分、第3题6分,共14分)#include <stdio.h>main(){int x,y,z; x=y=1; z=(x++)-1;printf(“%d,%d\t”,x,z);}#include <stdio.h>main(){int i=10;printf(“%d\t%d \n”, i++,++i);}#include <stdio.h>void fun(int b ){static int a=0; a+=2; printf("%4d",a*b);}main( ){int cc; for(cc=1; cc<=3; cc++) fun(cc); printf("\n");}四、程序填空(每空只能写一个表达式或一条语句,5分,共20分)1、输出杨辉三角形(要求输出10行)。

11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1……程序如下:#include "stdafx.h"int main(int argc, char* argv[]){int a[10][10];//构建杨辉三角形for(int i=0; i<10; i++){①;a[i][i]=1;}for( ②; i<10; i++)for(int j=1; j<i; j++)a[i][j]=a[i-1][j-1]+a[i-1][j];//以下是输出杨辉三角形for(i=0; i<10; i++){for(int j=0; j<=i; j++)printf("%4d", a[i][j]);printf("\n");}return 0;}2、用二分法求一元方程的近似解。

#include <stdafx.h>#include <math.h>float f(float x){return 2*x*x*x-4*x*x+3*x-6;}int main(int argc,char* argv[]){float x1,x2,x0;do {printf("请输入区间上、下界x1和x2: ");scanf("%f %f",&x1,&x2); }③; /*确保在区间【x1,x2】内有奇数个解*/do {④;if(f(x0)*f(x1)<0)x2=x0;elsex1=x0; }while(fabs(f(x0))>1e-5);printf("根近似是%f\n",x0);return 0;}五、算法和程序(每18分,共36分)1、意大利数学家Fibonacci曾提出一个有趣的问题:设有一对新生兔子,从第三个月开始它们每月都生育一对兔子,按此规律并假设没有兔子死亡,一年后共有多少对兔子?根据题意设计算法计算每月的新生兔子(young)、中兔子(middle)、老兔子(old)和总兔子数。

只要求画出N-S图。

2、我国古代数学家张丘建在《算经》中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。

百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?根据题意设计算法并用N-S图描述如下。

试根据N-S图写出C程序。

“百钱买百鸡”N-S图2011—2012学年度第二学期期末考试《程序设计》(C语言)试题A卷标答10年级 90分钟2012年6月一、用C语言描述下列命题(每小题2分,共10分)1、a>0&&b>0 || a<0&&b<0 或a*b>02、a<c || b<c。

3、a%2+b%2+c%2= =2。

4、(a>=’a’&&a<=’z’)?a-32:a。

5、f(x1)*f(x2)<0。

二、填空(每小题2分,共20分)1、16个12、010000013、数值常量4、实型5、字符数组6、字符或下划线7、声明部分和语句部分8、函数调用语句9、%10、结束本轮循环开始下一轮循环三、读程序,写出其结果(第1、2题各4分、第3题6分,共14分)1、2,02、11 113、2 8 18四、程序填空(每空只能写一个表达式或一条语句,5分,共20分)1、输出杨辉三角形(要求输出10行)。

①a[i][0]=1 ②i=22、用二分法求一元方程的近似解。

③while(f(x1)*f(x2)>0) ④x0=(x1+x2)/2五、算法和程序(每18分,共36分)1、2、#include <stdio.h>#include <math.h>int main(int argc,char* argv[]){int cocks=0,hens,chicks;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3.0==100)printf("cocks=%d\thens=%d\tchicks=%d\n",cocks,hens,chicks);hens++;}cocks++;}return 0;}2011—2012学年度第二学期期末考试《程序设计》(C语言)试题B卷10年级 90分钟2012年6月一、选择题(每小题2分,共20分)1. 一个C程序可以包含任意多个不同名的函数,但有且仅有一个(),一个C程序总是从它开始执行。

A、过程B、主函数C、函数D、include2. C语言提供的合法关键字是()A、continueB、procedureC、beginD、append3. 设d为字符变量,下列表达式不正确的是()A、d=97B、d=’a’C、d=”a”D、d=’g’4. 10+’a’+1.5-567.345/’b’的结果是()A、longB、doubleC、intD、unsigned float5. 下列运算符中优先级最高的是()。

A、>B、+C、&&D、!=6.在do-while循环中,循环由do开始,用while结束。

必须注意的是:在while 表达式后面的()不能丢,它表示do-while循环的结束。

A、}B、()C、;D、条件表达式7. 若有语句int a[8];则下述对a 的描述正确的是()。

A、定义了一个名称为a的一维整型数组,共有8个元素B、定义了一个数组a,数组a共有9个元素C、说明数组a的第8个元素为整型变量D、以上可选答案都不对8. 在C语言中,引用数组元素时,其数组下标的数据类型允许是()。

A、整型常量B、整型表达式C、整型常量或整型表达式D、任何类型的表达式9以下说法正确的是__________。

A、用户若需调用标准库函数,调用前必须重新定义B、用户可以重新定义标准库函数,若如此,该函数将失去原有含义C、系统根本不允许用户重新定义标准库函数D、用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调用。

10.以下叙述中不正确的是__________。

A、一个变量的作用域完全取决于变量定义语句的位置B、全局变量可以在函数以外的任何部位进行定义C、局部变量的生存期只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用D、一个变量说明为static存储类是为了限制其他编译单位的引用二、填空(每小题2分,共20分)1、在C语言中,凡在一个标识符后面紧跟着一对圆括弧,就表明它是一个。

2、主函数名后面的一对圆括号中间可以为空,但一对圆括号不能。

3、C语言在定义变量的同时说明变量的,系统在编译时就能根据变量定义及说明为它分配相应大小的存储空间。

4、printf函数的”格式控制”包括两部分,它们是和。

5、scanf函数的”格式控制”后面应当是,而不是变量名。

6、复合语句是由一对括起来的若干语句组成的。

7、在C语言中,数组的首地址是。

8、由一次函数调用加一个分号构成一个语句。

9、如果想输出字符“\”,则应该在“格式控制”字符串中用表示。

10、C程序的编译单位是。

三、读程序,选结果(第1、2题各3分、第3、4题各4分,共14分)#include <stdio.h>main(){int i,j ; i=j=2;if(i)if(j==2) i++,j++,printf("\n%d,",i+j);else i--,j--,printf("\n%d,",i-j);if(i)for (j=1;j<i-1;j++)if(j==i) printf("j=%d,",j);else printf("OK");}A、4,OKB、4,2C、6,OKD、6,2#include <stdio.h>main (){int i=1,v1=0,v2=0,v3=0;for(i=5;i<15;i++){ switch (i%3) {case 1:v1++;case 2:v2++;break;default :v3++; }} printf("%d,%d,%d\n",v1,v2,v3);}A、0,1,0 B 、3,7,3 C、3,6,3 D 、2,7,3#include <stdio.h>main(){int count,j,k,s1,s2,n=5;s1=s2=0;for (count=0,j=2,k=1;count<n;++count,j+=2,k+=2);{ s1+=j; s2+=k; }printf("s1=%d s2=%d",s1,s2);}A、sl=2 s2=lB、s1=3 s2=2C、sl=10 s2=9D、sl=12 s2=11#include <stdio.h>int b=2;void fun(int b ){static int a=0; a+=2; printf("%4d",a*b);}main( ){int cc; for(cc=1; cc<=3; cc++) fun(cc); printf("\n");}A、3 6 9B、2 8 18C、2 4 6D、6 12 18四、程序填空(每空只能写一个表达式或一条语句,5分,共20分)1、用递归方法求m!#include "stdafx.h"int fac(int n);void main(){ int m;do {printf("Enter a positive integers less than 20,Please :");①;} while(m>=20);printf("%d\n", fac(m));}int fac(int n){if(n == 0 || n == 1)return 1;else②;}2、用程序将两个字符串连接起来,并输出:#include "stdafx.h"void main(int argc, char* argv[]){char str1[100]="hello";char str2[]=" world!";int i, j;for(i=0;str1[i] !='\0';i++);for(j=0;str2[j] != '\0';j++)③; /*将字符串" world!"接在"hello"的后面*/str1[i]='\0';④; /*输出字符数组str1里的字符*/}五、算法和程序(每13分,共26分)1、用N-S图表述辗转相除法求最大公约数的算法。