C语言试卷带答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名_________________ 班级______________ 学号_____________
装 订
甘 肃 工 业 职 业 技 术 学 院
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、显示结果: