华南农业大学期末考试试卷( A卷)
2013学年第1学期
考试科目: 高级语言程序设计
考试类型:(闭卷) 考试时间: 90 分钟
考生须知:
1. 必须在答卷上正确填写班级、学号、姓名等内容。 2. 答案写在答卷上,写在试卷等其它地方不得分。 3. 试卷上出现的int类型变量均为4字节存贮。 4. 上机考试部分,考试时间与地点另行安排。
一、单项选择题(共10题,每题1分)
1. double x=3.1415 ;int a=8, 表达式a/3*3+(int)(x*1000+0.5)/1000.0 的值为( ) A.11.141; B.9.142; C.9.141; D.11.142;
2. 若有int s[4] = {4,3,2,1};,则s[s[0]-2*s[2]+s[3]] 的值是( ) A.1 B. 2 C. 3 D.4
3. 在a=0,b=5;则执行(a=3)&&(a>b)&&(b--);语句后,a和b的结果分别是( )
A.0,5 B.3,5 C.3,4 D.3,5
4. 下面对C语言运算符的优先级叙述正确的是( )。
A. !(非) > 关系运算符 >算术运算符 > &&(与) > ||(或) > 赋值运算符 B. 算术运算符 >!(非) >关系运算符 > &&(与) > ||(或) > 赋值运算符 C. 算术运算符 > 关系运算符 > !(非) > &&(与) > ||(或) > 赋值运算符 D. !(非) > 算术运算符 > 关系运算符 > &&(与) > ||(或) > 赋值运算符
5.下面程序段的输出结果是( )。 #include \stdio.h\ int main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(\ } A.6, 1 B.2, 1 C.s=6, 0 D.2, 0
6.若有代数式x3?x,则正确的C语言表达式是( )
B. abs(pow(x,3)+sqrt(x))
第1页 共7页
A. fabs(x*3+sqrt(x))
C. abs(pow(x,3.0)+pow(x,0.5)) D.fabs(pow(x,3.0)+sqrt(x))
7. 若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是( ) .. A.for(i=1,p=1;i<=5;) p*=i++; B.p=1;for(i=1;i<=5;) {p*=++i;} C.i=1;p=1;while(i<=5) {p*=i; i++;}
D.i=1;p=1;do{p*=i; i++; } while(i<=5);
8. 已知函数fun的定义如下
void fun(char *s, char *r) { while (*s++=*r++); } 则该函数的功能是( )
A.串复制 B.求串的长度 C.串比较 D.串反向
9. 下面程序段的运行结果是( ) a=1; b=2; c=2; while(a
10. 下面程序段没有按缩进方式排版,请分析,当a=1,b=3,c=5,d=4时,执行后x的值是( if(a
A.1 B.2 C.3 D.6
二、看程序写结果(共6题,每题4分)
1. #include
int main () {
float a = 3.4; int b, c=15, d; b = a * 3; d = c/10;
printf(\ b, d); }
请写出运行结果:
第2页 共7页
)
2. #include
int main() { char c; int v0=0 ,v1=0 ,v2=0; do {
switch (c=getchar()) { case 'a' : case 'A': case 'e' : case 'E': case 'i' : case 'I': case 'o' : case 'O': case 'u' : case 'U': v1+=1; default : v0+=1; v2+=1; } } while(c!='\\n');
printf(\}
由键盘输入“ADescriptor回车”,请写出运行结果:
3. #include
int main() {
int x=4; while(x<30)
{ printf(\ if(x%5= =0) break;
else if(x%3= =1) {x*=2; continue;} x++; } }
请写出运行结果:
4. #include
char arr[]=\ char *ptr;
for(ptr=arr+4;ptr>=arr; ptr--) printf(\ }
请写出运行结果: 5.
#include \
第3页 共7页
#include \#include \#define N 5 int main()
{ int a[10][10], i, j, m; m= N /2; for(i=0; i< N; i++) for(j=0; j< N; j++) { if(abs(i-m)>abs(j-m)) a[i][j] = abs(i-m); else a[i][j] = abs(j-m); }
for(i=0; i { for(j=0; j 请写出运行结果: 6. 有下面结构体类型定义, struct node { char info; struct node *link; }; 假设已存在如下链表, head A B C 以head为实参调用如下函数, void func(struct node *head) { struct node *p = head, *p2=NULL; int i=0; while( p!= NULL) { putchar(p->info); p2=p; p = p-> link; } putchar('\\n'); p2->link=head; for(i=0, p = head; i<8; i++) {putchar(p->info); p = p-> link; } } 请写出运行结果: D 三、看程序填空题(共8空,每空2分) 1.一个函数如下,用程序实现之。 #include 第4页 共7页 (x?0)?x ?y??6x?1 (0 ?? x?15)?3x?11 (x??15)?int main() { float x, y; scanf(\%f\); if (x<0) y = x; else if (______【1】 ) y = 6*x-1; else y = 3*x-11 ; printf(\); } 2. 下面函数实现将字符串中ASCII形式表示的整数转变为数值形式,请填空。 int trans(char *s) { int ret=0; while(______【2】 ) { ret=ret*10+(*s-'0'); s++; } return ret; } 3. 下面程序实现由键盘输入20个整数,统计不同数字的个数,请填空。 #include\int main() { int a[20]; int i,t,p=0; for(i=0;i<20;i++) { scanf(\ for(t=0;t { 【3】 } if(t= =i) p++; } printf(\} 4. 下面程序实现求出数组元素中的最大值,请填空。 #include \int main() { int c[10]={78,45,175,251,249,34,9,179,50,210}; int i,max; 【4】 ; 第5页 共7页