辽宁中医药大学2022年C语言期末题库

本试卷为辽宁中医药大学2022年C语言期末题库,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言期末题库

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

(  D  )
1、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
A、k%2
B、k%2==1
C、(k%2)!=0
D、!k%2==1
(  D  )
2、下列程序的输出结果是________。
char *p1="abcd", *p2="abcd", str[50]="xyz"; strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A、xyabcAB
B、abcABz
C、ABabcz
D、xycdBCD
(  B  )
3、已知char x[]="hello", y[]={ 'h','e','a','b','e' }; 则关于两个数组长度的正确描述是________。
A、相同
B、x大于y
C、x小于y
D、以上答案都不对
(  A  )
4、以下叙述中正确的是______。
A、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B、一条语句只能定义一个数组
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  C  )
5、设x、y、z、t均为int型变量,则执行以下语句后,t的值是________。
x=y=z=l; t=++ x | | ++ y && ++ z;
A、不定值
B、2
C、1
D、0
(  B  )
6、一个int型变量,在程序中多次频繁使用,最好定义它为________。
A、auto
B、register
C、static
D、extern
(  A  )
7、下列哪个是c语言的有效标识符
A、_Nol
B、No.1
C、12345
D、int
(  A  )
8、若要对a进行++运算,则a应具有下面说明
A、int a[3][2];
B、char*a[]"12","ab";
C、char(*a)[3];
D、int b[10],*a=b;
(  D  )
9、有以下程序:
#include <stdio.h>
main()
{
int x=1, y=0;
if(!x)y++;
else if(x==0) if(x)y+=2;
else y+=3;
printf("%d\n", y);
}
程序运行后的输出结果是______。
A、3
B、2
C、1
D、0
(  D  )
10、下列有关格式输入函数scanf的叙述中正确的是________。
A、输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”
B、可以只有格式控制项,没有地址列表项
C、在输入数据时,必须规定精度。如scanf("%4.2f",&d);
D、当输入数据时,必须指明变量地址
(  B  )
11、下列关于字符串的说法中错误的是________。
A、在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志
B、'\0'作为标志占用存储空间,计入串的实际长度
C、在表示字符串常量的时候不需要人为在其末尾加入'\0'
D、在C语言中,字符串常量隐含处理成以'\0'结尾
(  B  )
12、有如下程序段int *p,a=5,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、5
B、6
C、7
D、编译出错
(  B  )
13、有如下程序
#define N 3
#define M N+2
#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
}
该程序中的for循环执行的次数是______。
A、5
B、9
C、7
D、8
(  D  )
14、有以下程序
#include <stdio.h>
main()
{
struct stu
{
char name[9];
char sex;
double score[2];
}
;
struct stu a={"zhao",'m',85.0,90.0},b={"qian",'f',95.0,92.0};
b=a;
printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);
}
程序的运行结果是______。
A、Qian,f,95,92
B、Qian,m,85,90
C、Zhao,f,95,92
D、Zhao,m,85,90
(  C  )
15、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
A、scanf("%s", pup[0].name);
B、scanf("%d", &pup[0].age);
C、scanf("%d", p->age);
D、scanf("%d", &(p->sex));
(  B  )
16、程序必须在有限的步骤、有限的时间内执行完毕,指的是算法的( )特点
A、确定性
B、有穷性
C、可行性
D、输入
(  B  )
17、下列运算符中,优先级最低的是________。
A、*
B、=
C、==
D、%
(  B  )
18、有如下程序
#define N 3
#define M N+1#define NUM 2*M+1
main()
{
int i;
for(i=1;i<=NUM;i++)printf("%d\n",i);
}
该程序中的for循环执行的次数是______。
A、5
B、8
C、7
D、6
(  C  )
19、经下列语句定义后,sizeof(x),sizeof(y),sizeof(a),sizeof(b)在 微机上的值分别为________。
char x=65;
float y=7.3;
int a=100;
double b=4.5;
A、2,2,2,4
B、1,2,2,4
C、1,4,4,8
D、2,4,2,8
(  D  )
20、以下程序段中,变量 c 的二进制值是________ char a=2,b=4,c;
c=a+b<<2;
A、00000011
B、00010100
C、00011100
D、00011000

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

(   T  )
1、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用
{
}
括起来组成一个复合语句。 
(   F  )
2、函数的形参都属于全局变量。 
(   T  )
3、一个源程序可使用多个文件包含命令,但一个文件包含命令只能包含一个文件。 
(   T  )
4、无论哪种循环语句,都必须给出循环结束条件。 
(   T  )
5、定义二维数组时,如果对全部元素赋初值,则可以省略行数。 
(   F  )
6、已有定义:char a[]="xyz",b[]={'x','y','z'};则数组a 和b 的长度相同 
(   F  )
7、定义char *string= "string? "是将字符串的值赋给指针变量string 。 
(   F  )
8、当函数的实参与形参同名时,它们将共占内存单元。 ( ) 
(   T  )
9、c语言函数默认的返回值类型是 int 。( ) 
(   F  )
10、C 语言是一种非结构化程序设计语言。 

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

1、c语言中与指针有关的两个运算符是&与________。
2、设a=5,b=2,则表达式"!a+b"的值是________。
3、已知"float a=3.5;int b=12;",则算术表达式"(int)(a+b/5)"的值是________。
4、结构化程序三种结构为________。
5、函数swap(arr,n) 可完成对arr 数组从第一个元素到第n 个元素两两交换。在运行调用函数中的如下语句后, a[0]和a[1]的值分别为【1】________,原因是【2】________。a[0]=1,a[1]=2;
swap(a,2);

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

1、以下程序中给指针p分配三个double型动态内存单元,请填空。
#include <stdlib.h>
main ( )
{
double *p;
p=(double *) malloc( ________);
p[0]=1.5;
p[1]=2.5;
p[2]=3.5;
printf("%f%f%f\n",p[0],p[1],p[2]);
}
2、程序的结果是:
#include<stdio.h>
void main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
printf("x=%d",x);
}
3、以下程序运行的结果为()
#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);
}
4、下面程序的运行结果是________。
main()
{
int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)printf("%5d",b[i][j]);
printf("\n");
}
}

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

1、编写程序:求100之内的素数。
2、给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0
输出样例:
25.00, Programming in Delphi
18.50, Programming in VB
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。