天津理工大学C语言程序设计期末

本试卷为天津理工大学C语言程序设计期末,题目包括:单项选择题,填空题,编程题。

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

C语言程序设计期末

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

(  B  )
1、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是________。
A、a[0][4]
B、a[l][3]
C、a[0][3]
D、a[1][4]
(  C  )
2、有下列程序: int fun1(double a)
{
return a*=a;
}
int fun2(double x,double y)
{
double a=0,b=0;
a=fun1(x);
b=fun1(y);
return(int)(a+b);
}
main()
{
double w;
w=fun2(1.1,2.0),……
}
程序执行后变量w中的值是________。 、
A、5.21
B、5
C、5.0
D、0.0
(  D  )
3、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下划线处应填写的是________。
#define N 5
void fun(int x[N])
{
int m;
for(m=N-t;m>=O;m-)scanf("%d",________);
}
A、%&X[++m]
B、&x[m+1]
C、x+(m++)
D、x+m
(  A  )
4、在c语言中,存储一个字符型、整型、单精度实型变量所需的空间是________。型、单精度实型变量所需的空间是________。
A、1、2、4
B、1、1、4
C、1、2、8
D、2、2、8
(  A  )
5、以下程序的输出结果是
main()
{
int a=0,i;
for(i=;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=2;
case 1: case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
A、31
B、13
C、10
D、20
(  C  )
6、以下说法中正确的是________。
A、#define和printf都是C语句
B、#define是C语句,而printf不是________。
C、printf是C语句,但#define不是________。
D、#define和printf都不是C语句
(  D  )
7、若有以下说明和语句: int c[4][5],(*p)[5]; p=c; 能够正确引用c数组元素的是________。
A、p+l
B、*(p+3)
C、*(p+1)+3
D、*(p[0]+2)
(  B  )
8、定义如下一维数组:int a[5],*p; 则下列描述错误的是________。
A、表达式p=p+l是合法的
B、表达式a=a+l是合法的
C、表达式p-a是合法的
D、表达式a+2是合法的
(  C  )
9、以下对结构体类型变量的定义中,不正确的是________。
A、typedef struct aa {
int n;
float m;
} AA;
AA tdl;
B、#define AA struct aa AA{
int n;
float m;
} tdl;
C、struct {
int n;
float m;
} aa;
struct aa tdl;
D、struct {
int n;
float m,
} tdl;
(  A  )
10、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  D  )
11、有以下程序:
voidf(int *x,int * y)
{
int t;
t= *x;
*x= *y;
*y=t;
}
main()
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;
q=&a[7];
while(p)
{
f(p,q);
p++;
q--;
}
for(i=0;i<8;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是______;
A、8,2,3,4,5,6,7,1,
B、5,6,7,8,1,2,3,4,
C、1,2,3,4,5,6,7,8,
D、8,7,6,5,4,3,2,1,
(  D  )
12、有以下程序
#include<stdio.h>
main ()
{
int i, n;
for (i = 0; i < 8; i++)
{
n = rand () % 5;
switch (n)
{
case 1:
case 3:
printf ("%d\n", n);
break;
case 2:
case 4:
printf ("%d\n", n);
continue;
case 0:
exit (0);
}
printf ("%d\n", n);
}
}
以下关于程序执行情况的叙述,正确的是______。
A、for循环语句固定执行8次
B、当产生的随机数n为4时结束循环操作
C、当产生的随机数n为1和2时不做任何操作
D、当产生的随机数n为0时结束程序运行
(  A  )
13、执行下面程序中的输出语句后,a的值是________。
#include <stdio.h>
main()
{
int a;
printf("%d\n",(a=3*5,a*4));
}
A、15
B、20
C、10
D、60
(  C  )
14、以下叙述中不正确的是________。
A、预处理命令行都必须以撑号开始,结尾不加分号
B、在程序中凡是以#号开始的语句行都是预处理命令行
C、C程序在执行过程中对预处理命令进行处理
D、预处理命令可以放在程序中的任何位置
(  B  )
15、设ch是char型变量,其值为c,且有下面的表达式ch=(ch>='a'&&ch<='z')?(ch+32):ch上面表达式的值是______。
A、C
B、c
C、Z
D、z
(  A  )
16、有以下程序
struct stu
{
char num[10];
float score[3];
}
;
main( )
{
struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
int i;
float sum=0;
p=s+1;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%.3f\n",sum);
}
程序运行后的输出结果是___________。
A、250.000
B、250
C、270.000
D、270
(  A  )
17、以下选项中哪些描述是不正确的?
A、循环语句必须要有终止条件否则不能编译
B、break关键字用于跳出当前循环
C、continue用于终止本次循环,执行下一次循环
D、switch条件语句中可以使用break
(  A  )
18、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
A、可以是任意合法的表达式
B、只能是整数 0 或非 0 整数
C、可以是结构体类型的数据
D、只能是整数 0 或 1
(  B  )
19、以下程序的输出结果为________。
main()
{
int a=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
int func(int x,int y)
{
return(x+y);
}
A、15
B、13
C、9
D、函数调用出错
(  B  )
20、如果int a=2,b=3,c=0,下列描述正确的是________。
A、a>b!=c和a>(b!=c)的执行顺序是一样的
B、!a!=(b!=c)表达式的值为1
C、a||(b=c)执行后b的值为0
D、a&&b>c的结果为假

二、填空题 (共10题,每题2分,共计20分)

1、c语言本身不提供输入输出语句,输入和输出操作是由________来实现的。
2、#include <stdio.h>
void main()
{
int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;
for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1];
printf("%d\n",s);
}
3、字符串函数________用于从指定的磁盘文件中读出一个字符串。
4、实参与形参占用独立的(   )
5、若int a=5,b=4,c=2; 表达式a>b!=c 的值是________。
6、下列程序段的运行结果是________。
#define add(x , y) x+y
main()
{
int a , b , s;
A=5, b=6;
S=add(a,b);
printf("s=%d\n" , s);
}
7、以下程序运行的结果为()
#include <stdio.h>
int d = 1;
fun(int p)
{
int d = 5;
d += p++;
printf( "%d,", d);
}
void main()
{
int a = 3;
fun(a);
d += a++;
printf( "%d\n", d);
}
8、结构化程序三种结构为________。
9、C语言提供的三种逻辑运算符是______。
10、若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是______

三、编程题 (共3题,每题0分,共计40分)

1、编写函数
void del(char *s,char c),其功能是在 s 所指字符串中删除与变量 c 相同的 字符,并设计主函数实现: (1)从键盘输入字符串和指定被删除的字符;
(2)调用 del()函数实现删除操作;
(3)输出删除后的字符串。 说明:不允许使用除 gets和 puts之外的任何字符串处理库函数。
2、编写程序:用结构体数组,学生信息由学号、姓名,成绩组成,
数据如下:201513135157 张三 90
1)使用结构体数组,将学生的数据按成绩从高到低排序显示到屏幕上
2)将学生中不及格学生的姓名显示出来
3)写一个函数,获取成绩低于平均分的学生记录并返回低于平均分的学生人数
3、要求输出国际象棋棋盘。