31、设有
static
char str[ ]="Beijing";
则执行
printf("%dn", strlen(strcpy(str,"China")));
后的输出结果为
A) 5 B) 7
C) 12 D) 14
[A] 教师批改:A
32、请选出以下程序段的输出结果
#include
main()
{ char
sl[10], s2[10], s3[10], s4[10];
scanf("%s%s",s1,s2); gets(s3); gets(s4);
puts(s1);
puts(s2); puts(s3); puts(s4);
}
输入数据如下:(此处代表回车符)
aaaa bbbb
cccc dddd A)
aaaa
bbbb
cccc
cccc B) aaaa
bbbb
cccc
dddd
C) aaaa
bbbb
dddd
dddd D) aaaa bbbb
cccc
dddd
eeee
[A] 教师批改:A
33、判断字符串s1是否大于字符串s2,应当使用_____。
A. if(s1>s2) B.
if(strcmp(s1,s2))
C. if(strcmp(s2,s1)>O) D.
if(strcmp(s1,s2)>O)
[D] 教师批改:D
34、下面程序段运行结果_____。
char a[3],b[ ]="China";
a=b;
printf(”%s”,a); A. 运行后将输出China B.
运行后将输出Ch
C. 运行后将输出Chi D. 编译出错
[D] 教师批改:D
35、在C语言中,引用数组元素时,其数组下标的数据类型允许是____。
A. 整型常量 B. 整型表达式
C. 整型常量或整型表达式 D.
任何类型的表达式
[C] 教师批改:C
36、若有说明:int a[l0];则对a效组元素的正确引用是_____。 A. a[10] B. a[3.5]
C. a(5) D. a[10-10]
[D] 教师批改:D
37、在C语言中.一维数组的定义方式为;类型说明符 数组名_____。
A. [常量表达式] B. [整型表达式]
C. [整型常量]或[整型表达式] D.
[整型常量]
[A] 教师批改:A
38、以下能对一维数组a进行正确初始化的语句是_____。 A. int
a[lO]=(0,0.0,0,0); B. int a[l0]={ };
C. int a[
]={0}; D. int a[10]={10*1};
[C] 教师批改:C
39、以下对二维数组a的正确说明是_____。
A. int a[3][
]; B. float a(3,4);
C. double
a[1][4]; D. float a(3)(4);
[C] 教师批改:C
40、若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A.
a[2][4] B.
a[l,3]
C.
a[l+l][0] D.
a(2)(1)
[C] 教师批改:C
41、若有说明:int a[3][4];则对a效组元素的非法引用是_____。
A. a[0][2*1] B.
a[l][3]
C.
a[4-2][0] D.
a[0][4]
[D] 教师批改:D
42、若有说明:int a[ ][3]={1,2,3,4,5,6,7};则a数组第一维的大小是_____。 A.
2 B. 3
C. 4 D. 无确定值
[B] 教师批改:B
43、以下程序段的结果是_____。
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf{"%2d",a[k][2-k]); A. 3 5 7 B. 3 6
9
C. 1 5 9 D 1 4 7
[A] 教师批改:A
44、若二维数组a有m列,则在a[i][j]前的元素个数为_____。 A. j*m+i B. i*m+j
C. i*m+j-1 D. i*m+j+1
[B] 教师批改:B
45、若有说明:int a[3][4]={0};则下面正确的叙述____。 A.
只有元素a[0][0]可以得到初值 B.
此说明语句不正确
C. 数组a中各元素都可得到初值,但其值不一定为0 D.
数组a中各元素都可得到初值0
[D] 教师批改:D
46、合法的数组定义是_____。 A.int a[]="string"; B.int
a[5]={0,1,2,3,4,5};
C.char a="string"; D.char
a[]={0,1,2,3,4,5};
[D] 教师批改:D
47、若有定义和语句:
char s[10];
s="abcd";
printf("%sn",s);
则结果是(以下μ代表空格)_____。 A.输出abcd B.输出a
C.输出abcdμμμμμ D.编译不通过
[D] 教师批改:D
48、若有以下说明和语句,则输出结果是_____。
char sp[]="tv\ willn";
printf("%d",strlen(sp)); A.1D B.3
C.9 D.字符串中有非法字符
[B] 教师批改:B
49、若有以下说明和语句,则输出结果是_____。
char str[]=""c:\abc.dat"";
printf("%s",str);
A.字符串中有非法字符 B."c:\abc.dat"
C."c:abc.dat" D."c:\abc.dat"
[C] 教师批改:C
50、下列对C语言字符数组的描述中错误的是_____。 A.字符数组可以存放字符串 B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较
[C] 教师批改:C
51、有以下程序
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++<7) if(p[i]%2) j+=p[i];
printf("%dn",j);
}
程序运行后的输出结果是_____。 A)42 B)45
C)56 D)60
[B] 教师批改:B
52、以下叙述中错误的是 _____。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B)数组名代表的是数组所占存储区的首地址,其值不可改变
C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D)可以通过赋初值的方式确定数组元素的个数
[C] 教师批改:C
53、有以下程序
main()
{ int
x[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
for (j=2;j>=i;j--)
if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
for (i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
for (i=0;i<8;i++) printf("%d",x[i]);
printf("n");
}
程序运行后的输出结果是_____。 A) 75310246 B)
01234567
C) 76310462 D) 13570246
[A] 教师批改:A
54、假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是_____。 A) 3 B)
6
C) 10 D) 20
[D] 教师批改:D
55、以下程序的输出结果是_____。
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
} A)
258 B) 741
C) 852 D) 369
[C] 教师批改:C
56、有如下程序
main0
{ int n[5]={0,0,0},i,k=2;
for(i=0;i
printf(“%dn”,n[k]);
}
该程序的输出结果是_____。 A) 不确定的值 B)
2
C) 1 D) 0
[D] 教师批改:D
57、执行下面的程序段后,变量k中的值为_____。
int k=3, s[2];
s[0]=k; k=s[1]*10; A) 不定值 B)
33
C) 30 D) 10
[A] 教师批改:A
58、以下程序运行后,输出结果是_____。
main()
{ int y=18,i=0,j,a[8];
do
{ a[i]=y%2; i++
y=y/2;
} while(y>=1)
for(j=i-1;j>=0;j--) printf("%d",a[j];
printf("n");
} A) 10000 B) 10010
C) 00110 D) 10100
[B] 教师批改:B
59、以下程序的输出结果是_____。
main()
{ int i,k,a[10],p[3]:
K=5;
for
(i=0;i<10;i++) a[i]=i;
for
(i=0;i<3;i++) p[i]=a[i*(i+1)];
for
(i=0;i<3;i++) k+=p[i]*2;
printf("%dn",k);
} A)
20 B) 21
C) 22 D)23
[B] 教师批改:B
60、阅读下列程序:
main(
)
{ int
n[3],i,j,k;
for(i=0;i〈3;i++〉 n[i]=0;
k=2;
for
(i=0;i〈k;i++〉
for
(j=0;j〈k;j++〉 n[j]=n[i]+1;
printf("%dn",n[1]); }
下述程序运行后输出结果是_____。 A) 2 B)
1
C) 0 D) 3
[D] 教师批改:D
61、以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
#
define N 4
void rotate(int a[][N], int b[][N])
{ int i, j;
for (i=0; i
{ b[i][N-1] =【1】;【2】=
a[N-1][i]; }
}
教师批改:【1】A[0][i]
【2】b[i][0]
62、以下程序运行后的输出结果是 【 】 。
main()
{ int
p[7]={11,13,14,15,16,17,18};
int i=0,j=0;
while(i<7 &&
p[i]%2==1) j+=p[i++];
printf("%dn",j);
}
教师批改:24
63、以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
main()
{ int
i,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++) scanf("%d",
【1】 );
fro(i=0;i<20;i++)
{ if(a>0)
{ count++;
sum+= 【2】 ;
}
}
printf("sum=%d,count=%dn",sum,count);
教师批改:【1】&a[i] 【2】a[i]
64、以下程序运行后的输出结果是 【 】
main()
{ int i,
n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{ n[i]=n[i-1]*2+1;
printf(“%d”,n[i]);
}
}
教师批改:1 3 7 15
65、若已定义:int a[10],
i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
fun(
int a[ ])
{ int i;
for(i=1;
i<=10; i++) 【1】=i;
for(i=0;
i<5; i++) 【2】=a[i];
}
教师批改:【1】a[i-1] 【2】a[9-i]
66、以下程序的输出结果是 【 】 。
main()
{ int arr[
]={30,25,20,15,10,5}, *p=arr;
p++;
printf(“%dn”,*(p+3));
}
教师批改:10
67、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【 】。
int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
教师批改:p[5]
68、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
main( )
{ float x[1000], sum=0.0, ave, a;
int n=0,
i;
printf("Enter mark:n");scanf("%f",&a);
while(a>=0.0&&
n<1000)
{ sum+ 【1】 ; x[n]= 【2】 ;
n++; scanf("%f",&a);
}
ave= 【3】 ;
printf("Output:n");
printf("ave=%fn",ave);
for (I=0;I
if 【4】 printf
(“%fn”,x[I]);
}
教师批改:【1】=a 【2】a 【3】sum/n 【4】x[i]
69、下面程序输出的结果是 【
】
#define MAX 3
int a [MAX];
main()
{ fun1( ); fun2( a
); printf("n");}
fun1( )
{ int k, t=0;
for (k=0; k
a[k]=t+t;
}
fun2(int b[])
{ int k;
for(k=0; k
*(b+K));
}
教师批改:024
70、下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
fun(int
x,int b[])
{ int
k=0,r;
do
{ r=x%
【1】;
b[k++]=r;
x/=【2】; }
while(x); }
教师批改:【1】2 【2】2
71、下面程序的输出是 【 】 。
main()
{ int
arr[10],i,k=0;
for( i=0;
i<10; i++)
arr[i]=i;
for( i=1;
i<4; i++)
k+=arr[i]=i;
printf(
‘%dn", k);}
教师批改:12
72、下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax(
int s[], int t)
{ int k,
p;
for( p=0,
k=p; p
if(
s[p]>s[k]) 【 】 。
return
k;
}
教师批改:k=p
73、以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
#include
#include
main( )
{ int num[26],i; char c;
for(i=0; i<26; i++) num[i]=0;
while( 【1】 !=‘#‘)
if( isupper(c)) num[c-65]+=1;
for(i=0; i<26;
i++)
if(num[i]) printf("%c:%dn,i 【2】 ,
num[i]);
}
教师批改:【1】(c=getchar()) 【2】+65 或 +‘A‘
74、下面rotate函数的功能是:将n行n列的矩阵A转置为A’,例如:
1 2 3 4 1 5 9 13
5 6 7 8 2 6 10 14
当 A= 9 10 11 12 则 A’=3 7 11 15
13 14 15 16 4 8 12 16
请填空
#define N 4
void rotate(int a[][N])
{ int i,j,t;
for(i=0;i
for(j=0;【1】;j++)
{ t=a[i][j];
【2】
;
a[j][i]=t;
}
}
教师批改:【1】j<=i 【2】a[i][j]=a[j][i]
75、以下程序运行后的输出结果是 【 】
main()
{
int i,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++) a[j][i]=0;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++) printf("&d ", a[i][j]);
printf("n");
}
}
教师批改:1 2 3 0 5 6 0 0
9
76、若有以下程序
main()
{ int
a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};
int i,j,s=0;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{ if(a[i][j]<0)continue;
if(a[i][j]==0)break;
s+=a[i][j];
}
}
printf("%dn",s);
}
执行后输出的结果是 【 】 。
教师批改:58
77、函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下
1
1 1
1 2 1
1 3 3
1
1 4 6 4
1
其构成规律是:
第0列元素和主对角线无素均为1
其余元素为其左上方和正上方元素之和
数据的个数每行递增1
请将程序补充完整。
#defint N 6
void
YangHui(int *[N][N])
{ int
i,j;
x[0][0]=1
for(i=1;i
{ x[i][0]= 【1】 =1;
for(j=1;j
x[i][j]= 【2】
;
}
}
教师批改:【1】x[i][i] 【2】x[i-1][j-1]+x[i-1][j] 或
[i-1][j]+x[i-1][j-1]
78、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空。
#define N 3
#define M 4
void LineMax(int x[N][M])
{ int i,j,p;
for(i=0; i
{ p=0;
for(j=1; j
if(x[i][p]
printf(“The max value in line %d is %dn”, i, 【2】
);
}
}
main()
{ int x[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
【3】
}
教师批改:【1】sp=j 【2】cx[i][p] 【3】LineMax(x)
79、设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【
】。要求形参名为b。
main()
{ double s[10][22];
int n; ┆
┆
fun(s);
┆
}
教师批改:void fun(double b[][22])或 void fun(double
b[0][22])或 void fun(double (*b)[22])
80、阅读下列程序:
#include
main()
{ int i, j, row, column,m;
static
int array[3][3]={{100,200,300},
{28,72,-30},
{-850,2,6}
};
m=array[0][0];
for (i=0;
i<3; i++)
for (j=0;
j<3; i++)
if
(array[i][j]
{
m=array[i][j]; row=i; column=j;}
printf("%d,%d,%dn",m,row,column);
}
上述程序的输出结果是 【 】 。
教师批改:-850,2,0
81、以下程序运行后的输出结果是【 】
#include
"string.h"
main()
{
char ch[]="abc",x[3][4]; int i;
for(i=0;i<3;i++) strcpy(x[i],ch);
for(i=0;i<3;i++) printf("%s",&x[i][i]);
printf("n");
}
教师批改:abcbcc
82、以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include
#include
main()
{
char s[80], d[80]; int i, j;
gets(s);
for(i=j=0; s[i]!=‘ ’; i++)
if( 【
】 ) {
d[j]=s[i]; j++;}
d[j]=‘ ’;
puts(d);
}
教师批改:s[i]>=‘0‘
&& s[i]<
=‘9‘