内蒙古工业大学2023年C语言程序设计专升本预测卷

本试卷为内蒙古工业大学2023年C语言程序设计专升本预测卷,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本预测卷

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

(  A  )
1、关于c语言中数的表示,以下叙述中正确的是________。
A、只有整型数在允许范围内能精确无误地表示,实型数会有误差
B、只要在允许范围内整型数和实型数都能精确地表示
C、只有实型数在允许范围内能精确无误地表示,整形数会有误差
D、只有用八进制表示的数才不会有误差
(  C  )
2、下述程序的输出结果是________。
main()
{
char che2][5]-{"1234","5678"},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
{
s=p[i][j]一'0';
printf("%d",s);
}
}
A、6357
B、6135
C、1357
D、691357
(  D  )
3、以下程序运行后的输出结果是________。
#include <stdio.h>
main( )
{
int s=0,k;
for(k=7;k>=0;k--)
{
switch(k)
{
case 1: case 4: case 7: s++;
break;
case 2: case 3: case 6: break;
case 0: case 5: s+=2;
break;
}
}
printf("s=%d\n",s);
}
A、s=5
B、s=1
C、s=3
D、s=7
(  D  )
4、以下能正确定义字符串的语句是________。
A、char str[]={′\064′};
B、char str="kx43";
C、char str=";
D、char str[]="\0";
(  C  )
5、有以下函数定义:
void fun(int n, double x)
{
……
}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是________。
A、fun(int y,double m);
B、k=fun(10,12.5);
C、fun(x,n);
D、void fun(n,x);
(  B  )
6、有以下程序
#include <stdio.h>
void fun( int *a,int *b)
{
int *c;
c=a;
a=b;
b=c;
}
main()
{
int x=3, y=5, *p=&x, *q=&y ;
fun(p,q);
printf("%d,%d,",*p,*q);
fun(&x,&y);
printf("%d,%d\n",*p,*q);
}
程序运行后输出的结果是________。
A、3,5,5,3
B、3,5,3,5
C、5,3,3,5
D、5,3,5,3
(  D  )
7、在定义 int a[10]; 之后,对 a 的引用正确的是______。
A、a[10]
B、a[6.3]
C、a(6)
D、a[10-10]
(  C  )
8、设有如下枚举类型定义: enum language
{
basic=3 , assembly , ada=100 , cobol , fortran
};
枚举量 fortran 的值为 。
A、4
B、7
C、102
D、103
(  A  )
9、如果用数组名作为实参,则传递给形参的是________。
A、数组的首地址
B、第一个元素的值
C、数组元素的个数
D、数组中全部元素的值
(  C  )
10、下列语句中执行跳转功能的语句是________。
A、for语句
B、while语句
C、continue语句
D、switch语句
(  B  )
11、以下叙述中正确的是________。
A、在C程序中,语句之间必须要用分号(;)分隔
B、在C程序中#include行和#define行不是C语句
C、程序中的注释部分可有可无,通常可以省略
D、当输入数值数据时,对于整型变量只能输入整型值:对于实型变量只能输入实型值
(  C  )
12、下面程序的输出结果是________。
#include<stdio.h>
main() {
char a[]='a','b','c','d','f','g',*p;
p=a;
printf("%c\n",*p+4);
}
A、a
B、b
C、e
D、f
(  A  )
13、以下程序的运行结果是________。
#include <stdio.h>
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=null;
*q=8(p+5);
printf("%d %d\n", *p,*q);
}
A、运行后报错
B、6 6
C、6 11
D、5 5
(  C  )
14、下列字符数组长度为5的是________。
A、char a[10]= { 'h','a','b','c','d' };
B、char b[]={ 'h','a','b','e','d','\0'};
C、char c[]={'h','a','b','c','d'};
D、char d[6]= {'h','a','b','c','\0'};
(  B  )
15、c语言中,关系表达式和逻辑表达式的值是________。
A、0
B、0或1
C、1
D、'T'或'F'
(  C  )
16、该语句打印结果为(每个d后都有空格)printf("%d ", printf("%d ", printf("%d ", 43)));
A、4321
B、43 43 43
C、43 3 2
D、4 3 2 1
(  B  )
17、下列字符序列中,不可用作c语言标识符的是________。
A、b70
B、#ab
C、symbol
D、a_1
(  B  )
18、c语言中,定义结构体的保留字是________。
A、union
B、struct
C、enum
D、typedef
(  D  )
19、设有char str[10] ,下列语句正确的是________ 。
A、scanf("%s",&str);
B、printf("%c",str);
C、printf("%s",str[0]);
D、printf("%s",str);
(  A  )
20、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
A、x[i++]
B、y[++i]
C、x[i]
D、y[i]

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

(   T  )
1、用strcat(字符串1,字符串2)连接两个字符串函数时,将字符串1后面的'\0'取消,只在新串的最后保留一个'\0'。 
(   T  )
2、c语言中简单变量作为实参时,它和对应的形参之间的数据传递方式是单向值传递。 
(   T  )
3、case语句后如没有break,顺序向下执行。 
(   T  )
4、递归调用时必须有结束条件,不然就会陷入无限递归的状态。 
(   F  )
5、表达式1/4+2.75的值是3. 
(   F  )
6、函数调用可以出现在执行语句中,但不能出现在表达式中. 
(   T  )
7、在switch语句中,多个case可以共用一组执行语句。 
(   F  )
8、在定义数组时,什么时候都不可以将该数组的维数省略。 
(   F  )
9、当函数的实参与形参同名时,它们将共占内存单元。 ( ) 
(   F  )
10、随机操作只适用于文本文件。 

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

1、在c语言中,格式输入库函数为________,格式输出库函数为________。
2、表达式(int)((double)(5/2)+2.5)的值是 ________ 。
3、在c语言中,以________开头的常量代表的是十六进制数。
4、ferror函数用来检测文件读写时是否发生错误,若未发生读写错误,则返回值是________。
5、下列程序段的运行结果是________。
main()
{
int m=1,t=1;
for( ; ; )
{
m=m+t ;
t++;
if(m>9) break ;
}
printf("%d\n",m);
}

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

1、以下程序的输出结果是_____________。
main()
{
int a=10,b=10;
printf("%da%d",a――,――b);
}
2、下列程序段的运行结果是________。
main( )
{
int a=5,b=6,c;
int max(int,int);
c=max(a,b);
printf("%d\n",c);
}
int max( int x , int y )
{
int z;
if(x>y) z=x;
else z=y;
return z ;
}
3、int x=6, y=7;
printf("%d,",x++);
printf("%d\n",++y);
程序的输出结果是________。
4、以下程序的运行结果是________。
#include <stdio.h>
main()
{
int x, y = -2, z = 0;
if ((z = y) < 0) x = 4;
else if (y == 0) x = 5;
else x = 6;
printf("\t%d\t%d\n", x, z);
if (z = (y == 0)) x = 5;
x = 4;
printf("\t%d\t%d\n", x, z);
if (x = z = y) x = 4;
printf("\t%d\t%d\n", x, z);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序: 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
2、题⽬描述
万⾥⼗佳歌⼿⽐赛终于开始了,评委席坐了N(N⼤于等于3,并且N⼩于80)个评委,他们商量了很久,终于找出⼀个公正合理的评分⽅法。每次歌⼿唱完后,每个评委⾃⼰打⼀个分,然后在N个评委的打分中,去掉⼀个最⾼分,⼀个最低分。然后再把剩下的评委的打分求平均值~ 。
但是问题是他们嫌每次拿计算器按实在太烦。作为⼀名计算机专业学⽣~你⽤个程序帮帮他们搞定吧。
输⼊
输⼊有多组数据。每组2⾏,第⼀⾏是⼀个N,代表有N个评委。然后第⼆⾏有N个数,每个数⽤空格隔开,代表每个评委的打分。
当输⼊的N为0的时候结束输⼊。
输出
对于每组输⼊,输⼊最终这个选⼿的得分(⼩数点后⾯保留2位有效数字)。
样例输⼊
3
74 36 34
7
16 97 27 26 74 96 88
样例输出
36.00
62.20
3、任意输入一行字符串保存在一维字符数组中,判断里面数字字符的个数。