内蒙古科技大学2023年计算机C语言专升本

本试卷为内蒙古科技大学2023年计算机C语言专升本,题目包括:单项选择题,填空题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。

计算机C语言专升本

一、单项选择题 (共20题,每题2分,共计40分)

(  B  )
1、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是________。
A、a[0][4]
B、a[l][3]
C、a[0][3]
D、a[1][4]
(  B  )
2、设"int x=2,y=1; ",则表达式(!x || y--)的值i是________。
A、0
B、1
C、2
D、-1
(  B  )
3、有以下结构体说明和变量的定义,且指针p指向变量a’指针q指向变量b,则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node*next;
}
a,b,*p=&a,*q=&b;
A、a.next=q;
B、P.next=&b:
C、p—>next=&b;
D、(*p).next=q;
(  B  )
4、以下定义语句正确的是________。
A、int n=5,a[n][n];
B、int a[ ][3]={{1,2},{3,4},{5,6}};
C、int a[ ][3];
D、int a[ ][ ]={{1,2},{3,4},{5,6}}
(  C  )
5、以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是________。
A、char s[10]=”abcdefg”;
B、char t[]=”abcdefg”,*s=t;
C、char s[10];s=”abcdefg”;
D、char s[10];strcpy(s,”abcdefg”);
(  C  )
6、以下描述中正确的是________。
A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C、在do-while循环体中,是先执行一次循环,再进行判断
D、do-while循环中,根据情况可以省略while
(  B  )
7、执行下列语句后,r的值是
char ch='a';
int r=6;
switch(ch+5) {
case'a':r=r+3;
case'b':r=r+5;
case'c':r=r+5;
break;
default:r/=2;
}
A、19
B、3
C、11
D、7
(  B  )
8、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
A、st.i
B、*p.i
C、(*p).i
D、p->i
(  D  )
9、关于字符常量,以下叙述正确的是________。
A、空格不是一个字符常量
B、字符常量能包含大于一个的字符
C、单引号中的大写字母和小写字母代表的是相同的字符常量
D、所有的字符常量都可以作为整型量来处理
(  D  )
10、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
A、int x[3]=0,0,0;
B、int x[]=0;
C、static int x[3]=0;
D、int x[]=
(  B  )
11、下列赋值语句错误的是________。
A、A
B、i==0;
C、i=i+1:
D、i+=1:
(  A  )
12、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  A  )
13、以下程序的运行结果是________。
#include<stdio.h>
main()
{
int a=3,b=4,c=8,d=4,m=1,n=3;
printf("%d\n",(m=a>b)&&(n=c>d));
}
A、0
B、1
C、2
D、3
(  B  )
14、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________。
main()
{
int *p,*q,a,b;
p=&a;
printf("input a:");
scanf("%d",*p);
}
A、*p表示的是指针变量p的地址
B、*p表示的是变量a的值,而不是变量a的地址
C、*p表示的是指针变量p的值
D、*p只能用来说明p是一个指针变量
(  A  )
15、若有下面的说明和定义:
struct test
{
int m1;
char m2;
float m3;
union uu
{
char u1[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test)的值是________。
A、20
B、16
C、14
D、9
(  B  )
16、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、6
B、8
C、7
D、编译出错
(  D  )
17、以下程序结果为:______。
void add( )
{
static int y=4;
y--;
printf("%d",y);
}
main( )
{
int m;
for(m=0;m<4;m++)add( );
}
A、4444
B、4321
C、3333
D、3210
(  C  )
18、设有数据定义语句"int a[200]; ",下列数组元素引用中下标不越界的是________。
A、a[-1]
B、a[201]
C、a[0]
D、a[200]
(  A  )
19、设有定义:int x=2,*p=&x; float=3.0; char z='c'; 则立即进行以下运算有安全隐患的是________。
A、p++
B、x++
C、y++
D、z++
(  A  )
20、c语言的if语句嵌套时,if与else的配对关系是________。
A、每个else总是与它上面的最近的并且尚未与其他else匹配的if配对
B、每个else总是与最外层的if配对
C、每个else与if的配对是任意的
D、每个else总是与它上面的if配对

二、填空题 (共10题,每题2分,共计20分)

1、下面程序的输出结果是________。
int x=-32769;
printf("%d",x);
2、设int a; float f; double i; 则表达式10+’a’+i*f值的数据类型是________ 。
3、若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句________。
4、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是________。
5、设int a=5,b=6;
则表达式(++a==b--)?++a:--b的值是________。
6、下面程序的运行结果是________。
#include<stdio.h>
main()
{
int i;
for(i=1;i<=5;i++)
switch(i%2)
{
case 0:
i++;
printf("#");
break;
case 1:
i+=2;
printf("*");
default:
printf("\n");
}
}
7、写出下列程序的运行结果。
main()
{
int n;
for(n=3; n<=10; n++)
{
if(n%6==0) break;
printf("%d",n);
}
}
8、以下程序的运行结果是_____________。
main( )
{
int k, s ,a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
s=0;
for( k=0;k<4;k ++)s=s+ a[k][k];
printf("%d,",s);
}
9、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。
10、算术表达式 a=b+3 中, a、b 称为变量, 3 称为______量,=、+称为运算符。

三、编程题 (共3题,每题0分,共计40分)

1、统计结构体数组中性别(sex)为'M'的变量的个数。
要求:
①数组元素依次赋初值为:{1 , "Andy" , 'M' } 、 {2 , "Mike" , 'F' } 、 {3 , "Rose" , 'M'}。
②结构体定义如下:struct Student{int num;char name[30];char sex;};
2、从键盘输入30名学生的成绩数据,求其中的最高分、最低分和平均分。
3、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。