当前位置:文档之家› C语言试卷带答案

C语言试卷带答案

C语言试卷带答案
C语言试卷带答案

姓名_________________ 班级______________ 学号_____________

装 订

甘 肃 工 业 职 业 技 术 学 院

2008-2009学年度第一学期《C 语言程序设计》试卷(A)

一.选择题(每小题2分,共40分)

1、下列可以正确表示字符型常量的是( ) A “\n ” B “a ” C ‘\t ’ D 298

2、已经int i ; float f ;正确的表达式是 ( )

A (int f )%i

B int( f ) % i

C int (f % i) D(int)f% i 3、已知 int a,b ;执行语句a=( b=2*3,b*5) , b+6 ;变量a 的值是( ) A 、36 B 、30 C 、12

D 、6

4、在C 语言中,5种基本数据类型的存储空间长度的排列顺序为( C ) A 、 char

5、下列定义数组的语句中正确的是哪个 ( )

A 、int a (10)

B 、char str [ ]

C 、int n=5

D 、#define size 10

int a[4][n] char str1[size],str2[size+2]

6、若有说明int a[ ][3]={ 1,2,3,4,5,6,7},则a 数组第一维的大小为( ) A 、2 B 、3 C 、4 D 、不确定

7、已知:char s[10] ,*p=s;下列错误的表达式是 ( )

A 、s=p+5

B 、p=s+5

C 、s[2]=p[3]

D 、*p=s[0]

8、设有30个学生的成绩表,其中学号(int num )、姓名(char name )、成绩(int score ),在下面结构体数组的定义中,不正确的是( D )

A 、struct student

B 、struct student { { int num; int num; char name[10]; char name[10]; int score; int score; }stud[30]; };

struct student stud[30];

C 、struct

D 、struct stud[30] { { int num; int num; char name[10]; char name[10]; int score; int score;

}stud[30]; }; 9、设有如下形式的字符数组定义:

satic char str[ ]=”beijing ” ;则执行下列语句后的输出结果为 ( )

printf(“%d \ n ”,strlen (strcpy (str,”hello ”)));

A 、7

B 、8

C 、5

D 、9 10、若有以下数组定义:char a[]=”abcde ”,b[]={‘a ’,’b ’,’c ’,’d ’,’e ’};则正确的描述是( B )

A 、 a 数组长度和b 数组长度相同

B 、 a 数组长度大于b 数组长度

C 、 a 数组长度小于b 数组长度

D 、 a 数组和b 数组存放相同的内容 11、输出较大字符串的正确语句是( C ) A 、if(strcmp(str1,str2)) printf(“%s ”,str1); B 、if(str1>str2) printf(“%s ”,str1);

C 、if(strcmp(str1,str2)>0) printf(“%s ”,str1);

D 、if(strcmp(str1)>strcmp(str2)) printf(“%s ”,str1);

12、若调用一个函数,且此函数中没有return 语句,则正确的说法是 ( ) A 、该函数没有返回值 B 、返回若干个系统默认值 C 、能返回一个用户所希望的函数值 D 、返回一个不确定的值 13、在一个文件中定义的全局变量的作用域为( D ) A 、本程序的全部范围

B 、离定义该变量的位置最近的函数

C 、函数内部全部范围

D 、定义该变量的位置开始到本文件结束 14、以下程序执行的结果是 ( ) int i=10;

main( ) { int j=1;j=func( ); printf(“%d , ”, j); j = func ( ); printf (“%d \n ” , j);} func ( ) { static int k=0; k=k+i; i=i+10 ; return (k);}

A 、0,0

B 、10,20

C 、10,30

D 、20,20 15、要想使语句printf(“%s ”,str);显示yes!,str 可以定义为( B ) A 、char str=”yes!” B 、char str[5]=”yes!” C 、char str={’y ’,’e ’,’s ’,’!’} D 、#define str “yes!” ;

16、下面有关for 循环的正确描述是 ( )

A、for循环只能用于循环次数已经确定的情况

B、for是先执行循环体语句,后判断表达式

C、在for循环中,不能用break语句跳出循环体

D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

17、以下不正确的说法是()

A、在C语言中允许函数嵌套调用

B、函数值类型与返回值类型出现矛盾时,以函数值类型为准

C、形参可以是常量、变量和表达式

D、C语言规定,实参和形参之间可以是值传递或地址传递

18、要使指针变量p指向一维数组a的第三个元素(下标为2),正确的赋值表达式是()

A、p=&a 或p = &a[2]

B、p = a +2 或p = &a[2]

C、p=&a + 2 或p = a[2]

D、p = a + 2 或p = a[2]

19、二维数组a[4][5],将其转换成等价的一维数组b[20],问原二维数组中元素a[2][3],在转换成一维数组后再一维数组中的下表应该是b[ ] ( )

A、6

B、9

C、13

D、14

20、已知:char c [9] = “computer”,*s=c ; int i ;则此列的输出语句中,错误的是()

A、printf( “%s” ,*s);

B、printf ( “%s” ,c) ;

C、printf( “%s” , s);

D、for(i=0 ; i<8 ; i++) printf (“%c”,c [i]);

二、填空题(每小题2分。共20分)

1、写出下列表达式的值:

a+b%3*( int )( a-b )/4 ( 设a= ,b = 8 )

2、写出下面各逻辑表达式的值。(设a =3,b = 4,c=5)

! (a+b) + c-1 && b +c/2

3、下面程序的运行结果是

static char c[5]={ ‘a’,’b’,’\0’, ‘c’,’ \0’ };

printf(“%s”,c);

4、二维数组A【1】【2】中元素的值是 5 。

A[4][5]={{2,2,4},{4,6,5,6},{0}};

5、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。

6、执行下面的语句后,n的值是12 。

int m[20], *p1=&m[5],*p2=m+17,n;

n=p2-p1;

7、p为一指针变量,写出表达式,用以实现:使p指向数组后一个元素,然后取该元素值++*p 。

8、设有定义语句“struct { int x ; int y ; }a = {1,5 },b = { 3,6 };”则执行语句printf (“ %d,%d,%d \n” , ,,+;后的结果

是。

9、将数组元素7,5,2,8,3,9按冒泡排序方法从小到大的顺序排序,问共需趟的排序,第3趟排序的结果是。三、读程序,写结果(每小题4分,共20分)

1、main() 1、显示结果:5,5,5,5

{

int i,j,m,n;

i= ( j=5,m = j- - );

n = ++j ;

printf(“%d,%d,%d,%d\n”,i,j,m,n);

}

2、#include <>

main( ) 2、显示结果:

{ int a[ ]={1,2,4,6,8,10},*p;

p=a;

*(p+2)+=3;

printf(“%d,%d \n” ,*p+2 ,*(p+2));

}

3、main() 3、显示结果:a=2,b=8

{

int a=1,b=10;

do

{

b - = a;

a++;

}while(b--<0);

printf(“a=%d,b=%d\n”,a,b);

}

4、看程序填空:程序完成输出图形* main()

*** { int i , j ;

***** for(i= 1;i<=5; i++)

******* {for ( j=1; ;j++)

********* printf(“*”);

printf(“\n”);}

}

5、void swap (int *p ,int *q )

{ int t; 5、显示结果:

t = *p; *p = *q ; *q = t ; }

void exchange ( int *q1 ,*q2 ,*q3) {

if (*q1>*q2)swap(q1,q2); if (*q1>*q3)swap(q1,q3); if (*q2>*q3)swap(q2,q3); }

void main ( ) {

int a=3,b=8,c=6 ;

int *p1=&a , *p2=&b , *p3=&c ; exchange (p1,p2,p3);

printf(“a=%d,b=%d,c=%d ”,a ,b,c); }

四、编程题(第1小题8分,第2小题12分,共20分) 1、编写程序实现26个英文字母的倒序输出。

2、设计一个函数,用于计算下面数列前n 项之和(以n 为形参变量):2/1 , 3/2 , 5/3 , 13/8 , 21/13 .......

1、main()

{

char c1=’z ’; while(c1>’a ’) {

printf(“%3c ”,c1);

c1--; }

printf(“%3c ”,c1);

} 2、#include<>

void s(int n)

{

float sum=0; int i,j=2,k=1,t;

for(i=0;i

{ sum=sum+(float)j/k;

t=k; k=j;

j=k+t;

}

printf("%f",sum); }

main()

{

int n; scanf("%d",&n); s(n); }

相关主题
文本预览
相关文档 最新文档