吉林师范大学2023年C语言期末模拟考试
本试卷为吉林师范大学2023年C语言期末模拟考试,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言期末模拟考试
一、理论基础 (共20题,每题1分,共计10分)
( C )
1、设整型变量n的值为2,执行语句"n+=n-=n*n; "后,n的值是________。
( C )
2、若a为int类型,且其值为3,则执行完表达式a+= a-=a*a后,a的值是________。
( B )
3、将八进制数307转换成二进制数是________。
( A )
4、与数学公式a•b/x•y不等价的语句是________。
( A )
5、以下不合法的字符常量是________。
( B )
6、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是________。
( D )
7、在定义 int a[10]; 之后,对 a 的引用正确的是______。
( B )
8、以下叙述中 , 不正确的是 __________.
( B )
9、现有定义int a; double b; float c; char k; 则表达式a/b+c-k值的类型为
( D )
10、与二进制小数0.1等值的十六进制小数为________。
( D )
11、以下四个选项中,不能看作一条语句的是________。
( B )
12、若题中各变量已正确定义并赋值,下面符合c语法的表达式是________。
( C )
13、下列字符常量的写法中,错误的是________。
( B )
14、下列选项中,哪一项不是c语言中的位运算符________。
( A )
15、a、b分别是整数6、-2,那么a对b求余与b对a求余的值分别为
( B )
16、流程图中,输入/输出框用( )图形表示?
( C )
17、执行以下语句后a 的值为________。 int a,b,c; a=b=c=1; ++a||++b&&++c;
( C )
18、设c 语言中,一个int 型数据在内存中占2 个字节,则unsignedint 型数据的取值范围为________。
( D )
19、设 a 为整型变量,初值为 12,执行完语句 a+=a-=a*a 后,a 的值是()。
( B )
20、下面四个选项中,均是不合法的浮点数的选项是()。
二、控制结构 (共10题,每题1分,共计10分)
( A )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
( D )
2、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
( D )
3、能正确表示a和b同时为正或同时为负的逻辑表达式是________。
( C )
4、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d) y=0; else y=1; 该语句所表示的含义是________。
( D )
5、c语言对嵌套的if语句的规定是:else总是与 配对。
( C )
6、有以下程序 main( ) { char k; int i; for(i=1;i<3;i++) { scanf("%c",&k); switch(k) { case ‘0’: printf("another\n"); case ‘1’: printf("number\n"); } } } 程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
( C )
7、下列说法中不正确的是________。
( A )
8、若x和y是程序中的两个整型变量,则下列if语句中正确的是________。
( A )
9、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为
( A )
10、main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b);} 该程序的输出结果是( )
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、若i、j已定义为int型,则以下程序段中内循环的总的执行次数是________。 for(i=5;i>0;i--) for(j=0;j<4;j++)…
( B )
2、下列for循环的次数为________。 for( int i=0,x=0;!x&&i<=5;i++)
( C )
3、下面不属于条件语句关键字的是________。
( B )
4、有如下程序 #define N 4 #define M N+2 #define NUM 2*M+1 main() { int i; for(i=1;i<=NUM;i++)printf("%d\n",i); } 该程序中的for循环执行的次数是______。
( B )
5、若有程序段:x=99; while(x-2) x--; 则循环结束时,x=________。
( C )
6、以下程序的输出结果是 _______ 。 main( ) { int i=0,s=0; for (;;) { if (i==6) break; i++; s+=i; } printf("%d\n",s); }
( C )
7、以下叙述中正确的是________。
( A )
8、以下程序段,while循环执行的次数是 int k=0; while(k=1) k++ ;
( C )
9、以下描述中正确的是________。
( B )
10、以下程序的输出结果是________。 。 main() { int x=1,y=0,a=1,b=1; switch(x) { case 1:switch(y) { case 0:a++; break; case 1:b++; break; } case 2:a++; b++; break; } printf("%d,%d\n",a,b); }
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、设有以下定义和语句: char str[20]一"program",*p; p=str: 则以下叙述中正确的是________。
( B )
2、以下对二维数组a进行正确初始化的是________。
( A )
3、执行完语句int [] x= new int [25]; 后,则下列哪项说法是正确的
( A )
4、数组a[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素a[5,5]的地址为 (15) 。
( A )
5、下列定义数组的语句中,正确的是______。
( B )
6、c语言中,数组名代表________。
( C )
7、下列各定义数组的语句中不正确的是________。
( D )
8、若二维数组a 有m 列,则计算任一元素a[i][j] 在数组中位臵的公式为(假设a[0][0] 位于数组的第一个位臵上) ________。
( D )
9、下列定义数组的语句中不正确的是________。
( A )
10、下列定义数组的语句中正确的是()。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
( D )
2、下列字符串中,不可以用作c标识符的是________。
( B )
3、下列变量定义中,错误的是______。
( B )
4、以下关系表达式中,其值为true的是________。
( C )
5、顺序执行下列程序语句后,则b的值是 string a="hello"; string b=a.substring(0,2);
( D )
6、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
( D )
7、以下选项中,合法的 c 语言常量是________。
( A )
8、以下选项中关于 c 语言常量的叙述错误的是________。
( C )
9、判断两个字符串是否相等,正确的表达方式是________。
( D )
10、判断字符串a 和b 是否相等,应当使用。
六、函数/函数指针 (共10题,每题1分,共计10分)
( D )
1、设函数fun的定义形式为________。 void fun(char ch, float x ) { … } 则以下对函数fun的调用语句中,正确的是________。
( B )
2、若有以下说明和定义 fun ( int *c ) { } void main () { int ( *a )() =fun , *b (), w[10] , c ; … } 在必要的赋值之后,对 fun 函数的正确调用语句是______。
( C )
3、以下正确的叙述是______。
( B )
4、在一个c语言程序中,________。
( A )
5、对函数int max(int a,int b=0,int c=0,int d=0,int e=0); 下列调用方式正确的是________。
( D )
6、以下正确的说法是______。
( D )
7、________不属于程序的基本控制结构。
( B )
8、若有定义语句:char s[10]="1234567\0\0"; 则strlen(s)的值是________。
( B )
9、有以下程序: int*f(int*x,int*y) { if(*x<*y) return x; else return y; } main() { int a=7,b=8,*p,*q,*r; p=&a; q=&b; r=f(p,q); print("% d,% d,% d\n",*p,*q,*r); } 执行后的输出结果是 ______。
( C )
10、c语言规定,在一个源程序中,main函数的位置________。
七、指针 (共10题,每题1分,共计10分)
( C )
1、设fun()函数的定义形式为 void fun(char ch,float x) {…}则下列对函数fun的调用语句中,正确的是________。
( C )
2、c语言规定,函数返回值的类型是由( )决定的。
( C )
3、已知int a[3][4]; 则对数组元素引用正确的是____
( D )
4、有如下程序 #include<stdio.h> void main() { char ch[80]="123abcdefg*&"; int j; long s=0; puts(ch); for(j=0;ch[j]>'\0';j++) if(ch[j]>='a'&&ch[j]<='z') ch[j]=ch[j]+'e'-'e'; puts(ch); } 该程序的功能是 __________.
( B )
5、以下能对二维数组a进行正确初始化的语句是________。
( B )
6、若数组a定义为int[][]a=new int[3][4],则a是________。
( B )
7、设 void f1 (int *m,long & n); int a; long b; 则以下调用合法的是______ 。
( C )
8、有以下函数 int fun(char *s) { char *t=s; while(*t++); return(t-s) } 该函数的功能是______。
( A )
9、下面说法正确的是________。
( B )
10、执行下列语句后的结果为________。 int x=3,y; int *px=&x; y=*px++;
八、结构体 (共10题,每题1分,共计10分)
( B )
1、struct ex { int x ; float y; char z ; } example; 则下面的叙述中不正确的是________。
( B )
2、有以下程序 struct stu { char name[10]; int num; float totalscore; }; void f(struct stu *p) { struct stu s[2]={{"sundan",20044,550} ,{"penghua",20045,537}}, *q=s; ++p ; ++q; *p=*q; } main() { struct stu s[3]= {{"yangsan",20041,703},{"lisiguo",20042,580}}; f(s); printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].totalscore); } 程序运行后的输出结果是________。
( B )
3、以下对枚举类型名的定义中正确的是______。
( A )
4、以下结构体类型说明和变量定义中正确的是________。
( B )
5、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。 struct node { char data; struct node *next; } a,b,*p=&a,*q=&b;
( D )
6、以下程序的输出结果是______。 struct har { int x,y; struct har *p; } h[2]; main() { h[0].x=1; h[0].y=2; h[1].x=3; h[1].y=4; h[0].p=&h[1]; h[1].p=h; printf("%d%d\n",(h[0].p)->x,(h[1].p)->y); }
( B )
7、以下对枚举类型名的定义中正确的是________。
( A )
8、在下列程序段中,枚举变量c1,c2的值依次是________。 enum color { red, yellow, blue=4, green, white } c1,c2; c1=yellow; c2=white; printf("%d,%d\n",c1,c2);
( C )
9、enum a { sum=9,mon=-1,tue } ; 定义了________。
( A )
10、定义共用体的关键字是________。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、下述程序的运行结果是________。 main() { char*s1="abdui"; char*s2="abdug"; int t; t=strcmp(s1,s2); printf("%d",t); }
( D )
2、下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。 #include <stdio.h> main( ) { int a,b,c,i; a=c=0; for(i=0;i<=10;i+=2) { a+=i; ________; c+=b; } printf("偶数之和=%d\n",a); printf("奇数之和=%d\n",c-11); }
( D )
3、以下程序运行后的输出结果是 __________. #include<stdio.h> void main() { int i=10,j=0; do { j=j+1; i--; } while(i>2); printf("%d\n",j); }
( D )
4、#include<stdio.h> #define N 4 void fun (int a[][N], int b[], int flag) { int i, j; for (i = 0; i < N; i++) b[i] = a[i][0]; for (j = 1; j < N; j++) { if (flag && (b[i] > a[i][j]) && (b[i] < a[i][j])) b[i] = a[i][j]; } } void main() { int x[N][N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, y[N], i; fun (x, y, 1); for (i = 0; i < N; i++) printf ("%d,", y[i]); fun (x, y, 0); for (i = 0; i < N; i++) printf ("%d,", y[i]); printf ("\n"); }
( D )
5、若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 以下程序段的输出结果是______。 int a; a=Y; printf("%d\n",Z); printf("%d\n",--a);
( A )
6、若有定义:inta,b,c; 以下程序段的输出结果是a=11; b=3; c=0; printf("%d\n",c=(a/b,a%b));
( D )
7、下面程序的输出结果是_______。 m1(int x) { int y; y=x+x; return(y); } m2(int a ,int b) { int z; z=m1(a*b); return(z); } main( ) { int a=3,b=6,c; c=m2(a ,b); printf("%d",c); }
( A )
8、下面程序的输出结果是______。 main( ) { int a[ ]={1,2,3,4,5,6,7,8,9,0},*p; p=a; printf("%d\n",*(p+9)); }
( C )
9、以下程序段运行后的结果是________ int x=1,y=2,z=3; y+=x+=z; printf("%d",x<y?x++:y++);
( A )
10、以下程序的输出结果为________。 #include <stdio.h> int main( ) { int i=1,j=1; printf("%d %d\n",i,j++); }
相关标签:
- C语言
- 吉林师范大学
- 期末模拟考试