2009(1)程序设计答案
- 格式:doc
- 大小:77.50 KB
- 文档页数:6
华南农业大学期末考试试卷(A卷)2009学年第 1 学期考试科目:程序设计考试类型:(闭卷)考试考试时间:120 分钟学号姓名年级专业考试须知:1、答案必须写在“机答卡”和“答卷”上,写在试卷上不得分2、考试完毕,只回收“机答卡”和“答题纸”,不回收试卷3、必须正确填写年级专业、学号、姓名等内容,否则,没有考试成绩一、选择题(每小题2分,共40分)1、以下标识符中, 合法的用户标识符为()(A) x_123 (B) long (C) x*y (D) 1232、下面不正确的字符串常量()(A)"C" (B) "2009" (C)'test' (D) " "3、运行完下面的C语言程序段后,m的值是()。
int n = 4,m; m = --n;(A) 3 (B) 5 (C) 6 (D) 44、下列表达式中,结果为1的表达式是()(A) 6>5>4 (B) !6 (C) !2>3 (D) !0==15、能正确表示逻辑关系:“a≥20或a≤0”的C语言表达式是 ( )(A) a>=20 or a<=0 (B) a>=0 | a<=20(C) a>=20 && a<=0 (D) a>=20‖a<=06、已知m=48,ch=’b’,n=21,则表达式(m>=n&&!n&&ch<’b’)的值是()(A) 0 (B) 1 (C) 真 (D) 假7、设有如下程序段 int k=10;while(k=1) k--;则下面描述中正确的是()。
(A)循环体语句执行11次(B)while循环执行1次(C)循环是无限循环(D)循环体一次也不执行8、下列叙述中,正确的是()(A)宏替换不占用运行空间,只占用编译时间(B)引用带参数宏时候,实际参数的类型应与宏定义时的形式参数类型一致(C)宏名必须大写(D)在程序的一行上可以出现多个有效的宏定义9、调用scanf(“%f,%f”,&a,&b);时,正确的键盘输入是()(A)92.3,23.6 (B) a=92,b=23 (C)92,23 (D) 92 2310、C程序由main开始执行,函数main的位置是()(A)必须在其他函数之前(B)任意函数之前或之后(C)必须在其它函数之后(D)必须在程序的中间11、设有宏定义:#define SUM 2+3,则表达式5+SUM*5的值为:(A)50 (B)30 (C)22 (D)2012、下面正确定义数组的语句是()(A) int x[][]={2,1,3,2,5,6} (B)int x[3][]={2,1,3,2,5,6}(C)int x[][3]={2,1,3,2,5,6} (D) int x[3,3]={2,1,3,2,5,6}13、若有以下程序段:int x[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c=’a’,d,g;则数值为9的表达式是()(A)x[g-c] (B)x[4] (C)x[’d’-’c’] (D)x[’d’-c+5]14、若已定义x和y为double类型,则表达式x=1,y=x+5/2 的值是(A)3 (B)2 (C) 3.0 (D)2.515、已知梯形的上底为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 16、字符串”\\\\abcd\\\\\t\n”在内存中所占的字节数()。
(A)12 (B)9 (C)10 (D)1117、设有说明语句:char a='\53';则变量a ( )(A) 包含1个字符 (B) 包含2个字符 (C) 包含3个字符 (D) 说明不合法18、假设struct student{ int num;float score;} stu_1;则下面的叙述不正确的是()(A)stu_1是用户定义的结构体类型名(B)struct student是用户定义的结构体类型(C)struct是结构体类型的关键字(D)num 和score都是结构体成员名19、在VC中,设int a[10],假设数组a开始于内存十六进制的4000单元,每个int 类型数据占用4个字节,则a[3]存储始于十六进制地址为()(A) 4012 (B) 4004 (C) 4008 (D)400C20、以下述叙正确的是()(A) 在C程序中注释说明只能位于一条语句的后面(B) C程序的每行中只能写一条语句(C) C语言本身没有输入输出语句(D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误二、是非判断题(每小题1分,共10分, A表示真,B表示假)21、数组名作为函数的实参,实际上传递给形参的是数组的全部元素的值。
22、在main函数中说明的变量,有效范围是main函数。
23、一个函数有且只能有一个return语句。
24、地址运算符&能运用于变量和数组元素的运算。
25、执行语句for(m=1;m++<7;);后变量m的值是8。
26、对于“while (循环条件) {循环体};”,这个循环结构有可能一次循环体的内容都无法执行。
27、函数的实参和形参可以是相同的名字。
28、循环体中continue语句的作用是结束整个循环的执行。
29、在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。
30、C语言中的函数可以嵌套定义,也可以递归定义。
三、写出下列程序段的运行结果(每小题2分,共10分)31、下面程序段的输出结果是()int main(){printf("**\\abd\bc\t\r\\*ABCD\105\x46*\\");return 0;}(A)\*ABCDEF*\(B)**ABCDEF105*\ (C)**ABCDEF*\ (D)编译错误32、下面程序的运行结果是()int main(){ int i,j,sum;for(i=2;i<7;i++){ sum = 0;for ( j=1;j<7;j++ ) sum = sum + j;}printf("%d",sum);return 0;}(A)48 (B)22 (C)1 (D)2133、int main(){ int x[3],i,j,k;for(i=0;i<3;i++) x[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)x[j]=x[j]+j;printf("%d",x[1]);return 0;}(A)2 (B)1 (C)0 (D)334、设整型变量x、y、z分别为3、2、1,则下面程序段的输出结果是:if(x>y) x=y;if(x>z) x=z;printf("%d,%d,%d\n",z,y,x);(A)3,2,1(B)1,2,3(C)1,2,1(D)1,1,135、int a=3, b=4;void fun(int x1, int x2){ printf("%d,%d",x1-x2,b);}int main(){ int a=5, b=6;fun(a,b);return 0;}(A)-1,4 (B)11,1 (C)11,4 (D)11,6四、程序填空题 (每空2分,共20分)1、连接两个字符串void str_cat(char s1[],char s2[],char s[]){ int i,j;for(i=0;s1[i]!='\0';i++) s[i]=s1[i];for(j=0;s2[j]!='\0';j++) 36 ;37 ; }2、根据公式计算e=1+1/1!+1/2!+1/3!+...+1/n!+...int main(){ double e=1.0,x=1.0,y=1.0; int n;scanf("%d", 38 );while(n){ y=x*y; e=e+ 39 ;x++; 40 ;}printf("e=%f", e );return 0;}3、选择排序(Selection sort)是一种简单直观的排序算法。
它的工作原理如下。
首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。
以此类推,直到所有元素均排序完毕。
void selectionSort(int data[], int count){ int i, j, min, temp;for (i = 0; i < count - 1; i++) {min = i;for (j = i+1; j < count; j++)if (data[j] < data[min]) 41 ;42 ; 43 ; 44 ; }}int main(){int a[6]={197,342,20,41,78,266},i;selectionSort( 45 ,6);for(i=0;i<6;i++) printf("%d ",a[i]);return 0;}五、编程题(每题10分,共20分)1、如果一个正整数的所有真因子(含1但不包含该正整数本身)之和等于该正整数,则称这个正整数为完全数,如6=1+2+3,28=1+2+4+7+14等。
编写一个求完全数的函数int perfect(int n),n为需要被判断是否为完全数的正整数,并在main()里被调用,产生不超过1000的所有完全数。
2、编写一函数,找出N*N数组主对角线上元素的最小值,并在main()函数里调用它,要求数组元素通过键盘输入。
农业大学期末考试答案(A卷)2009学年第 1 学期考试科目:程序设计考试类型:(闭卷)考试考试时间:120 分钟学号姓名年级专业题号一二三四五总分得分评阅人一、选择题(每小题2分,共40分)1 A2 C3 A4 D5 D6 A7 B8 A9 A 10 B11 C 12 C 13 D 14 C 15 B16 D 17 A 18 A 19 D 20 C二、是非判断题(每小题1分,共10分,真用A表示,假用B表示)21 B 22 A 23 B 24 A 25 A26 A 27 A 28 B 29 A 30 B三、写出下列程序段的运行结果(每小题2分,共10分)31、A 32、D 33、A 34、C 35、A四、程序填空题 (每空2分,共20分)36、s[i++]=s2[j]37、s[i]='\0'38、&n39、1/y40、n--41、min = j42、temp = data[i]43、data[i] = data[min]44、data[min] = temp45、a五、编程题(每题10分,共20分)1、评分细则:思路正确,代码只完成部份,给5分,其他酌情给分int perfect(int n){ int i,sum=0;for(i=1;i<n;i++)if(n%i==0) sum=sum+i;if (sum==n) return n;else return -1;}int main(){ int j;for(j=1;j<=1000;j++)if( perfect(j) !=-1 ) printf("%d ",j);}2、评分细则:思路正确,代码只完成部份,给5分,其他酌情给分#define N 3int minMatrix( int a[][N]){ int i,j,min;min=a[0][0];for(i=0;i<N;i++)for(j=0;j<N;j++){ if (i==j)if (a[i][j]<min ) min=a[i][j];}return min;}int main(){ int a[N][N],i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&a[i][j]);printf("%d",minMatrix(a));}。