2010年《高级语言程序设计》期末考试A卷

贵州大学2010-2011学年第一学期考试试卷 A

高级语言程序设计

注意事项:

1. 请考生按要求在试卷装订线内填写姓名、学号和年级专业。

2. 请仔细阅读各种题目的回答要求,在规定的位置填写答案。

3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。

4. 满分100分,考试时间为120分钟。

一、选择题(共30分,每小题2分)

1. 程序经过编译生成的是( B )。

A、源文件

B、目标文件

C、可执行文件

D、编译文件

2. 在一个C程序中( C )。

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

B、main函数必须出现在所有函数之后。一个C程序必须有且仅有一个main函数。

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

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

3. 已知三角形的底为a,高为b,用C语言书写正确的面积公式为( B )。

A、 1/2*a*b

B、 1.0/2*a*b

C、 1.0/2.0ab

D、 1.0/2*ab

4.可用作用户标识符的一组标识是( C )。

A、void define

B、a3-3 _123

C、For _abc

D、2a sizeof

5. 已知int i=3,j=5; float x=2.5; double y=5.0;则y+=i-=j*=++x;的值为( C )。

A、 -9.5

B、 -9

C、 -9.0

D、-7.0

6.设 x=011; 执行printf (“%d”, x); 的输出是( B )。

A、11

B、9

C、8

D、7

7. 语句if (!i ) i++; 中的条件表达式 !i 等价于()。

A、i=0

B、i!=1

C、i!=0

D、-i

8. 设int a=4;则表达式a<1&&--a>1的运算结果和a的值分别是( B )。

A、0和3

B、0和4

C、1和3

D、1和4

9. 若有以下语句

int x = 3;

do {

printf("%d\n", x -= 2);

} while (!(--x));

运行后输出( B )。

A、1

B、1和-2

C、3和0

D、死循环,无限输出

10.以下4个关于C语言的结论中,错误的是( D )。

A、用while语句实现的循环一定可用for语句实现;

B、用for语句实现的循环一定可用while语句实现;

C、用do-while语句实现的循环一定可用while语句实现;

D、do-while语句与while语句的区别仅是关键字“while”出现的位置不同;

11. 有语句int a[][3] = {1,2,3,4,5,6}; 则a[1][1]的值是( D )。

A、 1

B、2

C、4

D、5

12. 判断字符串是否相等,下面语句中正确的( D )。

A、 if(str1=str2)

B、 if(str1= =str2)

C、 if(strcpy(str1,str2))

D、 if(strcmp(str1,str2)= =0)

13.有一个如下定义的函数

f(double x)

{

printf("%f", x);

}

则该函数的返回类型是( A )。

A、 int

B、double

C、void

D、无法确定

14. C语言中共用体类型变量在程序执行期间( B )。

A、所有成员一直驻留在内存中

B、只有一个成员驻留在内存中

C、部分成员驻留在内存中

D、没有成员驻留在内存中

15. 假设有int a[3][5]; 下列选项中,指向元素a[2][3]的指针是( C )。

A、*(a[2]+3)

B、(*a+2)+3

C、*(a+2)+3

D、*(*(a+2)+3)

二、填空题(共10分,每空1分)

1.C语言中普通整型变量的类型说明符为 int ,在内存中占 2 字节,有符号普通整型的数据范围是-32768—32767。

2.若有定义:enum xx

{ a, b, c=8,d };

则b的值为 1 ,d的值为 9 。

3.利用scanf语句读入一个长整型变量的值,需要用到的格式控制符为。4.若有定义:int x[][3]= {20, 40, 60, 80, 100, 120}, *p=x; 则数组元素*(p+4) 的值为,*p+4的值为。

5.已知union data{int i; char c; float f;}a;

则变量a占用的存储空间大小为字节。

6. 有定义:static int a[][3]={1,2,3,4,0,5,8,9,10};,则printf(”%d”,*(*(a+1)+2));

语句的输出结果为。

三、程序阅读题(共12分,每小题3分)

1. 读下列程序,写出程序的输出结果。

main( )

{ int a=0,b=4,c

c=(++a>1)&&(b++>=3);

printf("%d,%d,%d",a,b,c);

}

输出结果为:

2.读下列程序,写出程序的输出结果。

main()

{ int a;

for ( a=0; a<3; a++ )

switch (a)

{case 1: printf ("aa\n");

case 2: printf ("bb");

default: printf ("cc");

}

}

输出结果为:

3.读下列程序,写出程序的输出结果。

#include

void main (){

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

int *p;

for (p=&x[3];p

if (*p%3==0 )

printf ("%d\n", *p);

}

输出结果为:

4.运行以下程序,若输入:5 7<回车>时,写出程序的输出结果。

#include

void fun1(int *p1, int *p2)

{ int t;

t=*p1; *p1=*p2; *p2=t;

}

void fun2(int x,int y)

{ int t;

t=x; x=y; y=t;

}

void main()

{ int x,y;

int *p1,*p2;

scanf("%d%d",&x,&y);

p1=&x; p2=&y;

if(x

printf("x=%d,y=%d\n",x,y);

if(x>y) fun2(x,y);

printf("x=%d,y=%d",x,y);

}

输出结果为:

四、程序填空题(共18分,每空2分)

1. 将输入的字符串按逆序打印出来,例如输入abcd,则按dcba顺序打印出来。

#include

main( )

{ char *str,s[20]; int n;

str= (1) ;

scanf(“%s”,(2) );

n=strlen( str);

while(--n>=0)

{ str=&s[(3) ];

Printf(“%c”,*str);

}

}

2.以下程序完成的功能是:将一个字符数组中存储的字符串复制到另一个字符数组中然后输出,不使用strcpy函数,请将程序中的空白填写完整。

#include

#include

#define MAX 20

void main(){

char s[MAX]="Hello World!", t[MAX];

(1)

for(i=0; (2) ;i++)

(3)

printf("%s\n%s\n",s,t);

}

3.下面是一个统计已经建好的链表的结点个数的程序,head是链表的头指针,统计结果存放在c变量中。请填空。

struct link

{ char data;

struct link *next;

}*head;

void main()

{ struct link *p;

(1)

p=head;

while ((2) )

{ p= (3)

c++;

}

printf (“c=%d”,c);

}

五、编程题(共30分,每小题10分)

1. 已知abc+bca=1123,其中a、b、c均为0 ~ 9中的一位数,编写程序求出a、b、c分别为什么数字。

2.有一分段函数,y=f(x),当x<6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9;任意输入一个x的值,根据情况输出y的值。

3.一个猴子它每天吃的桃子数是上一天的两倍再多一个,已知他第一天吃的桃子数是一个,编程求他第五天吃了多少个桃子,用递归方法实现。

相关文档
最新文档