北京石油化工学院2023年C语言程序设计

本试卷为北京石油化工学院2023年C语言程序设计,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计

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

(  C  )
1、以下叙述中正确的是________。
A、用C程序实现的算法必须要有输入和输出操作
B、用C程序实现的算法可以没有输出但必须要有输入
C、用C程序实现的算法可以没有输入但必须要有输出
D、用C程序实现的算法可以既没有输入也没有输出
(  A  )
2、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。
A、while((ch=getchar())!='N')printf(”%c”,ch);
B、while(ch=getchar()!='N')printf(”%c”,ch);
C、while(ch=getchar()=='N')printf(”%c”,ch);
D、while((ch getchar())=='N')printf(”%c”,ch);
(  D  )
3、下列说法正确的是________。
A、在c语言中,可以使用动态内存分配技术定义元素个数可变的数组
B、在C语言中,数组元素的个数可以不确定,允许随机变动
C、在C语言中,数组元素的数据类型可以不一致
D、在C语言中,定义一个数组后,就确定了它所容纳的元素的个数
(  C  )
4、若有以下程序段,w和k都是整型变量:
w=k;
LB:if(w==0)
goto LE;
w--;
printf("*") goto LB;
LE;
则不能与上面程序段等价的循环语句是________。
A、for(w=k;w!—0;w--)printf(”*”);
B、for(w=k;W;--w)printf(”*”);
C、w=k;
while(w--!=O)printf(”*”);
D、w=k:
W++;do
{
w--;printf(”*”);)while(w!=O);
(  A  )
5、若有定义"int a=-5,b=7;",则表达式a%=(b%2)运算后,a的值为________。
A、0
B、1
C、11
D、3
(  D  )
6、有以下程序,其中k的初值为八进制数:
main()
{
int k=011;
printf{"%d|n",k++} ;
}
程序运行后的输出结果是________。
A、12
B、11
C、10
D、9
(  D  )
7、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是________。
#define N 5
void fun(int x[N])
{
int m;
for(m=N-t;m>=O;m-)scanf("%d",________);
}
A、%&X[++m]
B、&x[m+1]
C、x+(m++)
D、x+m
(  C  )
8、函数pi的功能是根据以下近似公式求π值: (π*π)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n) 请填空,完成求π的功能。
#include <math.h>
main( )
{
double s=0.0;
long int i,n;
scanf("%ld",&n);
for(i=1;i<=n;i++) s=s+________ ;
s=(sqrt(6*s));
printf("s=%e",s);
}
A、1/i*i
B、1.0/i*i
C、1.0/(i*i)
D、1.0/(n*n)
(  A  )
9、下列四组常数中,均是合法整型常量的一组是________。
A、160 0xffff 011
B、-0xcdf 01a 0xe
C、-01 986,012 0668
D、-0x48a 2e5 0x
(  D  )
10、阅读下面的程序
#include<stdio.h>
main()
{
char c1,c2;
c1=getchar();
c2=c1+3;
printf("%c,%d\n",c2,c2);
}
已知'a'的ascii的值为65,如果从键盘上输入 d<回车> 则程序的运行结果是________。
A、D,68
B、'G',68
C、D,71
D、G,71
(  B  )
11、有以下程序
struct s
{
int x,y;
}
data[2]={ 10,100,20,200 };
main()
{
struct s *p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是________。
A、10
B、11
C、20
D、21
(  B  )
12、以下程序的输出结果是
#include <stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%10)==0) break;
else i--;
}
i+=11;
a+=i;
}
printh("%d\n",a);
}
A、21
B、32
C、33
D、11
(  D  )
13、若有说明 :char c[10]= { 'e','a','s','t','\0' };, 则下述说法中正确的是 __ __________.
A、c[7] 不可引用
B、c[6] 可引用 , 但值不确定
C、c[4] 不可引用
D、c[4] 可引用,其值为空字符
(  D  )
14、以下函数返回a所指数组中最小的值所在的下标值:
fun(int *a,int n)
{
int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]) ______,
return(p);
}
在横线处应填入的是______。
A、i=p
B、a[p]=a[i]
C、p=j
D、p=i
(  D  )
15、在下面的函数声明中,存在着语法错误的是________。
A、void BC(int a,in
B、void BD(int,in
C、void BE(int,int t=5)
D、int BF(int x;int
(  B  )
16、c语言中错误的int类型常数是________。
A、123
B、1F7
C、038
D、OxAF
(  C  )
17、在下列各项中,运算级别最低的为________。
A、算术运算符
B、关系运算符
C、逻辑运算符
D、圆括号( )
(  A  )
18、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的c语言表达式是 ______ 。
A、x/y*z
B、x*(1/(y*z))
C、x/y*1/z
D、x/y/z
(  D  )
19、下列定义变量的语句中错误的是________。
A、int_int;
B、double int_;
C、char For;
D、float US$;
(  B  )
20、下列一维数组定义正确的是________。
A、x=5;int num[x];
B、const iht x=5;float num[x];
C、const float x=5;int num[x];
D、const int x;x=5;intnum[x];
(  C  )
21、下列语句中执行跳转功能的语句是________。
A、for语句
B、while语句
C、continue语句
D、switch语句
(  A  )
22、c程序的执行是从( )开始执行的
A、main函数
B、程序的第一行
C、<iostream.h>
D、<stdio.h>
(  B  )
23、结构化程序设计方法的三种基本控制结构中不包括(. )。
A、循环结构
B、递归结构
C、顺序结构
D、选择结构
(  D  )
24、________不属于程序的基本控制结构。
A、顺序结构
B、分支结构
C、循环结构
D、递归结构
(  A  )
25、二维数组a[8][9]按行优先顺序存储,若数组元素a[2][3]的存储地址为1087,a[4][7]的存储地址为1153,则数组元素a[6][7]的存储地址为 ( )
A、1207
B、1209
C、1211
D、1213
(  D  )
26、包含哪种语句的函数不能声明为内联函数( )
A、变量定义
B、if……else
C、位操作
D、switch
(  B  )
27、下列关于串的叙述中,哪一条是正确的( )
A、串是由至少1个字符组成的有限序列
B、串中字符的数目就是串的长度
C、空串就是由空格构成的串
D、串只能顺序存储
(  C  )
28、下列程序的输出结果是________。
main( )
{
char a[10]={9,8,7,6,5,4,3,2,1,0},* p=a + 5;
printf("%d",*--p);
}
A、非法
B、a[4]的地址
C、5
D、3
(  A  )
29、有以下程序:
#include <stdio.h>
#include <string.h>
main()
{
char str[][20]={"one*world", "one*dream]"}, *p=str[1];
printf("%d, ", strlen(p));
printf("%s\n", p);
}
程序运行后的输出结果是______。
A、10, One*Dream!
B、9, One*Dream!
C、9, One*World
D、10, One*World
(  A  )
30、有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b) if(b>c) printf("%d",d+++ 1);
else printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是 ______。
A、2
B、3
C、43
D、44
(  D  )
31、为了计算s=15!(15的阶乘),则s变量应定义为________。
A、char
B、short
C、int
D、long
(  C  )
32、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", p->age);
D、scanf("%d", &(p->sex));
(  D  )
33、二进制数010110101转换错误的为:
A、转换为八进制为265
B、转换为十六进制为0xB5
C、转换为十进制为奇数
D、转换为十进制数为偶数
(  B  )
34、运行下面程序时,若从键盘输入5后回车,则程序的输出结果是________。
A、7
B、6
C、5
D、4
(  B  )
35、有以下程序
main( )
{
int c=5,x;
scanf("%d",&x);
switch(x+1)
{
case 6: c++;
case 8: ++c;
break;
default:c+=3;
}
printf("%d",c);
}
程序运行时,从键盘输入: 5<回车>,程序执行后的输出结果是________。
A、6
B、7
C、8
D、语法错
(  C  )
36、main(int argc, char *argv[])
{
while(--argc>0) printf("%s",argv[argc]);
printf("\n");
}
假定以上程序经编译和连接后生成可执行文件prog.exe,如果在此可执行文件所在目录的dos提示符下键入:prog abcdefghijkl↙,则输出结果为______。
A、ABCDEFG
B、IJHL
C、ABCDEFGHIJKL
D、IJKLABCDEFGH
(  C  )
37、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define N 10
void arrin(int x[N])
{
int i=0;
while(i<N)scanf("%d",______);
}
在下划线处应填入的是______。
A、x+i
B、&x[i+1]
C、&x[i++]
D、&x[++i]
(  B  )
38、以下说法正确的是________。
A、C 语言只接受十进制的数
B、C 语言只接受八进制、十进制、十六进制的数
C、C 语言接受除二进制之外任何进制的数
D、C 语言接受任何进制的数
(  B  )
39、下面选项中关于编译预处理的叙述正确的是________。
A、预处理命令行必须使用分号结尾
B、凡是以#号开头的行,都被称为编译预处理命令行
C、预处理命令行不能出现在程序的最后一行
D、预处理命令行的作用域是到最近的函数结束处
(  A  )
40、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  C  )
41、下列关于指针变量的描述,不正确的是________。
A、在没有对指针变量赋值时,指针变量的值是不确定的
B、同类指针类型可以进行相减操作
C、在使用没有赋值的指针变量时,不会出现任何问题
D、可以通过指针变量来取得它指向的变量值
(  A  )
42、两个指针变量不可以________。
A、相加
B、比较
C、相减
D、指向同一地址
(  A  )
43、下面不正确的字符串常量是________。
A、'abc'
B、"12'12"
C、"0"
D、" "
(  B  )
44、c语言源程序名的后缀是________。
A、exe
B、c
C、obj
D、cp
(  B  )
45、下列关于函数之间数据传递的叙述正确的是________。
A、当函数实参是指针类型时,被称为传值调用
B、利用函数的返回值传递数据时只能传递一个数据
C、参数的传址调用是一种双向数据传递方式
D、参数的传值调用方式中,形参与实参具有相同的存储空间
(  A  )
46、c语言的if语句嵌套时,if与else的配对关系是________。
A、每个else总是与它上面的最近的并且尚未与其他else匹配的if配对
B、每个else总是与最外层的if配对
C、每个else与if的配对是任意的
D、每个else总是与它上面的if配对
(  D  )
47、在c语言中,一维数组的定义方式为:类型说明符 数组名____
A、[常量表达式]
B、[整型表达式]
C、[整型常量]或[整型表达式]
D、[整型常量]
(  A  )
48、定义如下变量和数组: 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  )
49、c 语言提供的基本数据类型关键字是________。
A、integer
B、FLOAT
C、unsigned
D、Double
(  D  )
50、指针变量 p 进行自加运算(即 执行 p++;)后,地址偏移值为 1,则其数据类型为()。
A、int
B、float
C、double
D、char