吉林师范大学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语言
- 吉林师范大学
- 期末模拟考试