南京工程学院2022年C语言程序设计期末模拟考试

本试卷为南京工程学院2022年C语言程序设计期末模拟考试,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计期末模拟考试

一、单项选择题 (共50题,每题2分,共计100分)

(  C  )
1、#define能作简单的替代,用宏来替代计算多项式5*X*x 4-5*x+5的值的函数f,正确的宏定义语句为( )。
A、#define f(x) 5*x*x+5*X+5
B、#define f5*x*x+5*x+5
C、#define f(a) (5*a”a+5*a+5)
D、#define(5*x*x+5+x+5) f(x)
(  B  )
2、若有以下语句:
typedef struct s
{
int g;
char h;
} t;
以下叙述中正确的是________。
A、可用S定义结构体变量
B、可用T定义结构体变量
C、S是struct类型的变量
D、T是struct S类型的变量
(  C  )
3、若已定义:int a[9], *p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( )。
A、p+1
B、a+1
C、a++
D、++p
(  D  )
4、执行下面的程序后,a的值为________。
main()
{
int a,b;
for(a=1,b=1;a<=10;a++)
{
if(b%3==l)
{
b+=3;
continue;
}
b-=5;
}
}
A、7
B、8
C、9
D、10
(  C  )
5、下列程序的输出结果是________。
void fun(int*x,int y)
{
printf("%d%d",*x,*y);
*x=3;
*y=1;
}
main()
{
int x=1,y=2;
fun(&y,&x);
printf("%d%d",x,y);
}
A、2 1 4 3
B、1 2 1 2
C、1 2 3 4
D、2 1 1 2
(  A  )
6、有下列程序:
main()
{
int x=0;
int y=0;
while(x<7 &&++v)
{
y--;
x++;
}
printf("%d,%d",y,x);
}
程序的输出结果是________。
A、0,7
B、7,7
C、0,6
D、1,6
(  A  )
7、下列字符串是标识符的是________。
A、aa
B、a-class
C、int
D、LINE 1
(  C  )
8、有以下程序:
#include <stdio.h>
main()
{
char a,b,c;
b='l';
c='a';
for(a=0;a <6;a++)
{
if(a%2)putchar(b+a);
else putchar(c+a);
}
}
程序运行后的输出结果是________。
A、1B3D5F
B、ABCDEF
C、A2C4E6
D、123456
(  D  )
9、若有如下定义语句: int a[10]= { 1,2,3,4,5,6,7,8,9,10 } ; 则对数组正确的引用是________。
A、a[10]
B、a[a[3]5]
C、a[a[9]]
D、a[a[4]+4]
(  C  )
10、下述对c语言字符数组的描述中错误的是________。
A、字符数组可以存放字符串.
B、字符数组中的字符串可以整体输入、输出.
C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值.
D、不可以用关系运算符对字符数组中的字符串进行比较.
(  C  )
11、以下不能对二维数组a进行正确初始化的语句是________。
A、int a[2][3]={0};
B、int a[][3]={{1,2},{0}};
C、int a[2][3]={{1,2},{3,4},{5,6}};
D、int a[][3] = {1,2,3,4,5,6}
(  D  )
12、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
A、p=1;
B、*q=2;
C、q=p;
D、*p=5;
(  A  )
13、有以下程序 struc stu
{
char name[10];
int num;
};
void f1(struct stu c)
{
struct stu b={"lisiguo",2042};
c=b;
}
void f2(struct stu *c)
{
struct stu b={"sundan",2044} ;
*c=b;
}
main( )
{
struct stu a={"yangsan",2041},b={"wangyin",2043} ;
f1(a);
f2(&b);
printf("%d %d\n",a.num,b.num);
}
执行后的输出结果是________。
A、2041 2044
B、2041 2043
C、2042 2044
D、2042 2043
(  B  )
14、以下选项中不能正确把cl定义成结构体变量的是________。
A、typedef struct
{
int red;
int green;
int blue;
} COLOR;
COLOR cl;
B、struct color cl
{
int red;
int green;
int blue;
};
C、struct color
{
int red;
int green;
int blue;
} cl;
D、struct
{
int red;
int green;
int blue;
} cl;
(  A  )
15、以下不能正确进行字符串赋初值的语句是________。
A、char str[5]="good!";
B、char str[]="good!";
C、char *str="good!";
D、char str[5]={‘g',‘o',‘o',‘d'};
(  D  )
16、若有以下定义和语句: double r=99 , *p=&r ; *p=r ; 则以下正确的叙述是______。
A、以下两处的 *p 含义相同,都说明给指针变量 p 赋值
B、在 "double r=99,*p=&r ; " 中,把 r 的地址赋值给了 p 所指的存储单元
C、语句 "*p=r ; " 把变量 r 的值赋给指针变量 p
D、语句 "*p=r ; " 取变量 r 的值放回 r 中
(  D  )
17、以下循环体的执行次数是 _________
#include<stdio.h>
void main( )
{
int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);
}
A、3
B、2
C、1
D、0
(  A  )
18、对于 c 语言的函数,下列叙述中正确的是 ______ __.
A、函数的定义不能嵌套,但函数调用可以嵌套
B、函数的定义可以嵌套,但函数调用不能嵌套
C、函数的定义和调用都不能嵌套
D、函数的定义和调用都可以嵌套
(  B  )
19、下列选项中均属于c语言合法的标识符是________。
A、Int
#sub
break
B、_3ab
FOR
Long
C、3a
printf
a_b
D、WORD
auto
include
(  C  )
20、在下列字符中,其ascii码值最大的是______。
A、9
B、Z
C、d
D、X
(  A  )
21、下面关于形参与实参的说法,正确的是________。
A、形参与实参的个数、类型、顺序都应一一对应
B、形参与实参的个数可以不必相同,少一个多一个程序一样执行
C、形参与实参的类型可以不同,不影响运算结果
D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可
(  A  )
22、下列关于宏操作的叙述错误的是________。
A、do-while的循环体至少无条件执行一次
B、while的循环控制条件比do-while的循环控制条件更严格
C、do-while允许从外部转到循环体内
D、do-while的循环体不能是复合语句
(  D  )
23、下列函数原型声明中错误的是________。
A、void Fun(int x=0,int y=0);
B、void Fun(int x,int y);
C、void Fun(int x,int y=0);
D、void Fun(int x=0,int y);
(  C  )
24、下列各项关于变量的描述中正确的是________。
A、变量名不是标识符
B、变量名的字符是不区分大小写的
C、变量名的定义必须符合标识符的定义规则
D、变量属性分为基本类型和复合类型
(  A  )
25、数据和程序以______进制代码形式存放在存储器中。
A、二
B、八
C、十
D、十六
(  D  )
26、已知int x=(1,2,3,4); 变量x的值是________。
A、1
B、2
C、3
D、4
(  C  )
27、以下叙述中错误的是________。
A、局部变量的定义可以在函数体和复合语句的内部
B、全局变量的定义可以在函数以外的任何部位
C、同一程序内局部变量和全局变量不允许同名
D、函数的形参属于局部变量
(  B  )
28、下列叙述中正确的是________。
A、在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式
B、实型变量中允许存放整型数
C、若a和b类型相同,在执行了赋值a=b后,b中的值将放入a中,但b中的值不变
D、在c程序中,求余运算符“%”两边的类型相同时才能进行运算
(  D  )
29、下列关于boolean类型的叙述中,正确的是________。
A、可以将boolean类型的数值转换为int类型的数值
B、可以将boolean类型的数值转换为字符串
C、可以将boolean类型的数值转换为char类型的数值
D、不能将boolean类型的数值转换为其他基本数据类型
(  C  )
30、有以下程序
main()
{
int i=1,j=1,k=2;
if((j++‖k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是________。
A、1,1,2
B、2,2,1
C、2,2,2
D、2,2,3
(  A  )
31、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  A  )
32、设有数组定义:char array[]="china"; 则数组array所占的空间为________。
A、6字节
B、5字节
C、4字节
D、7字节
(  B  )
33、下列程序的输出结果是
#include<stdio.h>
main()
{
int i,a=0,b=0;
for(i=1;i<10;i++)
{
if(i%2==0)
{
a++;
continue;
}
b++;
}
printf("a=%d,b=%d",a,b);
}
A、a=4,b=4
B、a=4,b=5
C、a=5,b=4
D、a=5,b=5
(  A  )
34、以下选项中,不能正确赋值的是 ______。
A、char s1[10];s1="chest";
B、char s2[]='C','t','e','s','t';
C、char s3 [20]="Chest";
D、char * s4="Cest\n"
(  A  )
35、有以下程序:
main()
{
int a=3,b=4,c=5,d=2;
if(a>b) if(b>c) printf("%d",d+++ 1);
else printf("%d",++d+1);
printf("%d\n",d);
}
程序运行后的输出结果是 ______。
A、2
B、3
C、43
D、44
(  C  )
36、请读程序:
#include <stdio.h>
func(int a, int b) {
int c;
c=a+b;
return c;
}
main()
{
int x=6,y=7,z=8,r;
r=func((x--,y++,x+y),z--);
printf("%d\n",r);
}
上面程序的输出结果是________。
A、11
B、20
C、21
D、31
(  D  )
37、在文件系统中若采用一级目录结构,存在的最主要的一个问题是______。
A、目录表的大小难以确定
B、磁盘容量大时,文件检索太慢
C、用户使用不方便
D、“重名”问题,即文件命名冲突
(  D  )
38、下列二维数组的说明中,不正确的是________。
A、float a[][4]=0,1,8,5,9;
B、int a[3][4]
C、#define N 5
float a[N][3]
D、int a[2][9.5];
(  D  )
39、以下能正确定义数组并正确赋初值的选项是______。
A、int N=5,a[N][N];
B、int b[1][2]={{1},{2}};
C、int c[2][]={{1,2},{3,4}};
D、int d[3][2]={{1,2},{3,4}};
(  D  )
40、下面叙述正确的是________。
A、只要是简单算法,它的操作步骤都不会超过 20 步
B、任何算法需要包含三种基本结构中的两种以上
C、复杂算法是不能用三种基本结构来表达的
D、C 语言程序的语句经过编译和链接转换成二进制机器指令后才能执行
(  D  )
41、有如下程序
main( )
{
int a[3][3]={{1,2,3},{3,4,5},{5,6,7}}, i,j,s = 0;
for(i=0; i<3; i++)for(j=0; j<=i; j++) s+=a[i][j]];
printf("%d\n",s);
}
该程序的输出结果是______。
A、18
B、19
C、36
D、26
(  D  )
42、有以下程序
#include <stdio.h>
main()
{
file *fp;
int i,k,n;
fp=fopen("data.dat","w+");
for(i=1;i<6;i++)
{
fprintf(fp,"%d ",i);
if(i%3==0) fprintf(fp,"\n");
}
rewind(fp);
fscanf(fp,"%d%d",&k,&n);
printf("%d %d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是______。
A、0 0
B、123 45
C、1 4
D、1 2
(  C  )
43、已知int i, a;
 执行语句i=(a=2*3,a*5),a+6;
后,变量i的值是________。
A、6
B、12
C、30
D、36
(  A  )
44、表达式8>6>3值是________。
A、0
B、1
C、3
D、表达式语法错
(  A  )
45、若运行下面程序时,给变量a输入15,则输出结果是________。
A、5
B、25
C、15
D、10
(  B  )
46、关于c语言,下列说法正确的是________。
A、程序就是算法
B、一个变量只能定义为一种数据类型
C、一个变量只能存储一个字符
D、若a和b类型相间,执行a=b;后,b中数值将丢失
(  C  )
47、在c语言中,只有在使用时才占用内存单元的变量,其存储类型是________。
A、auto和static
B、extern和register
C、auto和register
D、static和register
(  C  )
48、若有下列定义,则对a数组元素的正确引用是________。 int a[5],*p=a;
A、*(p+5)
B、*p+2
C、*(a+2)
D、*&a[5]
(  A  )
49、以下正确的字符串常量是________。
A、"\\"
B、'abc'
C、OlympicGames
D、'A'
(  D  )
50、若int a=3, 则执行完表达式a-=a+=a*a 后,a 的值是________。
A、-15
B、-9
C、-3
D、0