内蒙古科技大学2023年C语言专升本模拟

本试卷为内蒙古科技大学2023年C语言专升本模拟,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言专升本模拟

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

(  A  )
1、以下程序段给数组所有元素输入数据:
main()
{
int a[10],i=0;
while(i<10)scanf("%d",);
}
应在下划线处填入的是________。
A、a+(i++)
B、&a[i+1]
C、a+i
D、&a[++i]
(  A  )
2、c语言结构体类型变量在程序执行期间,________。
A、所有成员一直驻留在内存中
B、没有成员驻留在内存中
C、部分成员驻留在内存中
D、只有一个成员驻留在内存中
(  C  )
3、当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是________。
A、c=b=a;
B、(a=c)||(b=c);
C、(a=c)&&(b=c);
D、a=c=b;
(  D  )
4、下列选项中正确的语句组是________。
A、char s[8]; s={"Beijing"};
B、char *s; s={"Beijing"};
C、char s[8]; s="Beijing";
D、char *s; s="Beijing";
(  B  )
5、若有以下定义 int x[10], *pt=x; 则对x数组元素的正确引用是________。
A、*&x[10]
B、*(x+3)
C、*(pt+10)
D、pt+3
(  A  )
6、下列表示引用的方法中,( )是正确的。 已知:int m=10:
A、int &x=m;
B、int &y=10;
C、int &Z
D、float &t=&m;
(  D  )
7、若有以下定义的语句
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
(  C  )
8、各种运算符间的优先顺序从高到低是________。
A、比较运算符→算术运算符→逻辑运算符
B、比较运算符→逻辑运算符→算术运算符
C、算术运算符→比较运算符→逻辑运算符
D、算术运算符→逻辑运算符→比较运算符
(  D  )
9、有以下程序
main()
{
int i=0,s=0;
for(;;)
{
if(i==3‖i==5) continue;
if(i==6) break;
i++;
s+=i;
}
;
printf("%d\n",s);
}
程序运行后的输出结果是________。
A、10
B、13
C、24
D、程序进入死循环
(  C  )
10、下面程序段的运行结果是 char *s="abcde"; s+=2; printf("%d",s);
A、cde
B、字符'c'
C、字符'c'的地址
D、无确定的输出结果
(  A  )
11、有以下程序:
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10,p++)printf("%d,",*p);
}
程序运行后的输出结果是________。
A、1,234,5,6,7,8,9,0,
B、2,3,4,5,6,7,8,9,10,1,
C、01,23,4,5,6,7,8,9,
D、1,1,1,1,1,1,1,1,1,1,
(  A  )
12、两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是________。
#include<stdio.h>
void main()
{
int x;
scanf("%d", &x);
if(x++>5) printf("%d", x);
else printf("%d\n", x--);
}
A、7和5
B、6和3
C、7和4
D、6和4
(  C  )
13、若给定条件表达式(m)?(a++):(a--)则下列选项中和表达式m等价的是________。
A、(M==0)
B、(M==1)
C、(M!=0)
D、(M!=1)
(  B  )
14、以下程序运行后的输出结果是 _______ 。
main( )
{
int i=0,s=1;
for (;;)
{
if (i==5) break;
i++;
s+=i;
}
;
printf("%d\n",s);
}
A、死循环
B、16
C、15
D、11
(  D  )
15、对于64位系统,int类型能够表示的数的范围为
A、0~2的32次方
B、0~2的32次方-1
C、-2的31次方~2的31次方
D、-2的31次方~2的31次方-1
(  C  )
16、以下叙述中正确的是________。
A、对于逻辑表达式:a++||b++,设 a 的值为 1,则求解表达式的值后,b的值会发生改变
B、对于逻辑表达式:a++&&b++,设 a 的值为 0,则求解表达式的值后,b的值会发生改变
C、else 不是一条独立的语句,它只是 if 语句的一部分
D、关系运算符的结果有三种:0,1,-1
(  D  )
17、已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中 不正确的是________。
A、p=&j,p=p1;
B、p=a;
C、p=&a[j];
D、p=10;
(  B  )
18、执行下列语句后的结果为________。 int x=3,y; int *px=&x; y=*px++;
A、x=3,y=4
B、x=3,y=3
C、x=4,y=4
D、x=3,y不知
(  B  )
19、c语言程序中必须有的函数是________。
A、#include "stdio.h"
B、main
C、printf
D、scanf
(  B  )
20、下面程序的功能是把316 表示为两个加数的和,使两个加数分别能被13 和11 整除。请选择填空。
#include <stdio.h>
main()
{
int i = 0, j, k;
do
{
i++;
k = 316 - 13 * i;
}
while (______);
j = k / 11;
printf("316=13*%d+11*%d", i, j);
}
A、k/11
B、k%11
C、k/11==0
D、k%11==0

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

(   T  )
1、逻辑运算符 && || ! 的运算顺序是 ! 优先于 && 优先于 || ( ) 
(   T  )
2、关系表达式的值是一个逻辑值,即"真"或"假",并且用0表示"假",用1表示"真"。 
(   T  )
3、c语言对文件读、写之前必须先打开文件,在使用文件之后应关闭该文件。 
(   T  )
4、计算机语言(computer language)是人与计算机之间通讯的语言。 
(   F  )
5、c 语言中 , 字符串常量最后一个字符是结束标志 , 该结束符是'0' 。 
(   F  )
6、char a="string"是合法的数组定义语句。 
(   F  )
7、while循环语句的循环体至少执行一次. 
(   F  )
8、定义在main 函数后的任何函数都需在main 中进行函数声明 
(   F  )
9、若定义时,函数返回值类型为void ,函数仍然可有return 带回返回值。 
(   F  )
10、c语言中,在一个函数内部可以定义另一个函数。 

三、填空题 (共5题,每题4分,共计20分)

1、在循环中,continue语句与break语句的区别是:continue语句是语句的区别是:continue语句是 ________ ,break 是 ________ 。
2、设m=0,n=2,则表达式"!(m+n)"的值是________。
3、如果一个变量要在一个程序中的所有函数都能共享,则应该定义成为________。
4、数学表达式a<b<=c改写为c语言表达式是__________。注:表达式要在英文半角状态下按原表达式顺序书写,且表达式中不要留空格。
5、C语言函数是由函数首部和函数体两部分组成。其中,函数首部包括 函数类型、函数名和______。

四、程序分析题 (共4题,每题5分,共计20分)

1、以下程序的输出结果是________。
main()
{
int x;
printf("%d\n",(x=2*4,x+5));
}
2、以下程序运行后的输出结果是 ________
#include <stdio.h>
main()
{
int a=1,b=7;
do
{
b=b/2;
a+=b;
}
while (b>1);
printf("%d\n",a);
}
3、执行下列的程序段后,正确的结果是_____________。
int i=5;
while( i = 1)i -- ;
printf("%d", i );
4、下列给定程序中,函数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分,共计50分)

1、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,
数据如下:201513135157 张三 90
1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上
2)将学生中不及格学生的姓名显示出来
3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
2、输出2000——2500年每一年是否闰年
3、任意输一行字符串(包括空格),求其长度(不用strlen函数)。