函数中未指定存储类别
㈠ 下半年计算机二级c语言基础试题
下半年计算机二级c语言基础试题
任何设计活动都是在各种约束条件和相互矛盾的需求之间寻求一种平衡,程序设计也不例外。下面是我收集的关于计算机二级c语言基础试题,希望大家认真阅读!
下半年计算机二级c语言基础试题1
一、选择:
1.给出以下定义:
char acX[ ]= "abcdefg";
char acY[ ]= {'a','b','c','d','e','f','g'};
则正确的叙述为( )
A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同
C) 数组acX的长度大于数组acY的长度 D) 数组acX的长度小于数组acY的长度
答案:C
2.
void example(char acHello[])
{
printf("%d", sizeof(acHello));
return;
}
void main()
{
char acHello[] = "hello";
example(acHello);//数组名称作参数,传的是地址,一个地址占四个字节
return;
}
的输出是
A 4 B 5 C 6 D不确定
答案:A
3. 有以下程序段
char acArr[]= "ABCDE";
char *pcPtr;
for(pcPtr = acArr; pcPtr < acArr + 5; pcPtr++)
{
printf("%s/n", pcPtr);
}
return;
输出结果是( )
A) ABCD B) A C) E D) ABCDE
B D BCDE
C C CDE
D B DE
E A E
答案:D
4.在中断中,不能同步获取信号量,但是可以释放信号量。
A.正确 B.错误
答案:A
5.以下叙述中不正确的是( )
A) 在不同的函数中可以使用相同名字的变量
B) 函数中的形式参数是局部变量
C) 在一个函数内定义的变量只在本函数范围内有效
D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)
答案:D
6.设有如下定义:
unsigned long pulArray[] = {6, 7, 8, 9, 10};
unsigned long *pulPtr;
则下列程序段的输出结果为( )
pulPtr = pulArray;
*(pulPtr + 2) += 2;
printf ("%d,%d/n", *pulPtr, *(pulPtr + 2));
A)8,10 B)6,8 C)7,9 D)6,10
答案:D
7. 定义结构体时有下面几种说法,请指出正确的(多选):______
A、结构体中的每个部分,最好进行四字节对齐;
B、结构体的总长度最好是四字节对齐;
C、结构中成员的存放不用考虑字节对齐情况;
答案:A、B
8.void example()
{
int i;
char acNew[20];
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
printf("%d/n", strlen(acNew));
return;
}
的输出为( )
A 0 B 10 C 11 D不确定
答案:D
9.switch(c)中的c的数据类型可以是char、long、float、unsigned、bool. ( )
A. 正确 B. 错误
答案:B
10. 网络上传输的字节序默认是大字节的,如果主机是小字节序,在网络通信时则须进行字节序转换;如果主机是
大字节序,为了程序的一致性及可移植性,最好也在程序中加上字节序转换的操作(空操作)。
A. 正确 B.错误
答案:A
二、 填空题
1、 C语言函数返回类型的默认定义类型是
2、 函数的实参传递到形参有两种方式: 和
3、在一个函数内部调用另一个函数的调用方式称为 。在一个函数内部直接或间接调用该函数成为函数 的调用方式
4、C语言变量按其作用域分为 和
5、凡在函数中未指定存储类别的局部变量,其默认的存储类别为
三、 看程序写结果
1、#include
Int abc(int u,int v);
Void main()
{int a=24,b=16,c;
c=abc(a,b);
printf(“value=%d”,c);
}
Int abc(int u, int v)
{int w;
While(v)
{w=u%v;
u=v;
v=w;
}
Return u;
}
2、#include
int x1=30,x2=40;
main()
{int x3=10,x4=20;
sub(x3,x4);
sub(x2,x1);
printf(“%d,%d,%d,%d ”,x3,x4,x1,x2);
}
sub(int x,int y)
{x1=x;x=y;y=x1;}
3、#include
Main()
{int i=5;
Printf(“%d ”,sub(i));
}
sub(int n)
{int a;
If(n==1) return 1;
a=n+sub(n-1);
return (a);
}
4、#include
Void fun()
{static int m;
m+=2;
printf(“%d ”,m);
}
Main()
{int a;
For(a=1;a<=4;a++) fun();
Printf(“ ”);
}
四、 编程题
1、 编写一个函数,判断任一整数是否为素数,用main()函数调用并测试之。
2、 用递归方法求n!
3、 有一个一维数组,内放10个学生成绩,写一个函数,求出平均分,最高分和最低分
下半年计算机二级c语言基础试题2
1.下列叙述中正确的是( )。
A. 所有数据结构必须有根结点
B. 所有数据结构必须有终端结点(即叶子结点)
C. 只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构
D. 没有根结点或没有叶子结点的数据结构一定是非线性结构
【答案】D
【解析】D项正确,线性结构的特点是:
①集合中必存在“第一个元素"且惟一;
②集合中必存在“最后一个元素”且惟一;
③除最后一个元素外,其他数据元素均有惟一的“后继;
④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。
2. 以下叙述中错误的是( )。
A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件
C. 用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中
D. C语言源程序经编译后生成后缀为.obj的目标程序
【答案】A
【解析】A项错误,注释语句不会被翻译成二进制的'机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。答案选择A选项。
3. C语言主要是借助以下( )功能来实现程序模块化的。
A. 定义函数
B. 定义常量和外部变量
C. 三种基本结构语句
D. 丰富的数据类型
【答案】A
【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。
4. 有以下程序段:
char ch;
int k;
ch='a';
k=12;
print("%c,%d,",h,ch,k);
printf("k=%d ",k);
已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是( )。
A. 因变量类型与格式描述符的类型不匹配输出无定值
B. 输出项与格式描述符个数不符,输出为零值或不定值
C.a,97,12k=12
D. a,97,k=12
【答案】D
【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。
5. 下列叙述中正确的是( )。
A. 栈是“先进先出”的线性表
B. 队列是“先进后出"的线性表
C. 循环队列是非线性结构
D. 有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
【答案】D
【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。
答案选择D选项。
6. 某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为( )。
A. 5
B. 40
C.3
D. 2
【答案】B
【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。
7. 设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是( )。
A. s[0]=m[1];
B. s=m;
C.s.n=m.n;
D. s[2].x=m[2].x;
【答案】A
【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。
8. 关于C语言标识符,以下叙述错误的是( )。
A. 标识符可全部由数字组成
B. 标识符可全部由下划线组成
C. 标识符可全部由小写字母组成
D. 标识符可全部由大写字母组成
【答案】A
【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。
9. 以下程序段中的变量已定义为int类型,则
sum=pAd=5;
pAd=sum++,++pAd,pAd++;
printf("%d ",pAd);
程序段的输出结果是( )。
A. 6
B. 4
C. 5
D. 7
【答案】D
【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum++,sum++是后置自增,执行完后,pAd=5,sum=6。++pAd和pAd++语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。
;㈡ C语言 求帮助
4、不知道,估计是答案错了,因为实际运行结果也是B
11、18、21一起
auto 是局部变量默认,声明有效期在局部变量范围内
extern 表示变量或函数在其它Cpp文件中定义,这里只是使用
static 最主要功能是隐藏(仅对本CPP可见),其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。
register 已无效,在原来计算机中可以把变量放到寄存器而不是内存中
14B 因为用括号括起来了,所以只有括号中最右边的有效
17B 标准库不用重定义但必须包含,函数都是可以重定义的。
22Ac语言的函数调用都是值传递,也就是说函数操作的是实参的副本,所以只能把实参的值传送给形参,形参的值不能传送实参,函数不能嵌套定义,不必须有返回值,可以不在一个文件中,只要声明有这个函数存在就可以调用
㈢ 函数中未指定存储类别的局部变量,其隐含的存储类别为()
函数中未指定存储类别的局部变量,其隐含的存储类别为自动存储类别。
函数中的局部变量,如果不专门声明为static存储类别,都是动态的分配存储空间的,数据存储在动态存储区中。
这类变量叫做自动变量,自动变量可以用关键字auto作为存储类别的声明,实际上关键字auto是可以省略的(一般都是不写的),不写则自动隐含为“自动存储类别“。
(3)函数中未指定存储类别扩展阅读:
默认情况下,在代码块内声明的变量都是自动变量,但亦可用自动变量的关键字auto明确标识存储类;而如若使用register(而非auto)存储类标识代码块内的变量,编译器就会将变量缓存于处理器内的寄存器中,此种情况下不能对该变量或其成员变量使用引用操作符&以获取其地址,因为&只能获取内存空间中的地址。
除此以外,由于寄存器的数量及其所能存储的数据类型受硬件限制而可能无法存储指定变量,编译器可以忽略声明内的register关键字。对于一个未初始化的自动变量来说,在为其赋值之前其值都为undefined(未定义)。
在C++中,如谚语“资源获取即初始化”(Resource
Acquisition
Is
Initialization,常缩写为RAII)所述,自动变量的构造函数在程序运行至声明部分的时候才会被调用,而当程序运行至所给的程序块末端的时候则调用析构函数,这一特性常应用于资源的分配与释放管理,如自动关闭已开启的文件或自动释放空闲内存。
参考资料来源:凤凰网-自动变量
㈣ 大一期末C语言考试的重点是什么
我上点选择题
1、以下不正确的描述为【 】。
(A) 调用函数时,实参可以是表达式
(B) 调用函数时,实参与形参可以共用内存单元
(C) 调用函数时,将为形参分配内存单元
(D) 调用函数时,实参与形参的类型必须一致
2、以下正确的叙述是【 】。
(A) C语言的主函数是无参函数
(B) C语言的主函数最多允许有1个形式参数
(C) C语言的主函数最多允许2个形式参数
(D) C语言的主函数可以有2个以上形式参数
3、C语言中函数返回值的类型是由【 】决定的。
(A) return语句中的表达式类型
(B) 调用该函数的主调函数类型
(C) 调用函数时临时
(D) 定义函数时所指定的函数类型
4、若x为int型变量,则以下函数fun【 】。
fun(int x)
{
printf("%d",x);
}
(A) 返回值为void类型
(B) 无法确定返回值
(C) 返回值为int类型
(D) 没有返回值
5、以下不正确的描述为【 】。
(A) 不同函数中可以使用相同名字的变量
(B) 形式参数是局部变量
(C) 一个函数内部定义的变量只能在本函数范围内有效
(D) 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
6、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是【 】。
(A) 地址传递
(B) 值传递
(C) 由实参传给形参,并由形参传回来给实参 十
(D) 由用户指定传递方式
7、若用数组名作为函数调用时的实参,则实际上传递给形参的是【 】。
(A) 数组首地址
(B) 数组的第一个元素值
(C) 数组中全部元素的值
(D) 数组元素的个数
8、凡是函数中未指定存储类别的变量,其隐含的存储类别为【 】。//应该为局部变量
(A) 自动(auto)
(B) 静态(static)
(C) 外部(extem)
(D) 寄存器(register)
9、在C语言中,对于存储类型为【 】的变量,只有在使用它们时才占用内存单元。
(A) static和auto
(B) register和extern
(C) register和static
(D) auto和register
10、在一个源文件中定义的全局变量的作用域为【 】。
(A)本文件的全部范围
(B)本程序的全部范围
(C)本函数的全部范围
(D)从定义变量的位置开始至文件结束
11、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别为【 】。
(A)extern
(B)register
(C)auto
(D)static
12、以下不正确的描述为【 】。
(A)在函数之外定义的变量称为外部变量,外部变量是全局变量
(B)在一个函数中既可以使用本函数中的局部变量,又可以使用全局变量
(C)外部变量定义和外部变量说明的含义不同
(D)若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用
13、以下正确的函数定义形式是【 】。
(A)double fun(int x,int y)
(B)double fun(int x; int y)
(C)double fun(int x,int y);
(D)double fun(int x,y);
14、以下说法正确的是【 】。
(A) 实参和与其对应的形参各占用独立的存储单元
(B) 实参和与其对应的形参共占用一个存储单元
(C) 只有当实参和与其对应的形参同名时才共用存储单元
(D) 形参是虚拟的,不占用存储单元
15、若调用一个函数,且此函数中没有return语句,则正确的说法是【 】。
(A) 没有返回值
(B) 返回若干个系统默认值
(C) 能返回一个用户所希望的函数值
(D) 返回一个不确定的值
16、以下叙述正确的是【 】。
(A )定义函数时,形参的类型说明可以放在函数体内
(B) return后边的值不能为表达式
(C) 如果函数的类型与返回值类型不一致,以函数类型为准
(D) 如果形参与实参的类型不一致,以实参类型为准
17、以下程序有语法性错误,有关错误的原因的正确说法是【 】。
main( )
{int G=5,K;
void Prt_char();
……
K=Prt_char(G);
……
}
(A) 语句void prt_char();有错,它是函数调用语句,不能用void说明
(B) 变量名不能使用大写字符
(C) 函数说明和函数调用语句之间有矛盾
(D) 函数名不能使用下划线
18、以下正确的描述是【 】。
(A) 函数的定义可以嵌套,但函数的调用不可以嵌套
(B) 函数的定义不可以嵌套,但函数的调用可以嵌套
(C) 函数的定义和函数的调用均不可以嵌套
(D) 函数的定义和函数的调用均可以嵌套
19、以下说法正确的是【 】。
如果在一个函数中的复合语句中定义了一个变量,则该变量
(A) 只在该复合语句中有效
(B) 在该函数中有效
(C) 在本程序范围内均有效
(D) 为非法变量说明
20、以下程序的正确运行结果是【 】。
f(int a)
{int b=0; static int c=3;
b++; c++;
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++) printf("%4d",f(a));
}
(A) 7 7 7 (B) 7 10 13
(C) 7 9 11 (D) 7 8 9
21、请选择正确的运行结果填入【 】中。
#include <stdio.h>
fun(int x,int y)
{static int m=0,i=2;
i+=m+1;
m=i+x+y;
return(m);
}
main()
{
int j=4,m=1,k;
k=fun(j,m);
printf("%d,",k);
k=fun(j,m);
printf("%d\n",k);
}
(A) 08, 20 (B) 8, 8 (C) 8, 17 (D) 8, 16
22、请选择正确的运行结果填入【 】中。
#include <stdio.h>
int x,y;
num( )
{
int a=15,b=10;
int x,y;
x=a-b;
y=a+b;
return;
}
main( )
{int a=7,b=5;
x=a+b;
y=a-b;
num( );
printf("%d,%d\n",x,y);
}
(A) 12,2 (B) 5,25 (C) 2,12 (D)不确定
一、填空题
1、一个C语言程序的语句至少应包含一个______。
2、C语言源程序文件的扩展名是______,经过编译、连接后,生成文件的扩展名是______。
3、结构化程序由顺序结构、______和______三种基本结构组成。
4、C语言的执行是从______开始执行的。
5、C源程序的语句分隔符是______。
6、在C语言中,用关键字______定义单精度实型变量。
7、表达式S=12应当读做“______”。
8、C语言源程序的基本单位是______。
9、设int x=9,y=8;表达式x-=y+1的结果是______。
10、若a为整型变量,a=12,则表达式:a * =2+3的值______。
11、调用C语言对输入输出处理的库函数时,在# include命令行中应包含的头文件是______。
12、表达式9%5的结果是______。
13、若a为整型变量,a=12,则表达式:a+=4的值______。
14、 在C语言中,要求运算数必须是整型的运算符是______。
15、在C语言中,用______表示逻辑“真”值。
16、7、表达式10/3的结果是______。
17、通常一个字节包含______个二进制位。
18、 假设所有变量均为整型,a=2,b=5,b++则表达式a+b的值是______。
19、在C语言中,最基本的数据类型只有四种,它们分别是:______、______、______和double。
20、一个C程序有且仅有一个______函数。
21、若a为整型变量,a=12,则表达式:a-=2的值______。
22、在C语言中,有三种逻辑运算符,它们分别是:______、______、______。
23、在C语言中,字符输入函数和字符输出函数分别是:______和______。
24、C程序开发的四个步骤是______、______、______和执行。
25、C程序的结构分别是:顺序结构、______、______。
26、if语句中的表达式可以是关系表达式、______、______。
27、______是C语言中惟一一个三元运算符。
28、C语言提供的预处理命令主要包括如下三种:宏定义、______、______。
㈤ 未指定储存类别的变量其隐含的储存类别是什么
auto。
auto是C语言的关键字之一,用于声明自动变量,即局部变量。当变量未指定存储类别时,其隐含的存储类别默认为auto,也就是自动变量。