admin 管理员组文章数量: 1184232
2024年4月22日发(作者:描述接口和抽象类的区别)
第一章、 数组
一.选择题 8.以下能对二维数组a进行正确初始化的语句是(
B
)
1.若有语句int a[8];则下述对a 的描述正确的是(A)int a[2][]={{1,0,1},{5,2,3}};(B)int
(
A
)。 a[][3]={{1,2,3},{4,5,6}};
(A)定义了一个名称为a的一维整型数组,共有8个(C)int a[2][4]={{1,2,3},{4,5},{6}};(D)int
元素 a[][3]={{1,0,1}{},{1,1}};
(B)定义了一个数组a,数组a共有9个元素 9.若有说明:int a[3][4]={0};则下面正确的叙述是
(C)说明数组a的第8个元素为整型变量 (
D
)
(D)以上可选答案都不对 (A)只有元素a[0][0]可得到初值0(B)此说明语句
2.在C语言中,引用数组元素时,其数组下标的数据类不正确
型允许是(
C
)。 (C)数组a中各元素都可得到初值,但其值不一定为0
(A)整型常量 (D)数组a中每个元素均可得到初值0
(B)整型表达式 10.以下各组选项中,均能正确定义二维实型数组a的
(C)整型常量或整型表达式 选项是(
C
)
(D)任何类型的表达式 (A)float a[3][4]; float a[][4]; float
3.下述对C语言字符数组的描述正确的是(
A
)。 a[3][]={{1},{0}};
(A)任何一维数组的名称都是该数组存储单元的开始(B)float a(3,4); float a[3][4]; float
地址,且其每个元素按照顺序连续占用存储空间 a[][]={{0};{0}};
(B)一维数组的元素在引用时其下标大小没有限制 (C)float a[3][4]; static float a[][4]={{0},{0}};
(C)任何一个一维数组的元素,可以根据内存的情况(D)float a[3][4]; float a[3][];
按照其先后顺序以连续或非连续的方式占用存储空间 11.若二维数组a有m列,则计算任一元素a[i][j]在数
(D)一维数组的第一个元素是其下标为1的元素 组中位置的公式为(
D
)
4.下述对C语言字符数组的描述中正确的是(
B
)。 (假设a[0][0]位于数组的第一个位置上。)
(A)任何一个一维数组的元素在引用时,其下标可以(A)i*m+j(B)j*m+i(C)i*m+j-1(D)i*m+j+1
是整型、实型或字符型常量 12.对以下说明语句的正确理解是(
B
)
(B)一维数组的元素实质上就是一个变量,代表内存int a[10] = {6,7,8,9,10};
中的一个存储单元 (A)将5个初值依次赋给a[1]至a[5] (B)将5个
(C)如果要引用数组中的每一个元素,则直接使用该初值依次赋给a[0]至a[4]
数组名称即可
?
(C)将5个初值依次赋给a[6]至a[10](D)因为数组
(D)以上都不对 长度与初值的个数不相同,语句有错
5.以下对一维整型数组a的正确说明是(
D
)。 13.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数
(A)int a(10); (B)int n=10,a[n]; (C) int n; 组第一维的大小是(
B
)
scanf(“%d”,&n);int a[n]; (A)2 (B)3 (C)4 (D)不确定
(D) #define SIZE 10 int a[SIZE]; 14.定义如下变量和数组:
6.以下能对一维数组a进行正确初始化的语句是(
C
)int I;
B? int x[3][3]={1,2,3,4,5,6,7,8,9};
(A)int a[10]=(0,0,0,0,0);(B)int a[10]={};(C)则下面语句的输出结果是(
C
)
int a[]={0};(D)int a[10]=(10*1); for(I=0;I<3;I++)
7.若有说明:int a[3][4];则对a数组元素的正确引用printf(“%d”,x[I][2-I]);
是(
C
) (A)1 5 9(B)1 4 7(C)3 5 7(D)3 6 9
(A)a[2][4] (B)a[1,3] (C)a[1+1][0] (D)a(2)(1)
15下面程序的运行结果是(
C
)
main()
{int a[6][6],I,j;
for(I=1;I<6;I++)
for(j=1;j<6;j++)
a[I]][j]=(I/j) * (j/I)
for(I=1;I<6;I++)
{for(j=1;j<6;j++)
printf(“%2d”,a[I][j]);
printf(“n”);}
}
(A)1 1 1 1 1 (B)0 0 0 0 1 (C)1 0 0 0 0 (D)1 0 0 0 1
1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0
1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0
1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0
1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1
16.下面程序的运行结果是(
C
) for(I=1;I<6;I++)
main() {a[I]=9*(I-2+4*(I>3))%5;
{int a[6]; printf(“%2d”,a[I]);
1
}
}
(A)-4 0 4 0 4(B)-4 0 4 0 3(C)-4 0 4 4 3(D)
-4 0 4 4 0
17.下列定义正确的是(
A
)
(A)static int a[]={1,2,3,4,5}(B)int b[2]={2,5,7}
(C)int a(10)(D)int 4e[4]
18.若有说明:int a[][4]={0,0};则下列叙述不正确
的是(
D
)
(A)数组a的每个元素都可得到初值0(B)二维数组
a的第一维的大小为1
(C)因为对二维数组a的初值个数除以第二维的大小,
“abcd”;
28.下列语句的执行结果是(
C
)
static char str[10] = “china”;
printf(“%d”,strlen(str));
(A)10 (B)6 (C)5 (D)0
29合法的数组定义是(
A
)
(A)int a[] = “language”;(B)int
a[5]={0,1,2,3,4,5};
(C)char a=”string”;(D)char
a[]={“0,1,2,3,4,5”};D选项应为
Char a[]={‘0’,’1’,’2’,’3’,’4’,’5’};
30.若有以下程序片段:
商为0,所以数组a的行数为1
(D)只有元素a[0][0]和a[0][1]可得到初值0,其余
元素均得不到初值
19.设有char str[10],下列语句正确的是(
D
)
(A)scanf(“%s”,&str);(B)printf(“%c”,str);
(C)printf(“%s”,str[0]);(D)printf(“%s”,str);
20.以下语句定义正确的是(
D
)
(A)int a[1][4]={1,2,3,4,5};(B)float
x[3][]={{1},{2},{3}};
(C)long b[2][3]={{1},{1,2},{1,2,3}};(D)double
y[][3]={0};
21下列的说法正确的是(
D
)
(A)在C语言中,可以使用动态内存分配技术,定义
元素个数可变的数组
(B)在C语言中,数组元素的个数可以不确定,允许
随机变动
(C)在C语言中,数组元素的数据类型可以不一致
(D)在C语言中,定义了一个数组后,就确定了它所
容纳的具有相同数据类型元素的个数
22.假设array是一个有十个元素的整型数组,则下列
写法中正确的是(
A
)
(A)array[0]=10(B)array=0(C)array[10]=0(D)
array[-1]=0
23.若用数组名作为函数调用的实参,传递给形参的是
(
A
)
(A)数组的首地址(B)数组的第一个元素的值
(C)数组中全部元素的值(D)数组元素的个数
24.若使用一维数组名作函数实参,则以下正确的说法
是(
C
)
(A)在被调函数中,与该实参相对应的形参必须是指
针型变量
(B)实参数组类型与形参类型可以不匹配
(C)在被调函数中,不需要考虑形参数组的大小
(D)实参数组名与形参数组名必须一致
25.下述对C语言字符数组的描述错误的是(
C
)
(A)字符数组可以存放字符串(B)字符数组中的字符
串可以整体输入、输出
(C)可以在赋值语句中通过赋值运算符”=”对字符数
组整体赋值
(D)不可以用关系运算符对字符数组中的字符串进行
比较
26.设有char str1[10], str2[10],c1; 则下列语句正
确的是(
D
)(不能用赋值语句将一个字符串常量或者
字符数组赋给一个字符数组)
(A)str1 = {“china”}; str2 = str1;(B)c1=”
ab”;
(C)str1 = {“china”}; str2 = {“people”};
strcpy(str1,str2);(D)c1=’a’;
27.以下能正确进行字符串赋值、赋初值的语句组是
(
A
)
(A)char s[5] = {‘a’,’b’,’c’,’d’,’e’};
(B)char *s; s=”abcde”;
(C)char s[5] = “abcde”;( D )char s[5]; s =
charstr[]=
"abn012""
;printf(“%d”,strlen
(str));
则输出结果是(
C
)
(‘012’ 代表八进制数,不
是空值符 ’0’)
(A)3 (B)4 (C)6 (D)12
31.库函数strcpy用以复制字符串。若有以下定义和语
句:
char str1[] = “string”, str2[8], *str3, *str4=”
string” ;
则对库函数strcpy的不正确调用是(
C
)
(A)strcpy(str1,”hello1”);(B)strcpy(str2,”
hello2”);
(C)strcpy(str3,”hello3”);(D)strcpy(str4,”
hello4”);
32.下面程序段的运行结果是(
D
)
char a[7] = “abcdef “;
char b[4] =”ABC”;
strcpy(a,b);
printf(“%c”,a[5]);
(A)为空格(B)0(C)e(D)f
33.有下面的程序段
D
char a[3],b[] = “China”;
a = b;
printf(“%s”, a);
则
(A)运行后将输出China(B)运行后将输出Ch(C)
输出Chi(D)编译出错
二.填空题
1.数组名命名规则和变量名相同,遵循(
标识符
)
命名规则。
2.对于一维数组的定义”类型说明符 数组名[常量表
达式]”其中常量表达式可以包括(
常量
)和(
符号
常量
),不能包含(
变量
)。
3.对于数组a[m][n]来说,使用数组的某个元素时,行
下标最大值是(
m-1
),列下标最大值是(
n-1
)。
4.在C语言中,将字符串作为(
字符数组
)处理。
5.在C语言中,数组的首地址是(
?
)。
()
{int k,*p;
static int a[4]={1,2,3,4};
p = a;
for ( k = 0 ; k < 3 ; k++)
printf(“%d,”, *p++);
}程序的运行结果是(
1,2,3,
)
7.程序
main()
{int k,*p;
static int a[4]={1,2,3,4};
p = a;
for( k = 0; k < 3 ; k ++ )
printf(“%d,”,*++p);
}则运行结果是(
2,3,4,
)
8.下面程序的功能是将字符串s中所有的字符c删除。
2
补足所缺语
#include
main()
{
char s[80];
int i , j;
gets(s);
for (i = j = 0; s[i] != ‘0’;i++)
if(s[i] != ‘c’) (
s[j++]=s[i]
);
s[j] = ‘0’;
puts(s);
}
9.下面程序的功能是从键盘输入一行字符,统计其中有
多少个单词,单词之间用空格分隔。补足所缺语句。
第二章、 函数
一.选择题
1. 关于建立函数的目的以下说法正确的是
___
_B___
___。
(A) 提高程序的执行效率
(B) 提高程序的可读性
(C) 减少程序的篇幅
(D) 减少程序文件所占内存
2. 以下说法正确的是__
__D
______。
(A) 用户若需调用标准库函数,调用前必须重新定义
(B) 用户可以重新定义标准库函数,若如此,该函数将
失去原有含义
(C) 系统根本不允许用户重新定义标准库函数
(D) 用户若需调用标准库函数,调用前不必使用预编译
命令将该函数所在文
件包括到用户源文件中,系统自动去调用.
3. 以下函数形式正确的是__
_D__
_____。
(A) double fun(int x,int y)
{ int z=x+y;return z; }
(B) fun(int x,y)
{ int z;
return z; }
(C) fun(x,y)
{ int x,y; double z;
z=x+y; return z; }
(D) double fun(int x,int y);
{ double z;
z=x+y;return z; }
4. 关于C语言以下说法正确的是__
__B___
___。
(A) 实参和与其对应的形参各占用独立的存储单元
(B) 实参和与其对应的形参共占用一个存储单元
(C) 只有当实参和与其对应的形参同名时才共占用存
储单元
(D) 形参是虚拟的,不占用存储单元
5. 若调用一个函数,且此函数中没有return语句,则正
确的说法是该函数____
__D_
___。
(A) 没有返回值
(B) 返回若干个系统默认值
(C) 能返回一个用户所希望的函数值
(D) 有返回值,但返回一个不确定的值
6. 按照C语言的规定以下说法不正确的是
___
_D__
____。
(A) 形参可以是常量、变量或表达式
(B) 实参可以为任意类型
(C) 实参可以是常量、变量或表达式,在传递给形参时,
要求实参必须有确定的值
(D) 形参与其对应的实参类型要求可以不一致
#include
main()
{char s[80], c1, c2 ; int i = 0, num = 0;
gets(s);
while(s[i] != ‘0’)
{ c1 = s[i];
if(i == 0 ) c2 = ‘ ‘;
else c2 = s[i–1];
if (
c1!=' '&&c2 ==' '
) num ++ ;
i++;
}
printf(“There are %d words.n”,num);
}(
两个单引号‘’之间有空格
)
7. 以下说法正确的是___
_C___
___。
(A) 定义函数时,形参的类型说明可以放在函数体内,
也可以放在函数体外
(B) return后边的值不能为表达式
(C) 如果函数值的类型与返回值类型不一致,以函数值
类型为准
(D) 如果形参与实参的类型不一致,以实参类型为准
8. C语言规定,简单变量做实参时,它和对应形参之间
的数据传递方式是__
_B_
______。
(A) 地址传递
(B) 单向值传递
(C) 由实参传给形参,再由形参传回给实参
(D) 由用户指定传递方式
9. C语言允许函数值类型缺省定义,此时该函数值隐含
的类型是___
_B__
_。
(A) float型
(B) int型
(C) long型
(D) double型
10. C语言规定,函数返回值的类型是由___
_D__
____。
(A) return语句中的表达式类型所决定
(B) 调用该函数时的主调函数类型所决定
(C) 调用该函数时系统临时决定
(D) 在定义该函数时所指定的函数类型决定
11. 下面函数调用语句含有实参的个数为
___
_B_
_____。
func((a,b,c,d),(e,f,g));
(A) 1
(B) 2
(C) 4
(D) 以上都不对
12. 以下描述正确的是___
_A
______。
(A) 函数调用可以出现在执行语句或表达式中
(B) 函数调用不能做为一个函数的实参
(C) 函数调用可以做为一个函数的形参
(D) 以上都不正确
13. 在C语言程序中,以下描述正确的是____
B_
_____。
(A) 函数的定义可以嵌套,但函数的调用不可以嵌套
(B) 函数的定义不可以嵌套,但函数的调用可以嵌套
(C) 函数的定义和函数的调用均不可以嵌套
(D) 函数的定义和函数的调用均可以嵌套
14. 如果在一个函数的复合语句中定义了一个变量,则
该变量___
A_
_____。
(A) 只在该复合语句中有效,在该复合语句外无效
(B) 在该函数中任何位置都有效
(C) 在本程序的原文件范围内均有效
3
(D) 此定义方法错误,其变量为非法变量
15. 以下程序的正确运行结果是___
_D__
____。
#define MAX 10
int a[MAX],i;
main( )
{ printf("\
n");sub1();sub3(a);sub2();sub3(a); }
sub2()
{ int a[MAX],i,max;
max=5;
for(i=0;i<max;i++) a[i]=i;
}
sub1()
{ for(i=0;i<MAX;i++) a[i]=i+i;
}
sub3(int a[])
{ int i;
for(i=0;i<MAX;i++) printf("%d",a[i]);
printf("\n");
}
}
(A) 0 2 4 6 8 10 12 14 16 18
0 1 2 3 4
(B) 0 1 2 3 4
0 2 4 6 8 10 12 14 16 18
(C) 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
(D) 0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
16. 以下程序的输出结果是__
A___
_____。
main( )
{
int k=4,m=1,p;
p=func(k,m);
printf("%d,",p);
p=func(k,m);
printf("%d",p);
}
func(int a,int b)
{
static int m,k=2;
k+=m+1;
m=k+a+b;
return(m);
}
(A) 8,17
(B) 8,16
(C) 8,20
(D) 8,8
17. 以下程序的输出结果是____
B_
_____。
main()
{ int i=1, j=3;
printf("%d,",i++);
{ int i=0; i+=j*2;
printf("%d,%d,",i,j); }
printf("%d,%d\n",i,j); }
(A) 1,6,3,1,3
(B) 1,6,3,2,3
(C) 1,6,3,6,3
(D) 1,7,3,2,3
18. 以下程序的输出结果是___
_B__
____。
main()
{ int a[]={1,2,3,4},i,x=0;
for(i=0; i<4; i++) { sub(a,&x);
printf("%d",x); }
printf("\n");
}
sub(int*s, int *y)
{ static int t=3;
*y=s[t]; t--;
}
(A) 1234
(B) 4321
(C) 0000
(D) 444412.
19. 以下程序的输出结果是__
_C__
_____。
void fun(int *s)
{ static int j=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main( )
{ int k,a[10]={1,2,3,4,5};
for(k=1; k<3; k++) fun(a);
for(k=0; k<5; k++) printf("%d",a[k]);
}
(A) 34756
(B) 23445
(C) 35745
(D) 12345
20. 以下程序的输出结果是__
_D___
____。
f(int a)
{ int b=0;
static int c=3;
a=c++,b++;
return(a);
}
main( )
{ int a=2,i,k;
for(i=0; i<2; i++) k=f(a++);
printf("%d\n",k);
}
(A) 3
(B) 6
(C) 5
(D) 4
21. 以下程序的输出结果是__
_B____
___。
int m=13;
int fun2(int x,int y)
{ int m=3;
return(x*y-m);
}
main( )
{ int a=7,b=5;
printf("%d\n",fun2(a,b)/m);
}
(A) 1
(B) 2
(C) 7
(D) 10
22. C语言中,形参缺省的存储类说明是___
_A__
____。
(A) auto()
(B) static(静态)
(C) register(寄存器)
(D) extern(外部)
23. 以下叙述中不正确的是_____
_C__
__。
(A) 一个变量的作用域完全取决于变量定义语句的位
置
(B) 全局变量可以在函数以外的任何部位进行定义
4
(C) 局部变量的"生存期"只限于本次函数调用,因此不
可能将局部变量的
运算结果保存至下一次调用
(D) 一个变量说明为static存储类是为了限制其他编
译单位的引用
二.填空题
1. 以下程序的输出结果是
_2,5,1,2,3,-2_
________。
main( )
{ int a=3,b=2,c=1;
c-=++b; b*=a+c;
{ int b=5,c=12;
c/=b*2; a-=c;
printf("%d,%d,%d,",a,b,c);
a+=--c;
}
printf("%d,%d,%d\n",a,b,c);
}
2. 以下程序的输出结果是
_2468_
________。
void fun( )
{ static int a;
a+=2;
printf("%d",a); }
main( )
{ int cc;
for(cc=1; cc<=4; cc++) fun();
printf("\n");
}
3. 以下程序的输出结果是
funct result
is:12__
___。
unsigned funct(unsigned num)
{ unsigned int k=1;
do
{ k*=num%10; num/=10; }
while(num);
return k;
}
main()
{ unsigned int n=26;
printf("funct result is:%d\n",funct(n));
}
4. 以下程序的输出结果是
funct result
is:_***9.0__
_______。(*代表空格)
double sub(double x,double y,double z)
{ y-=1.0; z=z+x; return z; }
main()
{ double a=2.5,b=9.0;
printf("function running result is:%6.1f\
n",sub(b-a,a,a));
}
5. 下面pi函数的功能是,根据以下公式返回满足精度
ε要求的π的值。
根据以下算法要求补足所缺语句。
π
/2=1+1/3+1/3·2/5+1/3·2/5·3/7+1/3·2/5·3/7·4/9+…
double pi(double eps)
{ double s=0.0,t=1.0;
int n;
for(__
_n=1__
_____; t>eps; n++)
{ s+=t; t=n*t/(2*n+1); }
return (2.0* _
_s_
_______);
}
5
版权声明:本文标题:C语言习题选2 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713791674a651693.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论