中国计量大学2023年计算机C语言专升本题目

本试卷为中国计量大学2023年计算机C语言专升本题目,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

计算机C语言专升本题目

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

(  C  )
1、以下叙述中错误的是________。
A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B、数组名代表的是数组所占存储区的首地址,其值不可改变
C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D、可以通过赋初值的方式确定数组元素的个数
(  D  )
2、三种基本结构中,能简化大量程序代码的是________。
A、顺序结构
B、分支结构
C、选择结构
D、重复结构
(  D  )
3、若已定义: int a[4][3]=(1,2,3,4,5,6,7,8,9,10,1i,12),(*prt) [3]=a,*p=a[0];则能够正确表示数组元素a[1][2]的表达式是________。
A、*((+prt+1)[2])
B、*(*(p+5))
C、(+prt+1)+2
D、*(*(a+1)+2)
(  D  )
4、下列说法正确的是________。
A、在c语言中,可以使用动态内存分配技术定义元素个数可变的数组
B、在C语言中,数组元素的个数可以不确定,允许随机变动
C、在C语言中,数组元素的数据类型可以不一致
D、在C语言中,定义一个数组后,就确定了它所容纳的元素的个数
(  C  )
5、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
A、两个语句都是将变量a的值赋予变量P
B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D、两个语句都是使P指向变量a
(  A  )
6、下列函数的类型是________。 fun(double x)
{
float y;
y=3*x-4;
return y;
}
A、int
B、不确定
C、void
D、float
(  C  )
7、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
A、2,0
B、5,0
C、5,5
D、2,5
(  C  )
8、下面程序段的功能是
#include <stdio.h>
main()
{
char s1;
s1=putc(getc(stdin),stdout);
}
A、从键盘输入一个字符给字符变量s1
B、从键盘输入一个字符,然后再输出到屏幕
C、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量s1
D、在屏幕上输出stdout的值
(  B  )
9、有以下程序
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);
}
程序运行后的输出结果是________。
A、SunDan 20044 550
B、Penghua 20045 537
C、LiSiGuo 20042 580
D、SunDan 20041 703
(  C  )
10、有以下函数定义:
void fun(int n, double x)
{
……
}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是________。
A、fun(int y,double m);
B、k=fun(10,12.5);
C、fun(x,n);
D、void fun(n,x);
(  B  )
11、设有以下说明语句
typedef struct
{
int n;
char ch[8];
}
per;
则下面叙述中正确的是________。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
(  D  )
12、分析下面函数,以下说法正确的是______。
swap(int *p1,int *p2)
{
int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
A、交换 *p1 和 *p2 的值
B、正确,但无法改变 *p1 和 *p2 的值
C、交换 *p1 和 *p2 的地址
D、可能造成系统故障,因为使用了空指针
(  B  )
13、以下程序段的输出结果是 __________. char s[]="an apple"; printf("%d\n",strlen(s));
A、7
B、8
C、9
D、10
(  D  )
14、在浮点数编码表示中, (1) 在机器数中不出现,是隐含的。
A、阶码
B、符号
C、尾数
D、基数
(  B  )
15、若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是________。
struct stu {
int i;
int name;
} st,*p; p=&st;
A、st.i
B、*p.i
C、(*p).i
D、p->i
(  C  )
16、以下程序的输出结果是________。
#include <stdio.h>
void swap(int*a, int *b)
{
int*t;
t=a;
a=b;
b=t;
}
main()
{
int i=3, j=5, *p=&i, *q=&j;
swap(p, q);
printf(1%d %d , *p, *q);
}
A、23
B、34
C、35
D、45
(  D  )
17、变量p为指针变量,若p=&a,下列说法不正确的有______。
A、&*p==&a
B、*&a==a
C、(*p)++==a++
D、*(p++)==a++
(  C  )
18、下面正确的函数定义形式为________。
A、void fun();{}
B、void fun(int x;int {}
C、void fun() {}
D、void fun(int x, {}
(  A  )
19、以下选项中可作为c语言合法常量的是________。
A、-80
B、-080
C、-8e1.0
D、-80.0e
(  A  )
20、for循环的循环次数________。
A、通常是确定的,但也可以不确定
B、通常不确定,但也可以确定
C、是不确定的
D、是确定的
(  B  )
21、以下关于switch语句和break语句的描述中,正确的是______。
A、在switch语句中必须使用break语句
B、在switch语句中,可以根据需要使用或不使用break语句
C、break语句只能用于switch语句中
D、break语句是switch语句的一部分
(  C  )
22、有以下程序
int add(int a,int b)
{
return(a+b);
}
main()
{
int k,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是______。
A、k=(*f)(a,b);
B、k=add(a,;
C、k=*f(a,b);
D、k=f(a,b);
(  D  )
23、现有以下语句: i=1; for (;i<=100;i++) sum+=i;
A、for(i-1;;i++)
sum+--i;
if(i==100) break;
B、for(i=1;i<=100;)
sum+=i;
i++;
C、i=1;
for(;i<=100;)
sum+=-i;
D、i=1;
for(;;)
sum+=i;
if(i==100) break;
i++;
(  B  )
24、与十六进制数ab等值的二进数是________。
A、10101010
B、10101011
C、10111010
D、10111011
(  C  )
25、以下程序输出的结果为 ______。
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]);
}
A、ABCDEFGHIJKL
B、ABCD
C、ABCDEFGHIJKLMNOP
D、AEIM
(  B  )
26、有以下程序
main()
{
int a[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)
if(a[i][i]<a[k][k])
{
t=a[i][i];
a[i][i]=a[k][k];
a[k][k]=t;
}
for(i=0;i<4;i++)
printf("%d,",a[0][i]);
}
程序运行后的输出结果是________。
A、6,2,1,1,
B、6,4,3,2,
C、1,1,2,6,
D、2,3,4,6,
(  A  )
27、有以下程序:
void fun(int*a,int i,int j) {
int t;
if(i<j) t=a[i];
a[i]=a[j];
a[j]=t;
fun(a,++i,--j);
}
main() {
int a[]=1,2,3,4,5,6,i;
fun(a,0,5);
for(i=0;i<6;i++) printf("%d",a[i]);
}
执行后的输出结果是 ______。
A、6 5 4 3 2 1
B、4 3 2 1 5 6
C、4 5 6 1 2 3
D、1 2 3 4 5 6
(  C  )
28、下面语句的输出结果是_______。 printf("%d\n",strlen("\t\"\065\xff\n"));
A、14
B、8
C、5
D、输出项不合怯,无正常输出
(  C  )
29、关于二进制,下列描述错误的是________。
A、二进制数由数字0和1表示
B、一个二进制数字0和1表示一位,八位为一个字节
C、由于二进制由数值较小的0和1表示,所以只能表示一部分数据
D、二进制与十进制相互转换,不改变值的大小
(  B  )
30、若t已经定义为double类型,则表达式:t = 1,t++,t+5的值为________。
A、7
B、7.0
C、2.0
D、1.0
(  B  )
31、设a为整型变量,下列选项中不能正确表达数学关系:10<a<15________。
A、10<a<15
B、a==11 || a==12
C、a>10 && a<15
D、!(a<=10)&&!(a>=15)
(  C  )
32、有如下程序
main( )
{
int m=2,n=-1,d=6;
if(m<n)if(n<0) d=0;
else d++;
printf("%d\n",d);
}
该程序的输出结果是______。
A、0
B、1
C、6
D、7
(  C  )
33、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
A、char st[4][5]={"ABCDE"};
B、char s[5]={'A','B','C','D','E'};
C、char *s="ABCDE";
D、char *s; scanf("%s",*s);
(  B  )
34、有以下程序
#include <stdio.h>
main()
{
file *fp;
int a[10]={1,2,3},i,n;
fp=fopen("d1.dat","w");
for(i=0;i<3;i++) fprintf(fp,"%d",a[i]);
fprintf(fp,"\n");
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d",&n);
fclose(fp);
printf("%d\n",n);
}
程序的运行结果是______。
A、12300
B、123
C、1
D、321
(  D  )
35、以下选项中不正确的整型常量是________。
A、12L
B、-10
C、12
D、2,900
(  B  )
36、运行下面程序时,若从键盘输入5后回车,则程序的输出结果是________。
A、7
B、6
C、5
D、4
(  B  )
37、下述程序段的运行结果是________。
main( )
{
static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b[3][2],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=a[j][i]+a[i][j];
printf(''%5d'',b[i][j]);
}
printf(''\n'');
}
}
18
A、2 4 7
B、2 6 10
C、18 14 10
D、18 2 3
(  C  )
38、用冒泡排序对4,5,6,3,2,1进行从小到大排序,第三趟排序后的状态为________。
A、4 5 3 2 1 6
B、4 3 2 1 5 6
C、3 2 1 4 5 6
D、2 1 3 4 5 6
(  D  )
39、函数 fread(buffer,size, count,fp)中 buffer 代表的是________。
A、一个存储区,存放要读的数据项
B、一个整数,代表要读入的数据项总数
C、一个文件指针,指向要读的文件
D、一个指针,指向读入数据要存放的地址
(  C  )
40、以下描述中正确的是________。
A、由于 do-while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B、do-while 循环由do开始,用while结束,在 while(表达式)后面不能写分号
C、在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零("假")的操作
D、do-while 循环中,根据情况可以省略 while
(  C  )
41、在以下定义中,标识符p________。 int (*p)[3];
A、定义不合法
B、是一个指针数组名,每个元素是一个指向整数变量的指针
C、是一个指针,它指向一个具有三个元素的一维数组
D、是一个指向整型变量的指针
(  C  )
42、关于return语句,下列正确的说法是________。
A、不能在主函数中出现且在其他函数中均可出现
B、必须在每个函数中出现
C、可以在同一个函数中出现多次
D、只能在除主函数之外的函数中出现一次
(  D  )
43、下面描述正确的是________。
A、两个字符串包含的字符个数相同时,才能比较字符串
B、字符个数多的字符串比字符个数少的字符串大
C、字符串"STOP" 与"STOP■"相等
D、字符串"That" 小于字符串"The"
(  A  )
44、下面程序的功能是将字符串s 中所有的字符'c'删除。
#include "stdio.h"
main()
{
char s[80];
int i,j;
gets(s);
for (i=j=0;s[i]!='\0';i++)if (s[i]!='c') ;
s[j]='\0';
puts(s);
}
A、s[j++]=s[i]
B、s[++j]=s[i]
C、s[j]=s[i];j++
D、s[j]=s[i]
(  C  )
45、设c 语言中,int 类型数据占2 个字节, 则long 类型数据占____
A、1 个字节
B、2 个字节
C、4 个字节
D、8 个字节
(  C  )
46、能正确表示:当x 的取值范围在[1,10] 或[100, 110]内为真,否则为假的表达式是________。
A、( x>= 1)&& ( x<= 10)&& ( x>= 100)&& ( x<= 110)
B、( x>= 1) ||( x<= 10) ||( x>= 100) ||( x<= 110)
C、( x>= 1)&& ( x<= 10) ||( x>= 100)&& ( x<= 110)
D、( x>= 1) ||( x<= 10)&& ( x>= 100)&& ( x<= 110)
(  D  )
47、指针x指向的整型变量值为25,则”printf(“%d\n”,++*x);”
的输出是____
A、23
B、24
C、25
D、26
(  B  )
48、下列数据中,为字符串常量的是()。
A、A
B、"house"
C、How do you do.
D、$abc
(  B  )
49、在 C语言程序中()。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数调用均可以嵌套
D、函数的定义和函数调用不可以嵌套
(  C  )
50、以下叙述中错误的是________。
A、C语言是一种结构化程序设计语言
B、结构化程序由顺序、分支、循环三种基本结构组成
C、使用三种基本结构构成的程序只能解决简单问题
D、结构化程序设计提倡模块化的设计方法