C语言(专升本)模拟试题

普通高校专升本考试(以下简称“专升本考试”)是普通高校全日制高职应届毕业生升入普通高校全日制本科的选拔性考试,其目的是科学、公平、有效地测试考生在高职阶段相关专业知识、基本理论与方法的掌握水平和分析问题、解决问题的能力,以利于各普通本科院校择优选拔,确保招生质量。专升本考试贯彻党的教育方针,落实立德树人根本任务,促进高素质技术技能人才成长,培养德智体美劳全面发展的社会主义建设者和接班人。

C语言专升本模拟考试

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

(  C  )
1、有以下程序
#include <stdio.h>
main()
{
int a = 1, b = 0;
if (--a)
b++;
else if (a == 0)
b += 2;
else
b += 3;
printf("%d\n", b);
}
程序运行后的输出结果是________。
A、0
B、1
C、2
D、3
(  C  )
2、有以下程序
#include <stdio.h>
int main()
{
int a = 1, b = 2, c = 3, d = 0;
if (a == 1 && b++ == 2)
if (b != 2 || c-- != 3)
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
else
printf("%d,%d,%d\n", a, b, c);
}
程序运行后的输出结果是________。
A、1,2,3
B、1,3,2
C、1,3,3
D、3,2,1
(  D  )
3、有以下程序
#include <stdio.h>
main()
{
int x=l, y=2, z=3;
if(x>y) if(y<z) printf("%d", ++z);
else printf("%d", ++y);
printf("%d\n", x++);
}
程序的运行结果是________。
A、331
B、41
C、2
D、1
(  B  )
4、当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为
if(a<b)
if(c<d) x=1;
else
if(a<c)
if(b<d) x=2;
else x=3;
else x=6;
else x=7;
A、1
B、2
C、3
D、6
(  C  )
5、有如下程序
main()
{
float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0) y=1.0/x;
else y=1.0;
printf("%f\n",y);
}
该程序的输出结果是________。
A、0.000000
B、0.250000
C、0.500000
D、1.000000
(  C  )
6、在执行以下程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的条件是
main()
{
int s,t,a,b;
scanf("%d,%d",&a,&b);
s=1; t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
else if(a==b) t=5;
else t=2*s;
printf("t=%d\n",t);
}
A、a>b
B、a<b<0
C、0<a<b
D、0>a>b
(  A  )
7、有以下程序
#include <stdio.h>
main()
{
int a=0,b=0,c=0;
c=(a-=a-5);
(a=b,b+=4);
printf("%d, %d, %d\n",a,b,c);
}
程序运行后输出的结果是________。
A、0,4,5
B、4,4,5
C、4,4,4
D、0,0,0
(  C  )
8、以下选项中,能表示逻辑值"假"的是________。
A、1
B、0.000001
C、0
D、100.0
(  C  )
9、若有定义语句:int a=10; double b=3.14; ,则表达式‘a’+a+b值得类型是________。
A、char
B、int
C、double
D、float
(  C  )
10、有以下程序
#include<stdio.h>
main ()
{
int i, j, x = 0;
for (i = 0; i < 2; i++)
x++;
for (j = 0; j <= 3; j++)
{
if (j % 2)
continue;
x++;
x++;
}
printf ("x=%d\n", x);
}
程序执行后的输出结果是______。
A、x=8
B、x=4
C、x=6
D、x=12

二、多项选择题 (共10题,每题3分,共计30分)

(  A  )
1、以下叙述中正确的是________。
A、int*p1;int**p2;int*p3 都是合法的定义指针变量的语句
B、指针变量只能通过求地址运算符(&)来获得地址值
C、语句 p=NULL;与 p=\0;是等价的语句
D、语句 p=NULL;执行后,指针 p 指向地址为 0 的存储单元
(  B  )
2、以下叙述中正确的是________。
A、一条语句只能定义一个数组
B、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  A  )
3、以下叙述中正确的是________。
A、语句 int a[8]={0};是合法的
B、语句 int a={ 0};是不合法的,遗漏了数组的大小
C、语句 char a[2]={"A","B"};是合法的,定义了一个包含两个字符的数组
D、语句 char[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符
(  C  )
4、以下叙述中正确的是________。
A、两个字符串可以用关系运算符进行大小比较
B、函数调用 strlen(s)会返回字符串 s 实际占用内存的大小(以字节为单位)
C、C 语言本身没有提供对字符串进行整体操作的运算符
D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
(  D  )
5、以下叙述中正确的是________。
A、局部变量不能被说明为 static
B、只有全局变量才有自己的作用域,函数中的局部变量没有作用域
C、只有在函数内部定义的变量才是局部变量
D、只要是用户定义的标识符,都有一个有效的作用域
(  B  )
6、下面选项中关于编译预处理的叙述正确的是________。
A、预处理命令行必须使用分号结尾
B、凡是以#号开头的行,都被称为编译预处理命令行
C、预处理命令行不能出现在程序的最后一行
D、预处理命令行的作用域是到最近的函数结束处
(  B  )
7、以下叙述中正确的是________。
A、使用 typedef 说明新类型名时,其格式是:typede 新类型名原类型名
B、在程序中,允许用 typedef 来说明一种新的类型名
C、使用 typedef 说明新类型名时,后面不能加分号
D、在使用 typedef 改变原类型的名称后,只能使用新的类型名
(  A  )
8、以下叙述中正确的是________。
A、使用 typedef 定义新类型名后,新类型名与原类型名实际上是等价的
B、结构体类型中的各个成分均不能是数组或指针
C、结构体类型的变量,不能在声明结构体类型组成时一起定义
D、元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义
(  A  )
9、下面选项中关于"文件指针"概念的叙述正确的是________。
A、文件指针是程序中用 FILE 定义的指针变量
B、文件指针就是文件位置指针,表示当前读写数据的位置
C、文件指针指向文件在计算机中的存储位置
D、把文件指针传给 fscanf 函数,就可以向文本文件中写入任意的字符
(  A  )
10、设有定义:int a=64,b=8; 则表达式(a&b)||(a&&b)和(a|b)&&(a||b)的值分别为
A、1 和 1
B、1 和 0
C、0 和 1
D、0 和 0

三、判断题 (共10题,每题2分,共计20分)

(   T  )
1、循环语句中如果包含若干条语句,则必须用大括号括起来 
(   F  )
2、在标准c中, for 语句后的三个表达式必须都出现。 
(   T  )
3、执行" for(i=1;i<10;i+=2) s+=i;"后, i 的当前值为11 
(   F  )
4、已有定义:char a[]="xyz",b[]={'x','y','z'};则数组a 和b 的长度相同 
(   T  )
5、任何数组在使用前必须先定义。 
(   F  )
6、二维数组元素在内存中的存放顺序是按列主顺序存放 
(   T  )
7、字符串"this" 大于字符串"that" 
(   F  )
8、字符数组char c[]="string";有6 个数组元素 
(   F  )
9、若有定义一维数组int a[4] 的首地址为0078h,则a[1] 元素的首地址是0079h(设int 型数据占两个字节) 。 
(   F  )
10、定义char *string= "string? "是将字符串的值赋给指针变量string 。 

四、填空题 (共10题,每题4分,共计40分)

1、求主次对角线之和。
main()
{
static int a[ ][3]={9,7,5,1,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3;i++) for(j=0;j<3;j++)
{
if( ________ ) s1=s1+a[i][j];
if( ________ ) s2=s2+a[i][j];
}
printf("%d\n%d\n",s1,s2);
}
2、从键盘上输入10个数,求其平均值,填空_______。
main()
{
int i;
float f,sum;
for(i=1,sum=0.0;i<11;i++)
{
________ ;
________ ;
}
printf("average=%f\n",sum/10);
}
3、以下程序的功能是:从键盘上输入若干个学生的成绩, 统计并输出最高成绩和最低成绩,当输入负数时结束输入请填空________。
main()
{
float x,amax,amin;
scanf("%f",&x);
amax=x;
amin=x;
while( ________ )
{
if(x>amax) amax=x;
if( ________ ) amin=x;
scanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
4、c语言的预处理语句以 ________ 开头。
5、下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。 int n=0, ch;
ch=getchar( );
while( ________ )
{
if ( ________ ) n++;
c=getchar( );
}
6、c语言中getchar() 函数的功能是 ________ 。
7、int *p 的含义是 ________ 。
8、在c语言中,正确的标识符是由 ________ 组成的,且由 ________ 开头的。
9、设p=30,那么执行q=(++p)后,表达式的结果q为 ________ ,变量p的结果为 ________ 。 若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是 ________ 。
10、一个变量的指针是指 ________ 。

五、简答题

1、编写程序:计算并输出100~300之间能被3和7整除的所有数,每8个换行
2、编写程序:判断输入字符的字母的个数,以*结束输出。
3、编写程序,求s=1+(1+2)+….+(1+2+….+10)
4、编写程序:输入10个整数,输出其中的偶数并计算偶数之和,用一维数组
5、编写程序:输入三个整数,从大到小顺序输出。
6、编写程序:从键盘输入的10个整数中,找出第一个能被7整除的数。若找到,打印此数后退出循环;
若未找到,打印"not exist"。
7、请编一个函数int fun(int a),它的功能是:判断a是否是素数,若a是素数,返回1;
若不是素数,返回0。a的值由主函数从键盘读入。
8、编写程序:计算下列表达式:s=n!(n从键盘上输入)
9、编写程序:从键盘上输入9个数,按3行3列的格式输出。
10、编写一个自定义函数,实现求两个实数的平方和