中国刑事警察学院2022年计算机C语言模拟考试

本试卷为中国刑事警察学院2022年计算机C语言模拟考试,题目包括:单项选择题,填空题,编程题。

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

计算机C语言模拟考试

一、单项选择题 (共20题,每题2分,共计40分)

(  C  )
1、下列能正确进行字符串赋值的是________。
A、char s[5]={¨ABCDE”);
B、char s[5]={'A','B','C','D','E'};
C、char*s;s=”ABCDE”;
D、char*s;printf(”%S”,s);
(  A  )
2、若变量已正确定义,在语句"if(w)printf("%d\n",k);"中,以下不可替代w的是________。
A、a<>b+c
B、ch=getchar()
C、a==b+C
D、a++
(  A  )
3、在c语言中,存储一个字符型、整型、双精度实型变量所需的字节数是________。
A、1、2、8
B、1、4、4
C、4、1、4
D、2、2、8
(  B  )
4、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为 for(i=0,j=10;i<=j;i++,j--) k=i+j;
A、12
B、10
C、11
D、9
(  B  )
5、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是________。
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;
(  A  )
6、以下程序输出的结果是 __________.
#include <stdio.h>
void main( )
{
int a[ ]={1,2,3,4,5},i,j,s=0;
for(i=0;i<5;i++) s=s*10+a[i];
printf("s=%d\n",s);
}
A、s=12345
B、s=1 2 3 4 5
C、s=54321
D、s=5 4 3 2 1
(  C  )
7、假定a为一个整型数组名,则元素a[4]的字节地址为
A、a+4
B、a+8
C、a+16
D、a+32
(  B  )
8、若有函数 char*func(char *p) … return p; 则该函数的返回值是 ______。
A、无确切的值
B、形参p中存放的地址
C、一个临时存储单元的地址
D、形参p自身的地址
(  C  )
9、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
A、cde
B、字符'c'
C、字符'c'的地址
D、无确定的输出结果
(  D  )
10、char型常量在内存中存放的是________。
A、二进制代码值
B、十进制代码值
C、十六进制代码值
D、ASCⅡ代码值
(  C  )
11、下面程序的输出结果为________。
struct st
{
int x;
int *y;
}
*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
void main()
{
p=aa;
printf("%d ", ++p->x);
printf("%d ", (++p)->x);
printf("%d ", ++(*p->y));
}
A、10 20 20
B、50 60 21
C、51 60 21
D、60 70 31
(  A  )
12、下面的程序
main()
{
int a=2;
do
{
printf("%d\n",a-=2);
}
while(!(--a) );
}
______。
A、输出的是0
B、输出的是0和-3
C、输出的是3和0
D、是死循环
(  A  )
13、有说明语句int a[4][5]; 则a[2]+3表示__。
A、a数组行下标为2、列下标为3的元素的地址
B、a数组行下标为2、列下标为3的元素的值
C、a数组第2行的首地址
D、a数组第3行的首地址
(  C  )
14、执行以下语句后a 的值为________。
int a,b,c;
a=b=c=1;
++a||++b&&++c;
A、错误
B、0
C、2
D、1
(  C  )
15、下列if语句中,不正确的是________。
A、if(x>y);
B、if(x==y) x+=y;
C、if(x!=y) scanf("%d",&x) else x=1;
D、if(x
(  C  )
16、下面说法正确的是________。
A、文件指针变量的值是文件当前正在处理的字节地址
B、文件指针变量的值是文件中包含的字符个数
C、文件指针的类型是一种指针类型
D、文件指针的类型是结构体类型
(  B  )
17、以下叙述中正确的是________。
A、一条语句只能定义一个数组
B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  D  )
18、c语言中,switch后的括号内表达式的值可以是________。
A、只能为整型
B、只能为整型,字符型,枚举型
C、只能为整型和字符型
D、任何类型
(  C  )
19、设有如下定义:int x=10, y=4,z;
4则语句:printf(''%d\n'', z=(x%y, x/y));
的输出结果是________。
A、1
B、0
C、2
D、3
(  A  )
20、下列定义数组的语句中正确的是()。
A、#define size 10 char str1[size],str2[size+2];
B、char str[];
C、int num['10'];
D、int n=5; int a[n][n+2];

二、填空题 (共10题,每题2分,共计20分)

1、下面程序段的运行结果是________.
int i=1,s=3;
do
{
s+=i++;
if(s%7==0)continue;
else ++i;
}
while(s<15);
printf("%d",i);
2、执行下列程序段后,输出的a的值是_____________。
main( )
{
int m = 0;
switch(m)
{
case 0: m=2*m+1;
break;
case 1: m=m-1;
break;
case 2: m=m+5;
break
}
printf("%d",m);
}
3、在c语言中,按函数在程序中出现的位置可分为以下三种调用方式:函数语句、函数表达式和函数________。
4、已知char str[]="student",则strlen(str)的值为________。
5、int a,b;与a*=5-b;等价的赋值语句是________。
6、在c 语言中的实型变量分为两种类型,它们是________和________。
7、循环语句for(i=0;i<3;i++) printf("*");
表达式i=0 执行【1】________次,表达式i++执行【2】________次。
8、在c语言中,将字符串中小写字母转换成大写字母的函数是_____________。
9、下面程序是计算10个整数中奇数的和及其偶数的和,请填空。
main()
{
int a,b,c,i;
a=c=0;
for(i=1;i<=10;i++)
{
scanf("%d",&b);
canf("%d",&b);
________ ________ ________
}
printf("偶数的和=%d\n",a);
printf("奇数的和=%d\n",c);
}
10、下列给定程序中,函数proc()的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ascii码升序排序后输出。 例如,输入opdye,则应输出deopy。 请修改程序中的错误,使它能得到正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序:
int proc(char str[])
{
char c;
unsigned i,j;
for(i=0;i<strlen(str)-1;i++)
for(j=i+1;j<strlen(str);j++)
if(str[i]>str[j])
{
c=str[j];
str[j]=str[i++];
str[i]=c;
}
}
void main()
{
char str[81];
system("cls");
printf("\nplease enter a character string:");
gets(str);
printf("\n\nbefore sorting:\n%s",str);
proc(str);
printf("\nafter sorting decendingly:\n %s",str);
}

三、编程题 (共3题,每题0分,共计40分)

1、请编写函数proc(),其功能是:计算并输出下列多项式值。 s=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n) 例如,若主函数从键盘给n输入20后,则输出为s= 0.680803。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序:
#include <stdio.h>
double proc(int n)
{
}
void main()
{
int n;
double slim;
printf("\ninput n:");
scanf("%d",&n);
sum=proc(n)。 printf("\ns=%f\n",sum);
}
2、试利用指向结构体的指针编制一程序,实现输入3个学生的学号、数学期中和期末考试成绩。然后计算其平均成绩并输出成绩表,使用结构体实现。
3、编写程序,判断从键盘输入的字符中数字字符的个数、大写字母的个数、小写字母的个数及其它字符的个数,以*作为字符输入结束标志。