西安工程大学C语言程序设计专升本

本试卷为西安工程大学C语言程序设计专升本,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本

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

(  B  )
1、若程序中有宏定义行:#define N 100,则以下叙述中正确的是________。
A、宏定义行中定义了标识符N的值为整数100
B、在编译程序对C源程序进行预处理时用100替换标识符N
C、对C源程序进行编译时用100替换标识符N
D、在运行时用100替换标识符N
(  B  )
2、下列定义数组的语句中,正确的是________。
A、int N=10;
B、#define N 10
int x[N]; int x[N];
C、int x[0..10];
D、int x[];
(  D  )
3、下面程序的输出结果是 __________.
#include<stdio.h>
void main()
{
int a=-1, b=4, k;
k=(++a<=0)&&(b--<=0);
printf("%d,%d,%d\n",k,a,b);
}
A、1,1,2
B、1,0, 3
C、0,1,2
D、0,0,3
(  B  )
4、若有以下定义和语句:int a[10]={1,2,3,4,5,6,7,8,9,10 },*ia=a; 则不能正确表示a数组元素的表达式是 ______。
A、*ia
B、a[10]
C、*a
D、a[ia-a]
(  A  )
5、若有定义语句:int a=3,b=2,c=1; 以下选项中错误的赋值表达式是______。
A、a=(b=4)=3;
B、a=b=c+1;
C、a=(b=4)+c;
D、a=1+(b=c=4);
(  C  )
6、设有定义语句int a []= { 66,77,99 },则下列对此语句的叙述中错误的是________。
A、定义了一个名为a的一维数组
B、a数组有3个元素
C、a数组的元素的下标为1~3
D、数组中的每一个元素都是整型
(  C  )
7、以下关于结构化程序的说法中,正确的是________。
A、结构化程序由单入口、单出口和循环3种结构组成
B、结构化程序由顺序、单入口和单出口3种结构组成
C、结构化程序由顺序、循环和GOTO语句结构组成
D、结构化由顺序、循环、循环和分支3种结构组成
(  B  )
8、在结构化程序设计中,限制使用goto语句的原因是________。
A、提高程序的执行效率
B、提高程序的清晰性和可靠性
C、便于程序的合成
D、该语句对任何结构的程序都不适用
(  C  )
9、以下叙述正确的是________。
A、在C语言程序中,main函数必须位于程序的最前面
B、C语言程序的每行中只能写一条语句
C、C语言本身没有输入输出语句
D、在对一个C语言程序进行编译的过程,可发现注释中的拼写错误
(  A  )
10、下列四个不同数制表示的数中,数值最大的是________。
A、二进制数11011101
B、八进制数334
C、十进制数219
D、十六进制数DA
(  C  )
11、下述语句中,_____中的if语句语法是错误的。 ( )
A、if(x>y);
B、if(x==y)x+=y;
C、if(x!=y)seanf("%d",&x)else scanf("%d",&y);
D、if(x<y)x++;y++;
(  C  )
12、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是________。
#include<stdio.h>
main()
{
char sl[]="chinese",s2[]="japnese";
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++) if(s1[i]=s2[i]&&i<7) ____________________;
}
A、putchar(s2;putchar(
B、puts(s1,
C、printf("%c%d\n",s2,
D、printf("%c",s1);printf("%d\n",
(  B  )
13、语句:printf("%d\n",12&012);
的输出结果是________。
A、12
B、8
C、6
D、012
(  B  )
14、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  C  )
15、有以下程序段:
int x=3;
do
{
printf(”%3d”,x-=2);
}
while(!(--x));
程序段的输出结果是________。
A、1
B、3 0
C、1-2
D、死循环
(  D  )
16、下面定义结构变量的语句中错误的是________。
A、struct student{
int num; char name[20];
} s;
B、struct {
int num; char name[20];
} s;
C、struct student{
int num; char name[20];
};
struct student s;
D、struct student{
int num; char name[20];
};
student s;
(  B  )
17、定义file *fp; 则文件指针fp 指向的是________。
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体
(  B  )
18、有以下程序段若要给 c1、c2、c3 分别输入字母a,b,c,则以下对输入形式的描述正确的是________。
A、字母A,B,C 之间可以用空格分隔
B、字母A,B,C 之间不能有分隔符
C、字母A,B,C 之间可以用回车符分隔
D、字母A,B,C 之间可以用 Tab 键分隔
(  D  )
19、若有代数式|x3+lgx|,则正确的c 语言表达式是________。
A、fabs(x*3+log 10(x))
B、abs(pow(x,3)+log10(x))
C、abs(pow(x,3)0)+log10(x))
D、fabs(pow(x,3)0)+log 10(x))
(  C  )
20、以下叙述中正确的是()。
A、在程序的一行上可以出现多个有效的预处理命令行
B、使用带参的宏时,参数的类型应与宏定义时的一致
C、宏替换不占用运行时间,只占编译时间
D、在以下定义中 C R 是称为"宏名"的标识符 #define C R 045

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

(   T  )
1、c 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .exe 的文件。 ( ) 
(   F  )
2、在循环过程中,使用break语句和continue语句的作用是一样的 
(   F  )
3、在c程序中,abc与ABC是两个相同的变量。 
(   T  )
4、对于一个具体的函数来说,实参与形参必须一一对应。 
(   T  )
5、当字符数组中的初值个数小于数组长度时,没有赋值的元素会默认赋值为空字符。() 
(   T  )
6、变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。 
(   T  )
7、在switch 语句中, case 后可不加" {}"。 
(   F  )
8、数组名是一个指针,它可以指向数组中的任何元素。( ) 
(   F  )
9、c语言中允许嵌套定义函数。 
(   T  )
10、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。 

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

1、在c语言中,一个函数一般由两个部分组成,它们是________和________。
2、语句主要是实现次数循环结构,while语句主要是实现当型循环结构。
3、在vc++编译环境下,一个字符型变量所占字节数是________。
4、若a=1,b=2,c=3,d=4, 则表达式a>b?a:c>d?c:d 的值是________。
5、在c 语言中,一个函数一般由两个部分组成,它们是【1】和【2】。

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

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、下面是实现打印九九乘法表的程序,请在画线的位置填上适当的语句,使程序(段)完整。
main()
{
int i , j , k;
for(i=1; ________; i++)
{
for(j=1; ________; j++) printf("%d*%d=%d", ________);
printf("\n");
}
}
3、以下程序可求出所有的水仙花数。(水仙花数是三位正数, 其各位数字的立方和等于该正数,如: 407=4*4*4+0*0*0+7*7*7)main()
{
int x,y,z,a[8],m,i=0;
printf("the special numbers are :\n");
for (【1】________;m++)
{
x=m/100;
y=【2】________;
z=m%10;
if (m==x*x*x+y*y*y+z*z*z)
{
【3】________;
i++;
}
}
for (x=0;x<i;x++)printf(%6d",a[x]);
}
4、有以下程序,程序执行后,输出结果是 ________ 。
#include <stdio.h>
void fun(int *a)
{
a[0]=a[1];
}
main()
{
int a[10]={10,9,8,7,6,5,4,3,2,1},i;
for(i=2;i>=0;i-- )fun(&a[i]);
for(i=0;i<10;i++) printf("%d",a[i]);
printf("\n");
}

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

1、题⽬描述
有10个学⽣,每个学⽣的数据包括学号、姓名、3门课程的成绩。读⼊这10个学⽣的数据,要求输出3门课程的总平均成绩,以及个⼈平均分最⾼的学⽣的数据(包括学号、姓名、3门课程成绩、平均分数)。
输⼊
共有10⾏,每⾏包含了⼀个学⽣的学号(整数)、名字(长度不超过19的⽆空格字符串)和3门课程的成绩(0⾄100之间的整数),⽤空格隔开。
输出
第⼀⾏包含了3个实数,分别表⽰3门课程的总平均成绩,保留2位⼩数,每个数之后输出⼀个空格。
第⼆⾏输出个⼈平均分最⾼的学⽣的数据,与输⼊数据格式相同。如果有多位个⼈平均分最⾼的学⽣,输出按照输⼊顺序第⼀个最⾼分的学⽣数据。
请注意⾏尾输出换⾏。
样例输⼊
样例输出
85.60 87.90 90.40
105 EEE 92 93 94
2、古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。
相关标签:
  • C语言
  • 西安工程大学
  • 专升本