南京工程学院C语言程序设计期末题目

本试卷为南京工程学院C语言程序设计期末题目,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计期末题目

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

(  D  )
1、下列叙述中正确的是________。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言的函数可以嵌套调用
(  C  )
2、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
A、another
number
B、another
number
another
C、another
number
number
D、number
number
(  A  )
3、以下程序的执行结果是 __________.
#include <stdio.h>
void main( )
{
int a,b,c,d,x;
a=c=0;
b=1;
d=20;
if (a) d=d-10;
else if(!b) if (!c) x=15;
else x=25;
printf("d=%d\n",d);
}
A、d=20
B、d= 10
C、d=15
D、25
(  B  )
4、下列一组初始化语句中,正确的是 __________.
A、int a[8]={ };
B、int a[9]={
0,7,0,4,8};
C、int a[5]={
9,5,7,4,0,2};
D、int a[7]=7*6;
(  B  )
5、以下函数调用语句中含有实参个数为 __________. func((exp1,exp2),(exp3,exp4,exp5));
A、1 个
B、2 个
C、4 个
D、5 个
(  D  )
6、下面对二维数组array的定义,正确的是________。
A、int array[][4];
B、char array[3,4];
C、float array(3)(4);
D、float array[3][4];
(  C  )
7、以下不正确的是 ______。
A、语句for(i=0:;i++)表示无限循环
B、for(; ;)表示无限循环
C、for()也表示无限循环
D、while(1)表示无限循环
(  B  )
8、如果一个表达式包含算术运算、关系运算、逻辑运算和字符运算时,运算的先后顺序是________。
A、算术运算→关系运算→逻辑运算→字符运算
B、算术运算→字符运算→关系运算→逻辑运算
C、逻辑运算→关系运算→算术运算→字符运算
D、字符运算→算术运算→逻辑运算→关系运算
(  B  )
9、在下列的标识符中,错误的是________。
A、$_123
B、1xyz
C、$1_abc
D、abc_$123
(  C  )
10、设有以下语句:
typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。
A、可以用TT定义结构体变量
B、TT是struct类型的变量
C、可以用CIN定义结构体变量
D、CIN是struct TT类型的变量
(  D  )
11、有以下程序:
#include<stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%5)==0)break;
else i--;
}
i+=13,a+=i;
}
printf("%d\n",a);
}
程序的输出结果是________。
A、62
B、63
C、23
D、36
(  C  )
12、以下程序的输出结果是
#include<stdio.h>
struct st
{
int x;
int *y;
}
*p;
int dt[4]= {10,20,30,40 };
struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
main()
{
p=aa;
printf("%d\n",++(p->x));
}
A、10
B、11
C、51
D、60
(  C  )
13、下面程序段的运行结果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;
A、LANGUAGE
B、language
C、LAN
D、langUAGE
(  D  )
14、下列字符常量的写法中,正确的是________。
A、'abc'
B、'\5A'
C、A
D、'\73'
(  A  )
15、下面程序的输出结果是_______。
f1(int x)
{
int y;
y=x+x;
return(y);
}
f2(int a ,int b)
{
int z;
z=f1(a*b);
return(z);
}
main( )
{
int a=2,b=5,c;
c=f2(a,b);
printf("%d",c);
}
A、20
B、7
C、4
D、10
(  D  )
16、下列叙述中正确的是______。
A、C语言中既有逻辑类型也有集合类型
B、C语言中没有逻辑类型但有集合类型
C、C语言中有逻辑类型但没有集合类型
D、C语言中既没有逻辑类型也没有集合类型
(  D  )
17、与二进制数100101等值的十进制数是________。
A、34
B、35
C、36
D、37
(  B  )
18、流程图中,输入/输出框用( )图形表示?
A、圆角矩形
B、平行四边形
C、矩形
D、菱形
(  A  )
19、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长度小于6,则输出按方式 ________。
A、从左起输出该字符串,右补空格
B、从右起输出该字符串,左补空格
C、0
D、输出错误信息
(  A  )
20、下面说法正确的是________。
A、char *x,y,**str 同时定义了三个变量,符合语法规范
B、数组说明符的一对方括号中只能使用常量数值
C、单精度浮点值也可以作为数组下标
D、若有定义 float arr[2]则 printf("%2.1f", array[0.5])是合法的语句

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

(   F  )
1、c程序函数体是由左右方括号[ ]括起来的部分。 
(   T  )
2、用scanf()函数输入实型数时,可以指定宽度,但不能规定精度。 
(   F  )
3、当一个c语言程序由多个文件模块组成时,整个程序可以包含多个main()函数。 
(   T  )
4、c 语言允许用字符串的方式对数组作初始化赋值。 
(   F  )
5、数组的下标从1开始。 
(   F  )
6、putchar 函数可以向终端输出一个字符串 
(   F  )
7、在switch 语句中必须使用break 语句 
(   T  )
8、do-while 语句构成的循环至少执行一次 
(   T  )
9、当说明一个共用体变量时系统分配给它的内存是最长的成员的长度 
(   F  )
10、内部静态类变量的作用域和寿命与自动类变量的相同。 

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

1、逻辑运算符"&&、||、 !"中的优先级是________。
2、设有如下的类型说明: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
*(p+5)=_____。
3、C 语言中,一个函数一般由两个部分组成,它们是______和函数体。
4、结构化设计中的三种基本结构是 顺序,选择,_____。
5、在C语言中的实型变量分为两种类型,它们是 ___和浮点型。

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

1、有以下程序
main( )
{
int n=0,m=1,x=2;
if(!n) x-=1;
if(m) x-=2;
if(x) x-=3;
printf("%d\n",x);
}
执行后输出结果是 ________。
2、已知t=5,则表达式"t-=t+=3"的值是______。
3、下列程序段的运行结果是________。
main()
{
int m=1,t=1;
for( ; ; )
{
m=m+t ;
t++;
if(m>9) break ;
}
printf("%d\n",m);
}
4、程序运行结果是________。
void swap(int a[2])
{
int t;
t=a[0];
a[0]=a[1];
a[1]=t;
}
void main()
{
int x[2]={5,8};
swap(x);
printf("x[0]=%d,x[1]=%d\n",x[0],x[1]);
}

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

1、编写程序:计算sum=1-1/3+1/5-1/7+…+1/19
2、编写程序:用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
#include<stdio.h>
void main()
{
char c1, c2;
printf("请输入两个字符给c1和c2:\n");
_________________________________
_________________________________
printf("用putchar函数输出结果为:\n") ;
_________________________________
_________________________________
printf("\n用printf函数输出结果为:\n") ;
_________________________________
}
3、题⽬描述
万⾥⼗佳歌⼿⽐赛终于开始了,评委席坐了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