《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx

上传人:b****5 文档编号:7881375 上传时间:2023-01-26 格式:DOCX 页数:16 大小:23.61KB
下载 相关 举报
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx_第1页
第1页 / 共16页
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx_第2页
第2页 / 共16页
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx_第3页
第3页 / 共16页
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx_第4页
第4页 / 共16页
《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx

《《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx(16页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》李学刚数字资源9章 参考答案 2同步训练答案 同步训练61答案.docx

《C语言程序设计》李学刚数字资源9章参考答案2同步训练答案同步训练61答案

同步训练6-1答案

一、单项选择题

1.已定义:

floata[5];则数组a可引用的元素有(D)。

A.a[1]~a[5]B.a[0]~a[5]C.a[1]~a[4]D.a[0]~a[4]

2.已定义:

inta[15];则数组a占用的内存单元数是(C)。

A.15B.30C.60D.120

3.若有以下定义:

doublew[10];则数组w的元素下标范围是(B)。

A.[0,10]B.[0,9]C.[1,10]D.[1,9]

4.设有程序,则在程序中的两个括号中应填入(C)。

#include

intmain()

{

inti,a[5];printf{"Pleaseinputnumber:

\n"};

for(i=0;i<=4;i++)scanf("%d",());

……

printf("输出数组:

\n");

for(i=0;i<4;i++)printf("%d",());

return0;

}

A.a[i]和&a[i]B.&a[i]和&a[i]

C.&a[i]和a[i]D.a[i]和a[i]

5.阅读程序,以下程序的输出结果是(D)。

f(intb[],intn)

{

inti,r=1;

for(i=0;i<=n;i++)r=r*b[i];

returnr;

}

intmain()

{

intx,a[]={2,3,4,5,6,7,8,9};

x=f(a,3);

printf("%d\n",x);

return0;

}

A.720B.6C.24D.120

6.已知int类型变量在内存中占用4个字节,定义数组intb[8]={2,3,4};则数组b在内存中所占字节数为(D)。

A.5B.12C.16D.32

7.以下程序段给数组所有元素输入数据,应在圆括号中填入的是(D)。

#include

intmain()

{

inta[10],i=0;

while(i<10)

scanf("%d",());

……

}

A.&a[++i]B.&a[i+1]C.&a[i]D.&a[i++]

8.若有以下说明:

inta[10]={1,2,3,4,5,6,7,8,9,10};charc='a';则数值为4的表达式是(D)。

A.a['f'-c]B.a[4]C.a['d'-'c']D.a['d'-c]

9.以下定义语句中,错误的是(B)。

A.inta[]={6,7,8};B.intn=5,a[n];

C.chara[]="string";D.chara[5]={'0','1','2','3','4'};

10.以下描述中正确的是(D)。

A.数组名后面的常量表达式用一对圆括弧括起来

B.数组下标从1开始

C.数组下标的数据类型可以是整型或实型

D.数组名的规定与变量名相同

11.用数组名作为函数调用时的实参,实际上传送给形参的是(A)。

A.数组首地址B.数组的第一个元素值

C.数组中全部元素的值D.数组元素的个数

12.若定义数组并初始化chara[10]={'0','1','2','3','4','5','6','7','8','9'};

以下正确语句是(C)。

A.scanf("%c",a[0]);B.scanf("%s",&a);

C.printf("%c",a[3]);D.printf("%s",a);

13.若定义数组inta[10],其数组元素的下标下限为(B)。

A.1B.0C.9D.10

14.若定义数组inta[10],其最后一个数组元素为(C)。

A.a[0]B.a[1]C.a[9]D.a[10]

15.若定义数组并初始化inta[10]={1,2,3,4},以下语句不成立的是(B)。

A.a[8]的值为0B.a[1]的值为1C.a[3]的值为4D.a[9]的值为0

16.若定义数组并初始化inta[10]={1,2,3,4},以下叙述成立的是(A)。

A.若引用a[10],编译时警告B.若引用a[10],连接时报错

C.若引用a[10],运行时出错D.若引用a[10],系统报错

17.指出以下错误语句(A)。

A.intn=10,a[n];B.intn,a[10];

C.inta[10]={1,2,3};D.inta[10]={1,2,3,4,5,6,7,8,9,10};

18.若定义数组并初始化inta[10]={1,2,3,4},以下叙述不成立的是(A)。

A.a[10]是a数组的最后一个元素的引用

B.a数组中有10个元素

C.a数组中每个元素都为整数

D.a数组是整型数组

19.执行下面的程序段后,变量k中的值为(A)。

intk=3,s[2];s[0]=k;k=s[1]*10;

A.不定值B.33C.30D.10

20.若有以下的定义和语句:

intstr[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='e',则数值为2的表达式是(C)。

A.str['g'-c]B.str[2]C.str['d'-'c']D.str['d'-c]

21.设已定义:

intx[2][4]={1,2,3,4,5,6,7,8};则元素x[1][1]的正确初值是(A)。

A.6B.5C.7D.1

22.设有intx[2][4]={1,2,3,4,5,6,7,8};printf("%d",x[2][4]);则输出结果是(C)。

A.8B.1C.随机数D.语法检查出错

23.设有:

inta[4][5];则数组a占用的内存字节数是(D)。

A.9B.20C.40D.80

24.以下程序的输出结果是(C)。

#include

intmain()

{

inti,a[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i++)

printf("%d,",a[i][2-i]);

return0;

}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

25.指出以下错误语句(C)。

A.inta[2][3]={{1,2,3},{4,5,6}};B.intb[2][3]={1,2,3,4,5,6};

C.inta[][]={{1,2,3},{4,5,6}};D.inta[][3]={{1,2,3},{4,5,6}};

二、程序填空题

1.若有定义语句:

chars[100],d[100];intj=0,i=0;,且s中已赋字符串,请填空将字符串s拷贝到d中。

(注:

不得使用逗号表达式)

while(s[i])

{

d[j]=s[i++];

j++;

}

d[j]=0;

2.下列程序中,将k的值插入到有序数组a中,使数组依然保持升序,请填空。

#include

voidinsert(inta[],intx)

{

inti=0,j;

while(a[i]

for(j=2;j>=i;j--)

a[j+1]=a[j];

a[i]=x;

}

intmain()

{

inta[5]={1,4,5},i;

intx;

scanf("%d",&x);

insert(a,x);

for(i=0;i<4;i++)

printf("%3d",a[i]);

printf("\n");

return0;

}

3.程序定义了N×N的二维数组,并在主函数中自动赋值。

请在函数fun()填空,该函数的功能是:

使数组左下半三角元素中的值全部置成0。

例如a数组中的值为

a=197

238

456

则返回主程序后a数组中的值应为

097

008

000

#include

#include

#defineN9

intfun(inta[][N])

{

inti,j;

for(i=0;i

for(j=0;j<=i;j++)

a[i][j]=0;

return0;

}

intmain()

{

inta[N][N],i,j;

printf("*****Thearray*****\n");

for(i=0;i

{

for(j=0;j

{

a[i][j]=rand()%10;/*产生一个随机的N*N矩阵*/

printf("%4d",a[i][j]);

}

printf("\n");

}

fun(a);

printf("THERESULT\n");

for(i=0;i

{

for(j=0;j

printf("%4d",a[i][j]);

printf("\n");

}

return0;

}

4.计算两个矩阵的乘积。

程序如下,请填空。

说明:

1.当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。

2.矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。

3.乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

#include

#defineM2

#defineP3

#defineN4

voidfun(inta[M][P],intb[P][N],intc[M][N])

{

inti,j,k,s;

for(i=0;i

{

for(j=0;j

{

s=0;

for(k=0;k

s+=a[i][k]*b[k][j];

c[i][j]=s;

}

}

}

intmain()

{

inta[M][P],b[P][N],c[M][N];

inti,j,k;

printf("Inputarraya[2][3];\n");//输入数组A的值

for(i=0;i

{

for(k=0;k

scanf("%d",&a[i][k]);

}

printf("Inputarrayb[3][4];\n");//输入数组B的值

for(i=0;i

{

for(k=0;k

scanf("%d",&b[i][k]);

}

fun(a,b,c);

printf("Outputarrayc[2][4]:

\n");//输出数组C的值

for(i=0;i

{

for(j=0;j

{

printf("%5d",c[i][j]);

}

printf("\n");

}

return0;

}

三、程序阅读题

1.以下程序运行后的输出结果是(abc)。

#include

intmain()

{

chars[]="abcdef";

s[3]='\0';

printf("%s\n",s);

return0;

}

2.以下程序运行后的输出结果是(Hello)。

#include

intmain()

{

charb[]="Hello,you";

b[5]=0;

printf("%s\n",b);

return0;

}

3.以下程序运行后的输出结果是(1,3,7,15,)。

#include

intmain()

{

inti,n[]={0,0,0,0,0};

for(i=1;i<=4;i++)

{

n[i]=n[i-1]*2+1;

printf("%d,",n[i]);

}

return0;

}

4.以下程序运行后的输出结果是(123)。

056

009

#include

intmain()

{

inti,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");

}

return0;

}

5.以下程序运行后的输出结果是(2650)。

#include

intmain()

{

inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};

printf("%d%d%d%d\n",a[0][4],a[1][2],a[2][1],a[3][0]);

return0;

}

四、程序设计题

1.求一个N*N矩阵对角线元素之和。

程序代码:

#include

#defineN5

floatsum(floata[N][N])

{

floats=0;

inti;

for(i=0;i

s=s+a[i][i];

returns;

}

intmain()

{

floata[N][N],s;

inti,j;

printf("请输入N*N个元素:

\n");

for(i=0;i

{

for(j=0;j

scanf("%f",&a[i][j]);

}

s=sum(a);

printf("对角线元素之和为%\n",s);

return0;

}

2.将一个数组首尾互换后输出。

程序代码:

#include

#defineN6

voidconv(inta[])

{

inti,temp;

for(i=0;i

{

temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

}

}

intmain()

{

inta[N]={11,9,8,2,1,0},i;

printf("\n交换前:

\n");

for(i=0;i

printf("%4d",a[i]);

conv(a);

printf("\n交换后:

\n");

for(i=0;i

printf("%4d",a[i]);

printf("\n");

return0;

}

3.输入N个整数,分析每个整数的每一位数字,求出现次数最多的数字。

//把数组的下标0-9,和数字0-9对应起来,数组元素作为出现的个数

#include

voidcount(inta[]);

#defineN5

intmain()

{

inti,d,gw,a[10]={0};

printf("请输入%d个整数:

\n",N);

for(i=0;i

{

scanf("%d",&d);

while(d>0)

{

gw=d%10;

d=d/10;

a[gw]++;

}

}

count(a);

return0;

}

voidcount(inta[])

{

inti,maxnum;

maxnum=a[0];

for(i=1;i<10;i++)//查找出现的最大次数

if(a[i]>maxnum)

maxnum=a[i];

printf("出现%d次数字有:

",maxnum);

for(i=0;i<10;i++)//查找出现次数最多的个位数字

if(a[i]==maxnum)

printf("%d",i);

printf("\n");

}

4.输入一个整数,输出每个数字对应的拼音。

当整数为负数时,先输出“fu”字。

程序代码:

#include

intwrite(intn);

intmain()

{

intn;

printf("请输入一个整数:

");

scanf("%d",&n);

if(n<0)

{

printf("fu");

n=-n;

}

write(n);

return0;

}

intwrite(intn)

{

chara[][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

intt,mask=1;

t=n;

while(t>=10)

{

t=t/10;

mask=mask*10;//得到位权

}

while(mask>0)

{

t=n/mask;//得到最高位的值

printf("%s",a[t]);

n=n%mask;//得到除最高位的值

mask=mask/10;

}

printf("\n");

return0;

}

5.一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3,找出100以内的所有完数。

程序代码:

#include

intwanshu(intt,intk[])

{

inti,s;

intflag=0;

k[10]=-1;

s=t;

for(i=1;i

{

if((t%i)==0)

{

k[10]++;

s=s-i;

k[k[10]]=i;

}

}

if(s==0)

{

flag=1;

}

returnflag;

}

intmain()

{

inti,j;

intk[11];

for(i=2;i<=100;i++)

{

if(wanshu(i,k))

{

printf("%d是一个完数,其因子是:

",i);

for(j=0;j

printf("%d,",k[j]);

printf("%d\n",k[k[10]]);

}

}

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1