湖南科技大学2022年C语言程序设计专升本题目

本试卷为湖南科技大学2022年C语言程序设计专升本题目,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计专升本题目

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

(  A  )
1、与 y=(x>0?1:x<0?-1:0); 的功能相同的if语句是________。
A、if (x>0) y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
else y=0;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
(  B  )
2、以下选项中不正确的实型常量是________。
A、2.607E-1
B、0.8103e 2
C、-77.77
D、456e-2
(  A  )
3、以下选项中不合法的用户标识符是________。
A、abC.C
B、file
C、Main
D、PRINTF
(  C  )
4、以下选项中不合法的用户标识符是________。
A、_123
B、printf
C、A$
D、Dim
(  A  )
5、关于c语言中数的表示,以下叙述中正确的是________。
A、只有整型数在允许范围内能精确无误地表示,实型数会有误差
B、只要在允许范围内整型数和实型数都能精确地表示
C、只有实型数在允许范围内能精确无误地表示,整形数会有误差
D、只有用八进制表示的数才不会有误差
(  C  )
6、下述程序的输出结果是________。
main()
{
char che2][5]-{"1234","5678"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
{
s=p[i][j]一'0';
printf("%d",s);
}
}
A、6357
B、6135
C、1357
D、691357
(  B  )
7、若变量已正确定义,有以下程序段 i—o;
do printf("%d,",i);
while(i++);
printf("%d",i) 其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  D  )
8、以下选项中能表示合法常量的是________。
A、整数:1,200
B、实数:1.5E2.0
C、字符斜杠:"\"
D、字符串:"\007"
(  B  )
9、以下选项中不能正确把cl定义成结构体变量的是________。
A、typedef struct
{
int red;
int green;
int blue;
} COLOR;
COLOR cl;
B、struct color cl
{
int red;
int green;
int blue;
};
C、struct color
{
int red;
int green;
int blue;
} cl;
D、struct
{
int red;
int green;
int blue;
} cl;
(  C  )
10、以下程序的输出的结果是 int x=3;
main()
{
int i;
for (i=1;i<x;i++) incre();
}
incre()
{
staic int x=1;
x*=x+1;
printf(" %d",x);
}
A、3 3
B、2 2
C、2 6
D、2 5
(  B  )
11、若变量已正确定义,有以下程序段
i=0;
do printf("%d,"i);
while(i++);
printf("%d\n",i);
其输出结果是________。
A、0,0
B、0,1
C、1,1
D、程序进入无限循环
(  A  )
12、有以程序
#include <stdio.h>
#include <string.h>
typedef struct
{
char name[9];
char sex;
float score[2];
} stu;
void 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];
}
main()
{
stu c={"qian",’p’,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是________。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  B  )
13、下面程序是计算 n 个数的平均值 , 请填空 . _________
#include<stdio.h>
void main( )
{
int i,n;
float x,avg=0.0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%f",&x);
avg=avg+______;
}
avg=________;
printf("avg=%f\n",avg);
}
A、i avg/i
B、x avg/n
C、x avg/x
D、i avg/n
(  B  )
14、在以下叙述中,不正确的选项是 __________ 。
A、C 语言程序总是从 main( ) 函数开始执行
B、在 C 语言程序中,被调用的函数必须在 main( ) 函数中定义
C、C 程序是函数的集合,在这个函数集中包括标准函数和用户自定义函数
D、在 C 语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套
(  B  )
15、有如下定义语句:int a[]= {1,2,3,4,5 },则对语句int * p=a; 正确的描述是________。
A、语句int * p=a;定义不正确
B、语句int * p=a;初始化变量p,使其指向数组对象a的第一个元素
C、语句int * p=a;是把a[0]的值赋给变量p
D、语句int * p=a;是把a[1]的值赋给变量p
(  D  )
16、若有以下定义的语句
struct student
{
int age;
int num;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
main()
{
struct student *p;
p=stu;
…
}则以下不正确的引用是________。
A、(p++)->num
B、p++
C、(*p).num
D、p=&stu.age
(  B  )
17、下列不属于简单数据类型的是________。
A、整数类型
B、类
C、浮点数类型
D、布尔类型
(  B  )
18、以下叙述中正确的是________。
A、在C程序中,语句之间必须要用分号(;)分隔
B、在C程序中#include行和#define行不是C语句
C、程序中的注释部分可有可无,通常可以省略
D、当输入数值数据时,对于整型变量只能输入整型值:对于实型变量只能输入实型值
(  A  )
19、下列四个不同数制表示的数中,数值最大的是________。
A、二进制数11011101
B、八进制数334
C、十进制数219
D、十六进制数DA
(  B  )
20、在下列的标识符中,错误的是________。
A、$_123
B、1xyz
C、$1_abc
D、abc_$123
(  A  )
21、设有定义 double a[10],*s=a; 以下能够代表数组元素a[3]的是______。
A、*(s+3)
B、(*s)[3]
C、*s[3]
D、*s+3
(  C  )
22、下列选项中,合法的变量名是______。
A、print
B、print#1
C、print1
D、9print1
(  B  )
23、下列程序段的运行结果是________。
#include<stdio.h>
void main()
{
char str[]="abc",*p=str;
printf("%d\n",* (p+3));
}
A、67
B、0
C、字符'C'的地址
D、字符'C'
(  C  )
24、在以下给出的表达式中,与while(e)中的(e)不等价的表达式是________。
A、(!E==0)
B、(E>0 || E
C、(E==0)
D、(E!=0)
(  B  )
25、有以下程序
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,
(  B  )
26、有以下程序
#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  )
27、有以下程序:
#include<string.h>
main()
{
char *p="abcde\0ghjik\0";
printf("%d\n",strlen(p) );
}
程序运行后的输出结果是________。
A、12
B、15
C、6
D、5
(  A  )
28、下面叙述正确的是________。
A、任何复杂任务都可以分解成简单子任务
B、C 语言程序的所有函数只能处于同一个源文件中
C、包含全部三种基本结构的程序才是结构化程序
D、C 语言程序可以定义多个不同内容的 main 函数
(  B  )
29、宏定义用于将一个标识符定义为一个
A、常量
B、字符串
C、整数
D、长整数
(  D  )
30、关于数组的定义与初始化,下列哪一项是错误的( )
A、int arr[5] = {1,2,3,4,5};
B、int arr[] = {1,2,3,4,5};
C、int arr[5] = { 1,2,3};
D、int arr[5] = {1,2,3,4,5,6};
(  A  )
31、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int a[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int b[10]={1,2,3,4,5,6,7,8,9,10};
int i,s=0;
reverse(b,8);
for(i=6;i<10;i++) s+=b[i];
printf("%d\n",s);
}
程序运行后的输出结果是______。
A、22
B、10
C、34
D、30
(  C  )
32、以下关于宏的叙述中正确的是______。
A、宏名必须用大写字母表示
B、宏定义必须位于源程序中所有语句之前
C、宏替换没有数据类型限制
D、宏调用比函数调用耗费时间
(  D  )
33、在c语言中,数字029是一个( )
A、八进制数
B、十进制数
C、十六进制数
D、非法数
(  B  )
34、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  C  )
35、设 float f[10]; 则f数组中下标最大的元素的正确表示为________。
A、f[10]
B、f[0]
C、f[9]
D、f(9)
(  B  )
36、若int x=2,y=3,z=4 则表达式x<z?y:z的结果是________。
A、4
B、3
C、2
D、1
(  B  )
37、运行下面程序时,若从键盘输入5后回车,则程序的输出结果是________。
A、7
B、6
C、5
D、4
(  C  )
38、如下程序段运行输出的结果为________。 int a=5,b=6,c; c=++a+b--; printf("%d,%d,%d%\n",a,b,c);
A、5,6,11
B、6,5,11
C、6,5,12
D、6,6,12
(  A  )
39、以下叙述中正确的是________。
A、在 C 语言中,预处理命令行都以#开头
B、预处理命令行必须位于 C 源程序的起始位置
C、#include<stdio.h>必须放在 C 程序的开头
D、C 语言的预处理不能实现宏定义和条件编译的功能
(  C  )
40、以下数值中,不正确的八进制数或十六进制数是________。
A、0x16
B、016
C、-16
D、0xaaaa
(  B  )
41、假定所有变量均已正确定义,下列程序段运行后x的值是________。
k1=1;
k2=2;
k3=3;
x=15;
if(!k1) x--;
else if(k2) x=4;
else x=3;
A、14
B、4
C、15
D、3
(  A  )
42、下列四组选项中,均不是c语言关键字的选项是________。
A、define IF type
B、getc char printf
C、include scanf case
D、while go pow
(  A  )
43、若有 int a[10], *p=a;
,且 a 数组已赋值,则与 a[4]不等价的表达式为________。
A、p+4
B、*(p+4)
C、*(a+4)
D、p[4]
(  C  )
44、判断关键字* ▁▁▁▁▁ 不是关键字。
A、int
B、extern
C、break
D、main
(  D  )
45、在c语言中,一维数组的定义方式为:类型说明符 数组名____
A、[常量表达式]
B、[整型表达式]
C、[整型常量]或[整型表达式]
D、[整型常量]
(  A  )
46、下面程序的运行结果是________。
main()
{
int i, j, a = 0;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 4; j++)
{
if (j % 2) break;
a++;
}
a++;
}
printf("%d\n", a);
}
A、4
B、5
C、6
D、7
(  C  )
47、语句int (*ptr)();
的含义是______。
A、ptr 是指向一维数组的指针变量
B、ptr 是指向int 型数据的指针变量
C、ptr 是指向函数的指针,该函数返回一个int 型数据
D、ptr 是一个函数名,该函数的返回值是指向int 型数据的指针
(  B  )
48、以下叙述中正确的是()。
A、C语言的源程序不必通过编译就可以直接运行
B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C、C 源程序经编译形成的二进制代码可以直接运行
D、C语言中的函数不可以单独进行编译
(  A  )
49、C语言程序中,当调用函数时()。
A、实参和形参各占一个独立的存储单元
B、实参和形参可以共用存储单元
C、可以由用户指定是否共用存储单元
D、计算机系统自动确定是否共用存储单元
(  A  )
50、以下语句中,循环次数不为 10 次的语句是()。
A、for(i=1;i<10;i++);
B、i=1;do{i++;}while(i<=10);
C、i=10;while(i>0){--i;}
D、i=1;m:if(i<=10){i++;goto m;}