中国人民公安大学2022年C语言程序设计期末模拟考试

本试卷为中国人民公安大学2022年C语言程序设计期末模拟考试,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末模拟考试

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

(  D  )
1、下列程序执行后的输出结果是________。
main()
{
int a[3][3],*p,i,j;
p=&a;
for(i=p;i<9;i++)p[i]=i-i+1;
printf("%d\n",a[1][2]);
}
A、3
B、6
C、9
D、随机数
(  B  )
2、若有以下定义和语句:"double r=99,*p=&r;
*p=r;",则以下正确的叙述是________。
A、两个*p含义相同,都说明给指针变量P赋值
B、在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C、语句“*p=r;”把变量r的值赋给指针变量P
D、语句“*p=r;”取变量r的值放回r中
(  B  )
3、结构化程序所要求的基本结构不包括( )。
A、顺序结构
B、GOT0跳转
C、选择(分支)结构
D、重复(循环)结构
(  A  )
4、c语言中,合法的字符型常数是________。
A、‘A’
B、“A”
C、65
D、A
(  B  )
5、struct ex
{
int x ;
float y;
char z ;
}
example;
则下面的叙述中不正确的是________。
A、struct结构体类型的关键字
B、example是结构体类型名
C、x,y,z都是结构体成员名
D、struct ex是结构体类型
(  C  )
6、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d)y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
y=1,a≥b
B、y=0,a
y=1,a≥b且c≠d
C、y=0,a
y=1,a<B且C≠D
D、y=0,a
y=1,c≠d
(  D  )
7、有以下程序:
main()
{
int i,n=0: for(i=2;i<5;i++)
{
do
{
if(i%3) continue: n++;
}
while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后输出结果是________。
A、n=5
B、n=2
C、n=3
D、n=4
(  B  )
8、下列数据中为字符串常量的是________。
A、'A'
B、"9"
C、How do you do
D、'$abd'
(  C  )
9、函数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  )
10、有以下程序
#include <stdio.h>
main()
{
int c;
while ((c=getchar())!='\n')
{
switch(c-'2')
{
case 0: case 1: putchar(c+4);
case 2: putchar(c+4);
break;
case 3: putchar(c+3);
default: putchar(c+2);
break;
}
}
printf("\n");
}
从第一列开始输入以下数据,<cr>代表一个回车符。 2473<cr> 程序的输出结果是________。
A、668977
B、668966
C、66778777
D、6688766
(  B  )
11、以下能正确定义一维数组的选项是________。
A、int num[];
B、#define N 100
int num[N];
C、int num[0..100];
D、int N=100;
int num[N];
(  A  )
12、程序段:int x=12; double y=3.141593; printf("%d%8.6f",x,y); 的输出结果是________。
A、123.141593
B、12 3.141593
C、12,3.141593
D、123.1415930
(  A  )
13、有以下程序
#include <stdio.h>
#include <string.h>
void fun(char *s[ ],int n)
{
char *t;
int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j]))
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
main()
{
char *ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};
fun(ss,5);
printf("%s,%s\n",ss[0],ss[4]);
}
程序的运行结果是________。
A、xy,aaaacc
B、aaaacc,xy
C、bcc,aabcc
D、aabcc,bcc
(  B  )
14、设 p1 和 p2 是指向同一个 int 型一维数组的指针变量, k 为 int 型变量,则不能正 确执行的语句是______。
A、k=*P1+*P2;
B、p2=k;
C、P1=P2;
D、k=*P1 * ( *P2 ) ;
(  B  )
15、设有如下定义:
struct sk
{
int a ;
float b ;
}
data , *p ;
若有 p=&data ;
, 则对 data 中的 a 域的正确引用是______。
A、( *p ) .data.a
B、( *p ) .a
C、p->data.a
D、p.data.a
(  D  )
16、在下列选项中 , 不正确的赋值语句是 __________.
A、++t;
B、n1=(n2=(n3=0));
C、k=i=j;
D、a=b+c=1;
(  B  )
17、若 i 为整型变量 , 则以下循环语句的循环次数是 ____. for(i=2;i==0;) printf("%d",i--);
A、无限次
B、0 次
C、1 次
D、2 次
(  C  )
18、已知函数fread.的调用形式为fread(buffer,size,count,fp); ,其中buffer代表的是________。
A、存放读入数据项的存储区
B、一个指向所读文件的文件指针
C、一个指针,是指向输入数据存放在内存中的起始地址
D、一个整型变量,代表要读入的数据项总数
(  B  )
19、在一个c语言程序中,________。
A、main函数必须出现在所有函数之前
B、main函数可以在任何地方出现
C、main函数必须出现在所有函数之后
D、main函数必须出现在固定位置
(  A  )
20、下列定义语句中,错误的是________。
A、int px*;
B、char*acp[10];
C、char(*paC) [10];
D、int(*p)( );
(  D  )
21、一个汉字的内码长度为2个字节,其每个字节的最高二进制位的值依次分别是______。
A、0,0
B、0,1
C、1,0
D、1,1
(  C  )
22、若调用一个函数,且此函数中没有return语句,则正确的说法是该函数________。
A、没有返回值
B、返回若干个系统默认值
C、有返回值,但返回一个不确定的值
D、能返回一个用户所希望的函数值
(  B  )
23、在以下各标识符中,合法的用户标识符是________。
A、001
B、table__1
C、0__t
D、k%
(  B  )
24、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是________。
A、for(i=1,p=1;i<=5;i++) p*=i;
B、for(i=1;i<=5;i++) { p=1; p*=i; }
C、i=1;p=1; while(i<=5) { p*=i; i++ };
D、i=1;p=1;do { p*=i; i++; } while(1<=5)
(  C  )
25、在标准ascⅱ编码表中,数字码、小写英文字母和大写英文字母的前后次序是________。
A、数字、小写英文字母、大写英文亨母
B、小写英文字母、大写英文字母、数字
C、数字、大写英文字母、小写英文字母
D、大写英文字母、小写英文字母、数字
(  A  )
26、有以下程序:
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
(  A  )
27、下列程序的执行结果是 ______。
#include<stdio.h>
union un {
int i;
char c[2];
}
void main() {
union un x;
x.c[0]=10;
x.c[1]==1;
printf("\n%d",x.i);
}
A、266
B、11
C、265
D、138
(  B  )
28、x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是________。
A、INPUT x、v、z;
B、scanf("%d%d%d",&x,&y,&z);
C、scanf("%d%d%d",x,y,z);
D、read("%d%d%d",&x,&y,&z);
(  B  )
29、关于二进制的说法中,正确的是________。
A、所有的信息只能用二进制代码来表示
B、计算机一般都使用二进制代码,用它的某种信息编码方式来表示信息
C、ASCII是计算机用来表示文字符号的唯一一种二进制代码
D、汉字在计算机内使用汉字国标码来表示,不使用二进制编码
(  B  )
30、设ch是char型变量,其值为c,且有下面的表达式ch=(ch>='a'&&ch<='z')?(ch-32):ch上面表达式的值是______。
A、c
B、C
C、Z
D、z
(  C  )
31、下面各语句行中,能正确进行给字符串赋值操作的语句行是______。
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  )
32、若要打开a盘上的user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是______。
A、fopen("A:\user\abc.txt","r")
B、fopen("A:\\user\\abc.txt","r+")
C、fopen("A:\user\abc.txt","rb")
D、fopen("A:\\user\\abc.txt","w")
(  B  )
33、数组定义为 int a[3][2]={ 1, 2, 3, 4, 5, 6 },数组元素( )的值为6。
A、a[3][2]
B、a[2][1]
C、a[1][2]
D、a[2][3]
(  D  )
34、若有int *p1, *p2,k; 不正确的语句是________。
A、p1=&k
B、p2=p1
C、*p1=k+12
D、k=p1+p2
(  C  )
35、假定double类型变量占用8个字节,且数组定义如下,则数组length在内存中所占字节数是________。double length [10];
A、0
B、10
C、80
D、160
(  A  )
36、设有结构体的定义如下:
struct data
{
char c1;
char c2;
}
;
则sizeof(struct data)的值是________。
A、2
B、3
C、4
D、5
(  A  )
37、已知 int i,a; 执行语句"i=(a=2*3,a*5),a+6; "后,变量a的值是________。
A、6
B、12
C、30
D、36
(  A  )
38、以下叙述中正确的是________。
A、int*p1;int**p2;int*p3 都是合法的定义指针变量的语句
B、指针变量只能通过求地址运算符(&)来获得地址值
C、语句 p=NULL;与 p=\0;是等价的语句
D、语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元
(  B  )
39、c语言源程序的基本单位是________。
A、过程
B、函数
C、子程序
D、标识符
(  B  )
40、以下叙述中不正确的是________。
A、一个好的程序应该有详尽的注释
B、在C程序中,赋值运算符的优先级最低
C、在C程序中,j++;是一条赋值语句
D、C程序中的#include和#define均不是C语句
(  B  )
41、下列程序的输出结果是________。
main()
{
char c1=97,c2=98;
printf("%d %c",c1,c2);
}
A、97 98
B、97 b
C、a 98
D、a b
(  D  )
42、若int类型数据占两个字节,则下列语句的输出为________。 int k=-1; printf("%d,%u\n",k,k);
A、-1,-1
B、-1,32767
C、-1,32768
D、-1,65535
(  D  )
43、使用共用体变量,不可以________。
A、节省存储空间
B、简化程序设计
C、进行动态管理
D、同时访问所有成员
(  A  )
44、指针变量p进行自加运算(即 执行p++;)后,地址偏移值为4,则其 数据类型为________。
A、int
B、float
C、double
D、char
(  B  )
45、字符串指针变量中存入的是________。
A、字符串
B、字符串的首地址
C、第一个字符
D、字符串变量
(  C  )
46、在以下定义中,标识符p________。 int (*p)[3];
A、定义不合法
B、是一个指针数组名,每个元素是一个指向整数变量的指针
C、是一个指针,它指向一个具有三个元素的一维数组
D、是一个指向整型变量的指针
(  C  )
47、若有说明:int *p1,*p2,m=5,n;
以下均是正确赋值语句的选项是________。
A、p1=&m;
B、p1=&m;p2=&n;*p1=*p2;
C、p1=&m;p2=p1;
D、p1=&m;*p2=*p1;
(  D  )
48、在c 语言中,能表示无符号长整型常数的是________。
A、OL
B、4962710U
C、912374u
D、2UL
(  B  )
49、将三个数排序需要比较________次。
A、2
B、3
C、4
D、不确定
(  C  )
50、以下选项中合法的实型常数是()。
A、5E2.0
B、E-3
C、2.00E-01
D、1.3E