2012秋C程序设计试卷+答案

2012秋C程序设计试卷+答案
2012秋C程序设计试卷+答案

试题共10页-第1页

华南农业大学期末考试试卷(A 卷)

2012学年第1学期 考试科目: 程序设计(C 语言) 考试类型:(闭卷)考试 考试时间: 120 分钟

学号 姓名 年级专业

考生注意:

1、答案必须分别写在“机读卡”和“答卷”上,写在试题上不得分。

2、必须在机读卡和答卷上正确填写班级、学号、姓名等内容,否则没有考试成绩。

3、在机读卡的学生代号区只填写学号后10位。

4、考试结束,只需交“机读卡”和“答卷”,试题不用交。

一、判断题(在机读卡上答题,本大题共20小题,每小题1分,共20分)

用2B 型铅笔涂答题卡!!!按题号顺序,正确的判断涂黑“A ”、错误的判断涂黑“B ” 1、C 语言称为中级语言是因为它允许直接访问物理地址,能进行位运算,能实现汇编语言

的大部分功能,可以直接对硬件进行操作。

2、一个C 程序总是从main 函数开始执行,并且从main 函数中结束程序。

3、一个算法具有有穷性、确定性、可行性、有零个或多个输入/输出。

4、在C 程序中使用符号常量,能够增强程序的可读性,方便程序的修改。

5、C 程序中使用变量不一定要遵循“先定义,再赋值,后使用”。

6、C 语言可以通过调用标准库函数实现输入输出功能,也可以使用它本身提供的专门的输

入输出语句。

7、能正确表达逻辑关系100≤≤x 的表达式是10||0<=>=x x 。

8、在if 语句中,if 后面的表达式可以是关系表达式与逻辑表达式,而不能是算术表达式。 9、在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行。 10、带有语句标号的语句的正确书写方法是“语句标号:语句”。 11、for 循环语句只能用于循环次数已经确定的情况。

12、goto 语句和break 语句都能实现使程序执行的流程从循环体内跳至循环体外。 13、while 循环语句至少无条件执行一次循环体。

14、数组必须先定义,然后再使用。

15、定义数组时,数组下标可以是整型常量表达式。

16、已有定义int x[5];,则该定义语句说明x是具有5个元素的一维数组,且数组元素是

x[1],x[2],x[3],x[4],x[5]。

17、一个函数中有且只能有一个return语句。

18、在一个函数中定义的静态局部变量不能被另一个函数引用。

19、宏名没有作用域,在整个文件范围内都有效。

20、在文件包含预处理语句中,被包含的文件应该是目标文件而不是源文件。

二、单项选择题(在机读卡上答题,本大题20小题,每小题2分,共40分)

用2B型铅笔涂答题卡!!!按题号顺序,将答题卡上与选项对应的字母涂黑

21、在一个C程序中()。

A)main函数出现在所有函数之前。C程序不一定都有main函数

B)main函数可以在任何地方出现。一个C程序必须有且仅有一个main函数

C)main函数必须出现在所有函数之后。一个C程序只能有一个main函数

D)main函数出现在固定位置。一个C程序可以有多个main函数

22、C语言中,下列叙述正确的是()。

A)没有逻辑类型,但有构造类型B)既有逻辑类型也有构造类型

C)有逻辑类型,但没有构造类型D)没有逻辑类型也没有构造类型

23、下列转义字符中,错误的是()

A)'\"' B)'\031' C)'\b' D)'\0xa5'

24、已知梯形的上底为a,下底为b,高为h,用C语言写的正确的面积公式是()。

A)1/2*(a+b)*h B)1.0/2*(a+b)*h C)1.0/2.0(a+b)h D)1.0\2*a+b*h

25、已有定义char s1,s2;,下面正确的语句是()

A)scanf("%s%c",s1,s2); B)scanf("%s%c",s1,&s2);

C)scanf("%d%c",&s1,&s2); D)scanf("%c%c",s1,s2);

26、运行下面的程序,正确的输出结果是()

main()

{ float x=68.7563,y=-789.125;

printf("%f,%10.2f\n",x,y);

试题共10页-第2页

试题共10页-第3页

}

A )68.756303, -789.12

B )68.756303, -789.13

C )68.7563, -789.13

D )68.7563,-789.12 27、下列表达式中,值为0的表达式是()

A )3!=0

B )3!=3>4

C )3>4==0

D )6>5>4

28、设a=3,b=2,c=6,d=5,m=7,n=8,则表达式(m=a

A )0和1

B )0和8

C )1和0

D )7和8 29、下列程序的运行结果是()

main()

{ int m=8,n=34,k;

while((k=m%n)!=0) m=n,n=k; printf("%d ",n);

}

A )语法错误

B )8

C )2

D )34 30、下面程序的运行结果是()

main() { int n=1,s=5;

do{ s=s*n;n++;}while(n<5); }

A )120

B )6

C )100

D )200 31、下面程序的运行结果是()

#include void main() { int i,j,sum; for(i=1;i<7;i++){ sum=1;

for(j=i;j<7;j++) sum=sum+j; } }

A )48

B )49

C )1

D )7

32、定义如下变量和数组

int i;

int x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++) printf("%d ",x[i][2-i]); 则语句的输出结果是()。

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9

33、不能把字符串Hello!赋给数组a的语句是()

A)char a[10]={'H','e','l','l','o','!'}; B)char a[10]; a="Hello!";

C)char a[10]; strcpy(a,"Hello!"); D)char a[10]="Hello!";

34、若有int s[4]={1,2,3,4};,则s[s[0]+2*s[2]-s[3]]的值是()

A)1 B)2 C)3 D)4

35、C语言程序的三种基本结构是()

A)嵌套结构、递归结构、循环结构B)递归结构、循环机构、转移结构C)顺序结构、选择结构、循环结构D)循环结构、转移结构、顺序结构36、若函数的调用形式如下:

f((x1,x2,x3),(y1,y2))

则函数形参的个数是()。

A)2 B)3 C)4 D)5

37、执行下列程序后的输出结果是()。

int a=3,b=4;

void fun(int x1,int x2)

{

printf("%d,%d",x1+x2,b);

}

main()

{ int a=5,b=6;

fun(a,b);

}

A)3,4 B)11,1 C)11,4 D)11,6

38、以下函数值的类型是()

fun(float x)

试题共10页-第4页

试题共10页-第5页

{ float y; y=3*x-4; return(y); }

A )不确定

B )float

C )int

D )void

39、C 编译系统对文件包含命令#include"file.h"的处理通常是()。

A )编译处理之前

B )编译处理过程之中

C )程序连接时

D )程序执行的开始

40、设有以下宏定义,则执行语句x=2*(N+Y(5+1));后,x (设x 为整型)的值是()

#define N 3

#define Y(n) ((N+1)*n)

A )42

B )48

C )54

D )出错

三、阅读程序填空题(在答卷上答题,本大题共9小题,每空1分,共20分)

1、下面程序统计1至100范围的数能被3或5整除的个数,请填空完善。

#include

void main() { int i,n;

01) ;

for(i=1;i<=100; 02) ) if( 03) ) n++; printf("n=%d",n); }

2、某物品原有价值为p ,使用后其价值降低,价值的折扣率根据时间t (月数)确定如下:

?????

????≥<≤<≤<≤<折扣折扣折扣折扣无折扣10%

21t 8% 21t 125%

12t 62% 6t 3

3t 下面程序根据输入的时间和原有的价值计算物品的现有价值,请填空完善程序。

#include

void main() { int t,d; float p;

试题共10页-第6页

scanf("%d,%f",&t,&p); switch( 04) ){ case 0: d=0;break; case 1: d=2;break; case 2:

case 3:d=5;break; case 4: case 5:

case 6: d=8;break; 05) : d=10; }

printf("Price=%f\n", 06) ); }

3、该程序利用下面公式计算∏的近似值,取前n 项之和,请填空完善程序。

+-+-≈7

1513114/∏

#include void main() {

int i,n;

float t=1.0,pi=0;

scanf("%d", 07) ); for(i=1;i<=n;i++){

pi+= 08) ; t= -t; }

printf("pi=%f",pi*4); }

4、下面程序判断输入字符串是否为回文(正读和逆读都一样的字符串),请填空完善程序。

#include

void main() { char str[80]; int n,k,flag=1; gets(str);

for(n=0;str[n]!='\0';n++); for(k=0;k

if( 10) ) printf("不是回文!\n"); else printf("是回文!\n"); }

试题共10页-第7页

5、下面程序的功能是输出若干个字符串中长度最短的字符串,注意输入时直接按回车输入

的是空字符串,请填空完善程序。 #include #include void main()

{ char str1[80],min[80]; int k,len;

printf("input string str1:\n"); gets(str1);

strcpy(min,str1); len=strlen(min); gets(str1);

while(str1[0]!='\0'){ k=strlen(str1); if( 11) ){ len=k;

12) ; }

gets(str1); }

printf("len=%d,min=%s\n",len,min); }

6、下面函数的功能实现对一维数组中元素数据由小到大顺序排序,请填空完善程序。

void sort(int a[],int n) { int i,j,t;

for(i=0;i

for(j=1;j< 13) ;j++) if( 14) ){ t=a[j-1]; a[j-1]=a[j]; a[j]=t; } }

7、下列函数str_cat()的功能是连接两个字符串,请填空完善程序。

void str_cat(char str1[],char str2[2],char str[]) { int i,j;

for(i=0;str1[i]!='\0';i++) str[i]=str1[i]; for(j=0;str2[j]!='\0';j++) 15) ; 16) ; }

8、下面程序的功能是用递归方法计算n!,请填空完善程序。

#include

double fac (int n)

{ double k;

if(n<=0) exit(0); /*exit()返回操作系统*/

else if( n==1) k=1.0;

else 17) ;

return k;

}

void main()

{

int n;

scanf("%d",&n);

printf("FAC (%d)=%lf\n",n, 18) );

}

9、下面程序的功能是通过键盘输入10个整数,并把其中最大的数和最小的数显示出来。

#include

19)

void search(int a[],int n)

{ int i;

max=min=a[0];

for(i=1;i

if(a[i]>max) max=a[i];

if(a[i]

}

}

void main()

{

int array[10],i;

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

scanf("%d",&array[i]);

search( 20) )

printf("max=%d,min=%d\n",max,min);

}

试题共10页-第8页

试题共10页-第9页

四、编写程序题(在答卷上答题,本大题共3小题,第1,2小题各5分;第3小题10分,共20分)

1、编程计算分数序列

,,,,8

5

533221前10项之和,并在屏幕上显示结果。 2、编程显示1900年至2000年份中的闰年,每行最多显示10个。

3、根据如下main 函数中函数声明格式要求,编写一个判断一个数是否为素数的函数,如

果是素数返回1,否则返回0。要求画出该函数的算法流程图。 #include #include void main() {

int prime(int n); int n,m=0;

for(n=100;n<=500;n++) if(prime(n)){

printf("%6d",n); m++; }

printf("素数的个数:%d",m); }

试题共10页-第10页

答卷共2页-第1页

华南农业大学期末考试答卷(A 卷)

2012学年第1学期 考试科目: 程序设计(C 语言) 考试类型:(闭卷)考试 考试时间: 120 分钟 学号 姓名 年级专业

一、 判断题(在机读卡上答题,本大题共20小题,每小题1分,共20分)

用2B 型铅笔涂答题卡!!!按题号顺序,正确的判断涂黑“A ”、错误的判断涂黑“B ” 二、 单项选择题(在机读卡上答题,本大题共20小题,每小题2分,共40分)

用2B 型铅笔涂答题卡!!!按题号顺序,将答题卡上与选项对应的字母涂黑 三、 阅读程序填空题(本大题共9小题,每空1分,共20分)

四、编写程序题(本大题共3小题,第1、2小题各5分,第3小题10分,共20分)1、

2、

3、

答卷共2页-第2页

答卷共2页-第3页

华南农业大学期末考试(A 卷)参考答案

2012学年第1学期 考试科目: 程序设计(C 语言)

五、 判断题(机读,正确的判断涂黑“A ”、错误的判断涂黑“B ”每小题1分,共20分)

AABAB BBBAA BABAB BBABB 六、 单项选择题(机读,每小题2分,共40分)

BADBC BDBCA DCBDC ACCAB

七、 阅读程序填空题(每空1分,共20分)

八、 编写程序题(第1、2小题各5分,第3小题10分,共20分)

1、#include void main() {

int i;

float k,s=0,m=1,n=2; for(i=1;i<=n;i++){ s+=m/n; k=m+n; m=n; n=k; }

printf("s=%f",s); }

2、 #include

void main() { int y,n=0;

for(y=1900;y<=2000;y++){

if(y%4==0&&y%100!=0||y%400==0){ printf("%6d",y); n++;

if(n%10==0) printf("\n"); } } }

3、程序(5分)

int prime(int n)

{

int i=1,k;

k=sqrt(n);

while(++i<=k)

if(n%i==0) return 0;

return 1;

}

流程图(5分)

答卷共2页-第4页

相关主题
相关文档
最新文档