西华师范大学2023年计算机C语言
本试卷为西华师范大学2023年计算机C语言,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、c 源程序中不能表示的数制是________。
( D )
2、在位运算中,操作数每左移两位,其结果相当于________。
( C )
3、为了避免嵌套的条件分支语句if-else的二义性,c语言规定:c程序中的else总是与( )组成配对关系。
( A )
4、根据c语言的语法规则,下列________个是不合法标识符。
( C )
5、执行下面程序时,欲将25和2.5分别赋给a和b,正确的输入方法是________。 int a; float b; scanf("a=%d,b=%f",&a,&b);
( D )
6、表达式5!=3的值是________。
( A )
7、设有以下语句:int x=10; x+=3+x%(-3),则x的值是________。
( A )
8、以下选项中,不合法的整型常数是________。
( D )
9、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
( D )
10、若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int *p p=______malloc(sizeof(int)); 则应填入______。
( B )
11、大写字母b的ascⅱ码值是______。
( A )
12、关于程序中的注释,以下叙述正确的是________。
( B )
13、以下叙述中正确的是______。
( D )
14、二进制数010110101转换错误的为:
( B )
15、下面四个选项中,均是合法的用户标识符的选项是________。
( B )
16、以下叙述中正确的是________。
( D )
17、假定x和y为double型,则表达式x=2,y=x+3/2的值是________。
( C )
18、若a为int类型,且其值为2,则执行完表达式a+=a-=a*a后,a的值是______。
( D )
19、整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的 表达式是________。
( C )
20、下面正确的字符常量是________。
二、控制结构 (共10题,每题1分,共计10分)
( D )
1、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
( C )
2、有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是________。
( C )
3、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
( A )
4、在c程序中,判逻辑值时,用"非0"表示逻辑值"真",又用"0"表示逻辑值"假"。在求逻辑值时,逻辑真和逻辑假可分别表示为
( C )
5、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( C )
6、有以下程序
main()
{
int i=1,j=1,k=2;
if((j++‖k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是________。
( A )
7、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
( B )
8、c语言中,关系表达式和逻辑表达式的值是________。
( B )
9、将三个数排序需要比较________次。
( A )
10、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、有以下程序:
main()
{
int c=0,k;
for(k=1;k<3;k++)
switch(k)
{
default:c+=k;
case2:c++;
break;
case4:c+=2;
break;
}
printf("%d\n",c);
}
程序运行后的输出结果是________。
( B )
2、下列程序的运行结果是________。
void main()
{
int s=0,k;
for(k=7;k>1;k--)
{
switch(k)
{
case 1: case 4: case 7: s++: break;
case 2: case 3: case 6:break;
case 0: case 5: s+=2: break;
}
}
printf("s=%d",s);
}
( D )
3、有以下程序:
main()
{
int i,n=0: for(i=2;i<5;i++)
{
do
{
if(i%3) continue: n++;
}
while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后输出结果是________。
( C )
4、下面对do-while结构的描述中,不正确的是________。
( C )
5、在下列选项中,没有构成死循环的程序段是________。
( A )
6、有以下程序
main()
{
int a=15,b=21,m=0;
switch(a%3)
{
case 0:m++;
break;
case 1:m++;
switch(b%2)
{
default:m++;
case 0:m++;
break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是______。
( C )
7、有以下程序段:
int x=3;
do
{
printf(”%3d”,x-=2);
}
while(!(--x));
程序段的输出结果是________。
( C )
8、判断关键字* ▁▁▁▁▁ 不是关键字。
( C )
9、以下程序的输出结果是________。
#include<stdio.h>
main( )
{
int i;
for(i=1;i<5;i++)
{
if(i%2)printf(''+''); else continue;
printf(''-'')
}
printf('' $ \n'');
}
( D )
10、以下程序段的输出结果为()。
char c[]="abc";
int i=0;
do ;while(c[i++]!='\0');printf("%d",i-1);
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、以下程序段给数组所有元素输入数据:
main()
{
int a[10],i=0;
while(i<10)scanf("%d",);
}
应在下划线处填入的是________。
( C )
2、若有以下定义:int t[3][2]; 能正确表示t数组元素地址的表达式是______。
( C )
3、以下程序输出的结果为 ______。
main()
{
char *alpha[6]={"abcd","efgh","ijkl","mnop","qrst","uvwx"};
char **p;
int i;
p=alpha;
for(i=0;i<4;i++) printf("%s",p[i]);
}
( B )
4、在c语言中,设有数组定义:char array[]="china"; 则数组array所占用的空间为________。
( A )
5、以下选项中,不能正确赋值的是 ______。
( B )
6、某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历"比较"运算的数据元素依次为________。
( B )
7、下面的C程序完成的功能是________。
#define SIZE 5
void func(int data[SIZE]);
main()
{
int i,buf[SIZE];
printf(""Please input %d numbers:"",SIZE);
for(i=0;idata[j+1])
{
d=data[j];
data[j]=data[j+1];
data[j+1]=d;
}
}
( A )
8、下面说法正确的是________。
( B )
9、int a[10]; 给数组a的所有元素分别赋值为1、2、3、……的语句是________。
( A )
10、定义如下变量和数组: int k,a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是________。for(k=0;k<3;k++) printf("%d ",a[k][2-k]);
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( C )
1、下列能正确进行字符串赋值的是________。
( C )
2、下面各语句行中,能正确进行字符串赋值操作的语句是______。
( B )
3、下列选项中,值为1的表达式是________。
( C )
4、以下能将字符串,you are luck!正确读入的语句组是________。
( D )
5、下列字符常量的写法中,正确的是________。
( C )
6、下列表达式中,类型可以作为int型的是________。
( C )
7、\、/、mod、*等4个算术运算符中,优先级最低的是________。
( B )
8、宏定义用于将一个标识符定义为一个
( A )
9、下列对字符串的定义中,错误的是________。
( D )
10、下面描述正确的是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、以下叙述正确的是 。
( D )
2、若调用一个函数,且此函数中没有return语句,则正确的说法是________。
( B )
3、下列关于c语言的说法错误的是________ 。
( B )
4、若有以下说明和定义
fun ( int *c )
{
}
void main ()
{
int ( *a )() =fun , *b (), w[10] , c ;
…
}
在必要的赋值之后,对 fun 函数的正确调用语句是______。
( A )
5、以下叙述中正确的是________。
( D )
6、以下叙述不正确的是_____。
( D )
7、下列说法正确的是________。
( A )
8、以下叙述中正确的是________。
( D )
9、fwrite函数的一般调用形式是________。
( B )
10、在一个. C程序中()。
七、指针 (共10题,每题1分,共计10分)
( A )
1、设有下列程序段: char str[]="helloworld"; char*ptr; ptr=str ;执行上面的程序段后,*(ptr+10)的值为________。
( C )
2、若有定义:int aa[ 8]; 则以下表达式中不能代表数组元aa[1]的地址的是________。
( B )
3、以下函数调用语句中含有实参个数为 __________. func((exp1,exp2),(exp3,exp4,exp5));
( C )
4、若在某函数内部有定义:int a[3][4]; 则数组a中各元素________。
( D )
5、下列说法正确的是________。
( A )
6、对于一个正常运行的c程序,以下叙述中正确的是________。
( B )
7、有以下程序
#include<stdio.h>
int fun(int a,int b) {
if(b=0)return a;
else return(fun(--a,--b));
}
main() {
printf("%d\n",fun(4,2));
}
程序的运行结果是________。
( B )
8、对于int *pa[5]; 的描述,以下哪个选项是正确的
( A )
9、以下叙述中错误的是________。
( B )
10、执行下列语句后的结果为________。 int x=3,y; int *px=&x; y=*px++;
八、结构体 (共10题,每题1分,共计10分)
( A )
1、c语言结构体类型变量在程序执行期间,________。
( B )
2、下面结构体的定义语句中,错误的是________。
( D )
3、下面程序的输出是______。
main ()
{
struct cmplx
{
int x ;
int y ;
}
cnum[2]={1 , 3 , 2 , 7};
printf ( "%d\n" , cnum[0].y/cnum[0].x*cnum[1].x );
}
( A )
4、下列选项中不属于c语言的数据类型是________。
( D )
5、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
( 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);
}
( C )
7、有以下程序
struct stu
{
char num[10];
float score[3];
};
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s+2;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
( D )
8、当定义一个结构体变量时,系统为它分配的内存空间是________。
( D )
9、在说明一个结构体变量时系统分配给它的存储空间是________ 。
( A )
10、结构体类型的定义允许嵌套是指()。
九、程序题 (共10题,每题1分,共计10分)
( A )
1、下述程序执行的输出结果是________。
main()
{
char a[2][4];
strcpy(a,"are");
strcpy(a[1],"you");
a[0][3]='&' printf("%s\n",a);
}
( C )
2、若有以下程序段: int r=8; print("%d\n",r>>1); 输出结果是________。
( A )
3、分析以下程序的输出结果是________。
main()
{
int a=5,b=-1,c;
c=adds(a,b);
printf("%d",c);
c=adds(a,b);
printf("%d\n",c);
}
int adds(int x,int y)
{
static int m=0,n=3;
n*=++m;
m=n%x+y++;
return(m);
}
( C )
4、下列程序的输出结果是________。
int a[5]= { 2,4,6,8,10 } ,*p,**k;
p=a;
k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
( B )
5、有以下程序
void swap1(int c[])
{
int t;
t=c[0];
c[0]=c[1];
c[1]=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);
swap2(b[0],b[1]);
printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
}
其输出结果是________。
( D )
6、数字字符0的ascii值为48,若有以下程序
main() {
char a=’1’,b=’2’;
printf("%c,b++);
printf("%d\n",b-a);
}
程序运行后的输出结果是______。
( B )
7、下面程序的输出是________。 typedef union
{
long x[2];
int y[4];
char z[8];
}
mytype;
mytype them;
void main()
{
printf("%d\n", sizeof(them));
}
( A )
8、有以下程序
#include <stdio.h>
main()
{
int n, *p=null;
*p=&n;
printf("input n:");
scanf("%d",&p);
printf("output n:");
printf("%d\n",p);
}
该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,以下语句正确的是______。
( D )
9、如下程序,输入错误的为:
void main()
{
int a;
int b;
scanf("%d%d",&a,&b);
printf("%d %d",a,b);
}
( C )
10、若下列语句组,则输出结果是________。
int x=-1;
if(x++<0) printf("%d",--x);
printf("%d",x++);
相关标签:
- C语言
- 西华师范大学