上海音乐学院2022年C语言专升本模拟

本试卷为上海音乐学院2022年C语言专升本模拟,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言专升本模拟

一、单项选择题 (共50题,每题2分,共计100分)

(  B  )
1、有以下结构体说明和变量的定义,且指针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  )
2、若变量已正确定义,有以下程序段
int i=0;
do
printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
A、0,0
B、0,l
C、1,1
D、程序进入无限循环
(  C  )
3、以下正确的函数定义形式是________.
A、double fun(int x,int y)
B、double fun(int x; int y)
C、double fun(int x, int y);
D、double fun(int x,y);
(  C  )
4、当从键盘上输入字符"12134211"下面程序的 输出结果是________。
main( )
{
char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf("%c",&s);
switch(s)
{
default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++;
}
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
A、v1=4,v2=2,v3=1,v4=1
B、v1=4,v2=9,v3=3,v4=1
C、v1=5,v2=8,v3=6,v4=1
D、v1=8,v2=8,v3=8,v4=8
(  A  )
5、若有定义int a=12,n=5,则表达式a%=(n%2)运算后,a的值:
A、0
B、1
C、12
D、6
(  C  )
6、有如下嵌套的if 语句 if(a<b) if(a<c) k=a;
else k=c;
else if(b<c) k=b;
else k=c;
以下选项中与上述if 语句等价的语句是________。
A、k=(a<b)?a:b;k=(b<c)?b:c;
B、k=(a<b)?((b<c)?a:b):((b<c)?b:c);
C、k=(a<b)?((a<c)?a:c):((b<c)?b:c);
D、k=(a<b)?a:b;k=(a<c)?a;c
(  C  )
7、有以下程序
#include<stdio.h>
main()
{
int a[5]={1,2,3,4,5}, b[5]={0,2,1,3,0}, i, s=0;
for(i=0;i<5;i++) s=s+a[b[i]];
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、6
B、10
C、11
D、15
(  C  )
8、若有定义:int aa[ 8]; 则以下表达式中不能代表数组元aa[1]的地址的是________。
A、&aa[0]+1
B、&aa[1]
C、&aa[0]++
D、aa+1
(  B  )
9、下面结构体的定义语句中,错误的是________。
A、struct ord {
int x;int y;int z;};struct ord a;
B、struct ord {
int x;int y;int z;} struct ord a;
C、struct ord {
int x;int y;int z;} n;
D、struct {
int x;int y;int z;} a;
(  C  )
10、c 语言的程序一行写不下时,可以 。
A、用逗号换行
B、用分号换行
C、在任意一空格处换行
D、用回车符换行
(  A  )
11、在 c 语言中 , 以下叙述不正确的是 ___________.
A、在 C 程序中 , 无论是整数还是实数 , 都能被准确无误的表示
B、在 C 程序中 , 变量名代表存储器中的一个位置
C、静态变量的生存期与整个程序的生存期相同
D、C 语言中变量必须先定义后引用
(  C  )
12、下列程序执行后输出的结果是 __________.
#include<stdio.h>
int f(int a)
{
int b=0;
static c=3;
a=c++,b++;
return(a);
}
void main()
{
int a=2,i,k;
for(i=0;i<3;i++) k=f(a++);
printf("%d\n",k);
}
A、3
B、0
C、5
D、4
(  D  )
13、若有语句int*point,a=4; 和point=&a; 下面均代表地址的一组选项是________。
A、a,point,*&a
B、&*a,&a,*point
C、*&point,*point,&a
D、&a,&*point,point
(  A  )
14、已知year为整型变量,不能使表达式(year%4==0&&year%100!=o)||year%400==0的值为"真"的数据是______。
A、1990
B、1992
C、1996
D、2000
(  C  )
15、关于数组的叙述中,下列说法不正确的是________。
A、数组是最简单的复合数据类型,是有限元素的有序集合
B、数组的元素可以是值(基本数据类型)、对象或其他数组
C、定义数组时,必须分配内存
D、一个数组中的元素都必须是相同的类型
(  C  )
16、流程图里面的开始和结束用( )表示。
A、矩形
B、圆
C、椭圆
D、菱形
(  B  )
17、若要定义a为3×4的二维数组,正确的定义语句是________。
A、float a(3,4);
B、float a[3][4];
C、float a(3)(4);
D、float a[3,4];
(  C  )
18、下列关于break语句的描述,不正确的是________。
A、break语句可用在循环体内,它将使执行流程跳出本层循环体
B、break语句可用在switch语句中,它将使执行流程跳出当前switch语句
C、break语句可用在订语句中,它将使执行流程跳出当前if语句
D、break语句在一层循环体中可以出现多次
(  D  )
19、要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是________。
A、int x[3]=0,0,0;
B、int x[]=0;
C、static int x[3]=0;
D、int x[]=
(  A  )
20、下列选项中不属于c语言的数据类型是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  B  )
21、fseek函数的正确调用形式是________。
A、fseek(文件指针,起始点,位移量)
B、fseek(文件指针,位移量,起始点)
C、fseek(位移量,起始点,文件指针)
D、fseek(起始点,位移量,文件指针)
(  B  )
22、以下选项中表示一个合法的常量是(说明:符号∏表示空格)
A、9∏9∏9
B、0Xab
C、123E0.2
D、2.7e
(  C  )
23、若一个外部变量的定义形式为static int x; 那么,其中static的作用应该是______。
A、将变量存储在静态存储区
B、使变量x可以由系统自动初始化
C、使x只能在本文件内引用
D、使x的值可以永久保留
(  A  )
24、if语句的基本形式是:if(表达式)语句,以下关于"表达式"值的叙述中正确的是______。
A、可以是任意合法的数值
B、必须是整数值
C、必须是正数
D、必须是逻辑值
(  C  )
25、下列选项中,合法的变量名是______。
A、print
B、print#1
C、print1
D、9print1
(  A  )
26、一个int类型变量和一个byte类型的常量做加法,结果是________类型。
A、int
B、byte
C、char
D、无法计算
(  A  )
27、有以下程序:
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10,p++)printf("%d,",*p);
}
程序运行后的输出结果是________。
A、1,234,5,6,7,8,9,0,
B、2,3,4,5,6,7,8,9,10,1,
C、01,23,4,5,6,7,8,9,
D、1,1,1,1,1,1,1,1,1,1,
(  A  )
28、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  B  )
29、有以下程序
#include<stdio.h>
#define N 4
void fun(int a[][N],int b[]) {
int i;
for(i=0;i<N;i++) {
b[i]=a[i][i]-a[i][N-1-i];
}
}
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);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序运行后的输出结果是________。
A、-12,-3,0,0,
B、-3,-1,1,3,
C、0,1,2,3,
D、-3,-3,-3,-3,
(  D  )
30、有以下程序
#include <stdio.h>
main()
{
int i,j;
for(i=3;i>=-1;i-)
{
for(i=1;j<=2;j++) printf("%d",i+j);
printf("\n");
}
}
程序的运行结果是______。
A、234 345
B、432 543
C、23 34 45
D、45 34 23
(  B  )
31、有以下程序
main()
{
char s[]={"aeiou"},*ps;
ps=s;
prinff("%c\n",*ps+4);
}
程序运行后的输出结果是________。
A、a
B、e
C、U
D、元素s[4]的地址
(  B  )
32、下列关于字符串的说法中错误的是________。
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入'\0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
(  A  )
33、在下列字符中,其ascⅱ码值最小的一个是______。
A、空格字符
B、0
C、A
D、a
(  D  )
34、下列字符串中可以用作c标识符的是________。
A、2009var
B、goto
C、test-2009
D、-123
(  D  )
35、下列二维数组的说明中,不正确的是________。
A、float a[][4]=0,1,8,5,9;
B、int a[3][4]
C、#define N 5
float a[N][3]
D、int a[2][9.5];
(  A  )
36、以下选项中,合法的实数是________。
A、1.5E2
B、E1.1
C、2.10E
D、1.9E1.4
(  B  )
37、若t已经定义为double类型,则表达式:t = 1,t++,t+5的值为________。
A、7
B、7.0
C、2.0
D、1.0
(  A  )
38、有以下程序
main()
{
int i=0,s=0;
do
{
if(i%2)
{
i++;
continue;
}
i++;
s+=i;
}
while(i<7);
printf("%d\n",s);
}
执行后输出的结果是______。
A、16
B、12
C、28
D、21
(  C  )
39、有关c语言的主函数描述正确的是________。
A、C程序可以有多个main函数
B、C程序可以没有main函数
C、C程序有且只有一个main函数
D、C程序不一定从main函数开始执行
(  C  )
40、要调用数学函数时,在 #include命令行中应包含____。
A、"stdio.h"
B、"string.h"
C、"math.h"
D、"ctype.h"
(  B  )
41、下列程序的运行结果是________。
main( )
{
static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int i,j, sum=0;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(j>i) sum+=a[i][j];
printf(''sum=%d\n'',sum);
}
A、40
B、36
C、24
D、30
(  D  )
42、以下叙述中正确的是________。
A、局部变量不能被说明为 static
B、只有全局变量才有自己的作用域,函数中的局部变量没有作用域
C、只有在函数内部定义的变量才是局部变量
D、只要是用户定义的标识符,都有一个有效的作用域
(  D  )
43、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  B  )
44、下列字符序列中,不可用作c语言标识符的是________。
A、b70
B、#ab
C、symbol
D、a_1
(  C  )
45、若有下列定义,则对a数组元素的正确引用是________。 int a[5],*p=a;
A、*(p+5)
B、*p+2
C、*(a+2)
D、*&a[5]
(  A  )
46、以下正确的说法是:在c语言中________。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共占用一个存储单元
C、只有当实参和与其对应的形参同名时才共占用存储单元
D、形参是虚拟的,不占用存储单元
(  A  )
47、定义如下变量和数组: 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]);
A、3 5 7
B、3 6 9
C、1 5 9
D、1 4 7
(  C  )
48、语句int (*ptr)();
的含义是______。
A、ptr 是指向一维数组的指针变量
B、ptr 是指向int 型数据的指针变量
C、ptr 是指向函数的指针,该函数返回一个int 型数据
D、ptr 是一个函数名,该函数的返回值是指向int 型数据的指针
(  A  )
49、有如下函数调用语句func (rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是________ 。
A、3
B、4
C、5
D、2
(  A  )
50、在 C语言中,为了结束由 while 语句构成的循环,while 后一对圆括号中表达式的值应该为()。
A、0
B、1
C、TRUE
D、非 0