延安大学2023年计算机C语言期末精选样卷
本试卷为延安大学2023年计算机C语言期末精选样卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言期末精选样卷
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、以下叙述中错误的是________。
( A )
2、语句while(!e); 中的表达式!e等价于( )。
( C )
3、表达式________的值是0。
( A )
4、下列语句中,正确的是________。
( C )
5、以下选项中可作为c语言合法整数的是________。
( D )
6、以下合法的c语言赋值语句是________。
( D )
7、设x和y均为int型变量,则以下语句:"x+=y; y=x-y; x-=y; "的功能是______。
( B )
8、"not"属于________。
( A )
9、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是________。
( D )
10、已知大写字母a的ascii码是65,小写字母a的ascii码是97,以下不能将变量c中的大写字母转换为对应小写字母的语句是______。
( B )
11、已知int a[3][2]=(3,2,1); 则表达式"a[0][0]/a[0][1]/a[0][2]"的值是________。
( C )
12、若有以下定义,则正确的语句是________。
union data
{
int i;
char c;
float f;
} a;
int n;
( C )
13、若给定条件表达式(m)?(a++):(a--)则下列选项中和表达式m等价的是________。
( D )
14、下列选项中用于判断ch是否是字符的表达式是________。
( A )
15、a、b分别是整数6、-2,那么a对b求余与b对a求余的值分别为
( D )
16、下列结果不相同的是________。
( C )
17、执行以下语句后a 的值为________。 int a,b,c; a=b=c=1; ++a||++b&&++c;
( B )
18、X、Y、Z被定义为int型变量,若从键盘给它们输入数据,则正确的输入语句是________。
( C )
19、下列程序段的输出结果为________。 float x=213.82631; printf("%3d",(int)x);
( C )
20、整型变量x=1,y=3,经下列计算后,x的值不等于6的是________。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、在嵌套使用if语句时,c语言规定else总是________。
( A )
2、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
( D )
3、能正确表示a和b同时为正或同时为负的逻辑表达式是________。
( A )
4、if语句的基本形式为:if(表达式)语句,其中"表达式"________。
( C )
5、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( A )
6、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
( A )
7、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
( C )
8、下列程序的输出结果是________。
main ()
{
int a = 4, b = 5, c;
if (a < b)
{
c = a * b;
printf ("%d,%d,%d\n", b, a, c);
}
else
{
c = b / a;
printf ("%d,%d,%d\n", b, a, c);
}
}
( B )
9、c语言中,关系表达式和逻辑表达式的值是________。
( D )
10、执行下列程序段后,m 的值是________. int w=2,x=3,y=4,z=5,m; m=(w
三、循环结构 (共10题,每题1分,共计10分)
( B )
1、下面程序的输出结果是 __________.
#include<stdio.h>
void main( )
{
int x=3;
do
{
printf("%d ",x-=2);
}
while(!(--x));
}
( B )
2、对于while、do…while循环结构,正确的说法是________。
( A )
3、结构化程序设计思想的核心是要求程序只由顺序、循环和______三种结构组成。
( D )
4、结构化程序设计方法的结构不包括________。
( D )
5、下面关于break语句的描述中,不正确的是________。
( B )
6、有以下程序
#include<stdio.h>
main()
{
int a=1,b=2;
while(a<6)
{
b+=a;
a+=2;
b%=10;
}
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是________。
( D )
7、有以下程序段int n=0,p;
do
{
scanf("%d",&p);
n++;
}
while(p!=12345&&n<3);
此处do-while循环的结束条件是______。
( A )
8、下列c语言程序段中关于while循环体正确的说法是inti=1;
while(5)
{
i++;
if(i>3)break;
}
( C )
9、以下描述中正确的是________。
( B )
10、以下程序的执行结果是 main()
{ int x = 0, s = 0;
while( !x != 0 ) s += ++x;
printf( "%d ",s ); }
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、下列字符数组初始化语句中,不正确的是________。
( B )
2、以下能正确定义一维数组的选项是________。
( D )
3、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是________。
#define N 5
void fun(int x[N])
{
int m;
for(m=N-t;m>=O;m-)scanf("%d",________);
}
( B )
4、以下数组定义中错误的是________。
( D )
5、以下数组定义中不正确的是 __________.
( C )
6、若在某函数内部有定义:int a[3][4]; 则数组a中各元素________。
( D )
7、下列描述中,正确的一条是______。
( C )
8、以下正确的程序段是________。
( C )
9、下面程序的输出结果是______。
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j];
printf("%d\n",k);
}
( D )
10、以下对一维数组a 的正确说明是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、下列能正确进行字符串赋值的是________。
( D )
2、以下关于字符串的叙述中正确的是________。
( B )
3、设有字符串a="he has 钱!",则该字符串的长度为( )。
( A )
4、以下不能正确进行字符串赋初值的语句是________。
( C )
5、null是指 ________。
( B )
6、设有两个字符串p和q,其中q是p的子串,把q在p中首次出现的位置作为子串q在p中位置的算法称为 (43) 。
( A )
7、下列哪个是c语言的有效标识符
( B )
8、下列类型的数据不可以存储在可变型变量中的是________。
( C )
9、请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("ats\n012\1\\") );
上面程序片段的输出结果是______。
( D )
10、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、有以下程序片段: y=-1; if(x!=0) if(x>0) y=1; else y=0; 其能正确表示的数学函数关系是________。
( B )
2、c语言允许函数值类型缺省定义,此时该函数值隐含的类型是________.
( B )
3、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为________.
( A )
4、c 语言的基本构成单位是: 。
( B )
5、以下关于程序中函数的定义、调用和声明的叙述中,正确的是______。
( A )
6、以下程序的输出结果是 long fun(int n) {
long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;
}
main() {
printf("%ld\n",fun(3));
}
( D )
7、下面关于函数依赖的叙述中,不正确的是________。
( D )
8、设有语句: x=inputbox("输入数值","0","示例") 程序运行后,如果从键盘上输人数值10并按回车键,则下列叙述中正确的是______。
( D )
9、若有定义,int*f(); 则下列描述中正确的是________。
( D )
10、以下叙述中正确的是________。
七、指针 (共10题,每题1分,共计10分)
( D )
1、有以下程序
#include <stdio.h>
void fun(int *a, int n)/*fun函数的功能是将a所指数组元数从大到小排序*/
{
int t,i,j;
for(i=o;i<n-1;j++) for(j=j+1;j<n;j++) if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
int c[10]={1,2,3,4,5,6,7,8,9,0} ,i;
fun(c+4,6);
for(i=0;i<10,i++) printf("%d,",c[i]);
}
程序的运行结果是________。
( B )
2、在下面关于指针的说法中,错误的一条是________。
( D )
3、已知3个字符为:a、z和8,按它们的ascii码值升序排序,结果是________。
( C )
4、若有定义:int a=4,b=5; float x=3.4,y=2.1; 则下列表达式的值为________。 (float)(a+b) /2+(int)x%(int)y
( C )
5、以下程序运行后,如果从键盘上输入abcdef<回车>,则输出结果为______。
#include<stdio.h>
#include<string.h>
func(char str[]) {
int num=0;
while(*(str+num)!=’\0’) num++;
return(num);
}
main()
{
char str[10],*p=str;
gets(p);
printf("%d\n",func(p));
}
( B )
6、当全局变量与局部变量重名时,那么在调用时( )
( A )
7、下面选择中正确的赋值语句是(设char a[5],*p=a;)________。
( A )
8、以下叙述正确的是________。
( A )
9、char *match(char c)是()。
( B )
10、以下语句中,不能实现回车换行的是()。
八、结构体 (共10题,每题1分,共计10分)
( C )
1、有以下程序
typedef struct
{
char name[9];
char sex;
float score [2];
} stu;
stu f(stu a) {
stu b={"zhao", 'm', 85.0, 90.0};
int i;
strcpy(a.name, b.name);
a.sex=b.sex:;
for(i=0;i<2;i++) a.score[i]=b.score[i];
return a:
}
main() {
stu c=
{
"qian", 'f', 95.0, 92.0
};
stu d=f(c);
printf("%s, %c, %2.0f, %2.0f", d.name, d.sex, d.score[0], d.score[1]); ) 程序的运行结果是________。
( B )
2、有以下程序
#include <stdio.h>
struct ord
{
int x ,y;
}
dt[2]= {1,2,3,4 };
main()
{
struct ord *p=dt;
printf("%d,",++p->x);
printf("%d\n",++p->y);
}
程序的运行结果是________。
( D )
3、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
( B )
4、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu
{
int i;
int name;
} st,*p;
p=&st;
( C )
5、有以下程序段
typedef struct node
{
int data;
struct node * next;
}
* node;
node p;
以下叙述中正确的是________。
( A )
6、下列选项中不属于c语言的数据类型是________。
( A )
7、以下结构体类型说明和变量定义中正确的是________。
( D )
8、以下程序的输出结果是______。
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);
}
( D )
9、若有下面的说明和定义,则sizeof(struct aa)的值是______。
struct aa
{
int r1;
double r2;
float r3;
}
maya;
( C )
10、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
九、程序题 (共10题,每题1分,共计10分)
( A )
1、有以下程序
main()
{
int a,b,c=246;
a=c/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
输出结果是________。
( B )
2、若有以下程序段: int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%a",a,b,c);执行后的输出结果是________。
( A )
3、执行语句printf("%u\n",+12345)的输出结果是________。
( A )
4、有以下程序
void sum(int a[])
{
a[0] = a[-1]+a[1];
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
sum(&a[2]);
printf("%d\n", a[2]);
}
程序运行后的输出结果是________。
( A )
5、有以下程序
void swap1(int c0[], int c1[])
{
int t ;
t=c0[0];
c0[0]=c1[0];
c1[0]=t;
}
void swap2(int *c0, int *c1)
{
int t;
t=*c0;
*c0=*c1;
*c1=t;
}
main()
{
int a[2]={3,5} , b[2]={3,5} ;
swap1(a, a+1);
swap2(&b[0], &b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
程序运行后的输出结果是________。
( B )
6、有以下程序
main()
{
int a;
char c=10;
float f=100.0;
double x;
a=f/=c*=(x=6.5);
printf("%d %d %3.1f %3.1f\n",a,c,f,x);
}
程序运行后的输出结果是________。
( B )
7、若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b;
c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是________。
( A )
8、下面程序的输出结果是 __________.
#include<stdio.h>
void main()
{
int a=5,b=3;
float x=3.14, y=6.5;
printf("%d,%d\n",a+b!=a-b,x<=(y-=6.1));
}
( D )
9、下面程序段的运行结果是 __________.
int x=0,y=0;
while (x<15)
y++,x+=++y;
printf("%d,%d",y,x);
( A )
10、下面程序段的输出结果是________。
#include<stdio.h>
main()
{
float x=1.236547;
printf("%f\n",(int)(x*1000+0.5)/(float)1000);
}
相关标签:
- C语言
- 延安大学
- 期末精选样卷