南昌大学c语言作业第五章,[转载]南昌大学计算机C语言答案5

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‘

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值