第八章 C语言习题及答案第八章Word文档格式.docx

上传人:b****3 文档编号:17629559 上传时间:2022-12-07 格式:DOCX 页数:25 大小:22.99KB
下载 相关 举报
第八章 C语言习题及答案第八章Word文档格式.docx_第1页
第1页 / 共25页
第八章 C语言习题及答案第八章Word文档格式.docx_第2页
第2页 / 共25页
第八章 C语言习题及答案第八章Word文档格式.docx_第3页
第3页 / 共25页
第八章 C语言习题及答案第八章Word文档格式.docx_第4页
第4页 / 共25页
第八章 C语言习题及答案第八章Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

第八章 C语言习题及答案第八章Word文档格式.docx

《第八章 C语言习题及答案第八章Word文档格式.docx》由会员分享,可在线阅读,更多相关《第八章 C语言习题及答案第八章Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

第八章 C语言习题及答案第八章Word文档格式.docx

max=%d,a[%d]\n"

max,d_max);

min=%d,a[%d]\n"

min,d_min);

运行结果:

max=93,a[9]

Min=3,a[1]

数组a[i]中i的变化意味着什么?

8-3编写程序,从键盘读入50个数存放于一数组中,求出该数组中最大值、最小值及所在位置。

解:

floata[50],max,min;

inti,d_max,d_min;

50;

scanf("

%f"

&

a[i]);

}

思考:

此题中不用数组也可以处理吗?

如果可以,区别之处在哪里?

8-4将存放于上题数组中的50个数分别按升序,降序排序。

#defineN3

floata[N],t;

inti,j;

for(i=0;

N;

/*按升序排序*/

{

for(j=i;

j<

j++)

if(a[i]>

a[j]){t=a[i];

a[i]=a[j];

a[j]=t;

%8.2f"

a[i]);

\n"

);

/*按升序排序*/

此题中可以不用数组进行处理吗?

(进一步理解数组的特点。

8-5编写程序,从键盘输入某班学生C语言课程考试成绩,评定每个学生C语言成绩等级。

如果高于平均分10分,则等级为优秀;

如果低于平均分10分,则等级为一般;

否则等级为中等。

inti,j;

floataverage,a[N],sum=0;

scanf("

a[i]);

sum=sum+a[i];

average=sum/N;

average+10)printf("

a[%d]优秀\n"

i);

elseif(a[i]<

average-10)printf("

a[%d]一般\n"

elseprintf("

a[%d]中等\n"

表示数组元素的a[i]一般称为什么变量?

它与一般变量有何区别?

8-6某班期终考试有六门课程,编写程序计算每门课程的平均成绩。

进一步考虑全年级10个班的情况。

#defineN30

#defineM6

inti,j;

floataverage[M],a[N][M],sum=0;

for(j=0;

M;

a[i][j]);

sum=0;

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

average[j]=sum/N;

6门课程的平均成绩分别为:

%f"

average[i]);

}

);

在此题中定义的数组a[N][M]中,N表示什么?

M表示什么?

若考虑全年级10个班的情况,程序应做哪些改进?

8-7编写程序,将一个一维数组进行逆制。

例如,原来顺序为1,3,5,7,则逆置后的顺序为7,3,5,1.

#defineN4

voidfun(inta[])

inti,t;

N/2;

t=a[i];

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

a[N-1-i]=t;

}

for(i=0;

%d"

a[i]);

inti,a[N];

请输入一维数组各元素的值:

fun(a);

如果要对7个元素的数组进行逆置操作,只需要修改什么地方?

数组的元素的可以是算术表达式吗?

有何要求?

8-8编写程序,打印如下的杨辉三角形。

1

11

121

1331

14641

#defineN6

inti,j,a[N][N]={1},k;

for(j=1;

if(j==1||i==j)a[i][j]=a[0][0];

elsea[i][j]=a[i-1][j-1]+a[i-1][j];

for(i=1;

for(k=1;

k<

=N-i;

k++)/*每行前面的空格*/

"

for(j=1;

=i;

%4d"

a[i][j]);

}

在此题中定义一个a[N][N]的方阵数组显然有些浪费(有些元素闲置,却占用存储空间),可否考虑用一维数组进行处理?

8-9编写程序,用筛选法求100-1000之间的素数。

#defineN1000

inti,a[N],n=0,db;

a[i]=1;

for(i=2;

if(a[i]==0)continue;

db=i*2;

while(db<

N)

a[db]=0;

db=db+1;

for(i=100;

if(a[i==1])

n++;

if(n%18==0)printf("

在程序实际已求出了什么范围之间的所有素数?

在while循环中的“a[db]=0;

”语句的作用是什么了?

8-10编写程序,利用数组实现大整数的加减运算。

假定大整数不超过10位数字。

string.h"

#defineN10

inta[N],b[N],c[N],d[N],jw=0;

intflag=1;

/*标志两个大整数的大小关系*/

voidchag0(inta[],intn)

for(inti=0;

=n;

a[i]=0;

voidadd()/*求两个大整数的和*/

inti;

c[i]=(a[i]+b[i]+jw)%10;

jw=(a[i]+b[i]+jw)/10;

//计算进位

}

jw=0;

printf("

两数和为:

"

);

for(i=N-1;

i>

=0;

i--)

if(!

c[i]&

&

!

jw)

continue;

else

c[i]);

jw=1;

}

voidmus()/*求两个大整数的差*/

jw=0;

if(a[i]-jw>

=b[i])

d[i]=a[i]-b[i]-jw;

//表示无借位

//表示有借位

两数差为:

flag)printf("

-"

d[i]&

jw)continue;

else{printf("

d[i]);

jw=1;

inti,n1,n2;

chg0(a,N);

chg0(b,N);

chg0(c,N);

chg0(d,N);

chars1[N],s2[N];

请输入加数(减数):

scanf("

%s"

s1);

请输入被加数(被减数):

s2);

n=strlen(s1);

n=strlen(s2);

if(n1>

n2||(n1==n2&

strcmp(s1,s2)>

=0))

=n1;

a[i]=s1[n1-i-1]-48;

=n2;

a[i]=s2[n2-i-1]-48;

b[i]=s1[n1-i-1]-48;

b[i]=s2[n2-i-1]-48;

flag=0;

add();

mus();

此程序中变量的jw的作用什么?

他在函数add()与mus()中的作用一样吗?

判断式“if(!

jw)”为真时是什么情况?

将大整数以字符串的形式进行输入的好处是什么?

8-11编写程序,从键盘输入两个4x4的矩阵A和B,求出它们的和、差、积,并按矩阵的形式输出。

inta[4][4],b[4][4],c[4][4],i,j;

=4;

for(j=0;

4;

b[i][j]);

c[i][j]=a[i][j]+b[i][j];

c[i][j]);

此程序只完成了矩阵A与B的求和计算过程(求差的过程略),求A与B的乘积应对上面四个二重循环中哪个进行处理?

二重循环是否能满足矩阵乘积计算过程的需要?

8-12编写程序,将一个二维数组的行列互换,并考虑用函数实现。

#defineM4

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

请输入二维数组(%d行%d列):

M,N);

at[i][j]=a[j][i];

输出行列互换后的二维数组(%d行%d列):

N,M);

at[i][j]);

此程序中的关键语句是什么?

若考虑用函数实现,哪些内容放到函数中的通用性比较好?

8-13编写程序,找出一个二维数组中的鞍点,即该位置上的元素在该行上的最大、在该列上最小。

#defineN3/*设二维数组为3行3列*/

#defineM3

inti,j,a[N][M],max_min,k,flag=0;

请输入数组的个元素值:

a[i][j]);

i++)/*显示数组*/

k=0;

max_min=a[i][0];

if(max_min<

a[i][j]){max_min=a[i][j];

k=j;

if(max_min>

a[j][k])break;

if(j==M)

flag=1;

\n满足条件的元素为第%d行第%d列的:

%d\n"

i+1,k+1,max_min);

if(flag!

=1)printf("

\n没有满足条件的元素!

此题是否会出现两个以上同时满足条件的元素?

为什么?

8-14编写程序,输入一行字符,统计其中共有多少个单词,单词之间用空格分隔开。

#defineN100

chara[N],i,num=0;

请输入一行字符串(不超过100个):

gets(a);

a[i]!

='

\0'

;

if(a[i]=='

'

num++;

while(a[i++]=='

/*处理连续空格的情况*/

该行字符串有%d个单词:

num+1);

对语句“while(a[i++]==‘’);

”你是如何理解的?

它的循环体是什么?

是否还可以出其它形式?

8-15有一篇文章,共10行,每行有80个字符。

编写程序,统计其中大写字母、小写字母、数字、空格及其它字符各有多少个。

chara[10][80],i,j,num[5]={0,0,0,0,0};

请输入各行字符(每行不超过80个):

gets(a[i++]));

a[i][j]!

j++)

if(a[i][j]>

A'

a[i][j]<

Z'

)num[0]++;

elseif(a[i][j]>

a'

z'

)num[1]++;

0'

9'

)num[2]++;

elseif(a[i][j]=='

)num[3]++;

elsenum[4]++;

给文有大写字母%d个\n"

num[0]);

给文有小写字母%d个\n"

num[1]);

给文有数字字符%d个\n"

num[2]);

给文有空格%d个\n"

num[3]);

其它字符有%d个\n"

num[4]);

在循环结构中嵌套if结构时应该注意哪些问题?

if结构中是否也可以嵌套循环结构。

8-16编写程序,分别实现字符串复制函数strcpy()、字符串比较函数strcmp()的功能。

voidMy_strcpy(charx[],chary[])

inti=0;

while(x[i]!

y[i]=x[i];

i++;

y[i]='

;

intMy_strcmp(charx[],chary[])

inti=0;

||y[i]!

if(y[i]!

=x[i])return0;

i++;

if(x[i]!

)return0;

return1;

chara[N],b[N];

请输入源字符串a(<

100个字符):

gets(a);

My_strcpy(a,b);

目标字符串b为:

%s\n"

b);

请输入比较字符串a(<

gets(b);

if(My_strcmp(a,b))printf("

a,b两字符串相等!

elseprintf("

a,b两字符串不相等!

C语言在字符串的处理过程中,“\0”的作用是什么?

是如何

8-17有一行电文,已按下面的规律译成密码:

A→Za→zB→Yb→yC→Xc→x,.....

即第一个字母变成第26个字母,第i个字母变成第26-i+1个字母。

非字母字符不变。

编写程序将密码译回原文,并输出密码和原文。

#include"

#defineN50

#defineM20

inti,j,n=0;

charcname[N][M],tran[N];

请输入国家名称(<

50个且每个名称不超过20个字符,当第一个字符为空格是结束):

gets(cname[i]);

if(cname[i][0]=='

)break;

n++;

n-1;

for(j=i+1;

n;

if((strmp(cname[i],cname[j]))>

0)

strcpy(tran,cname[i]);

strcpy(cname[i],cname[j]);

strcpy(cname[j],tran);

按字典顺序排序后为:

puts(cname[i]);

语句“if(cname[i][0]==‘‘)break;

”的作用是什么?

若无此语句,程序运行将会出现什么状况。

8-19若A为nxn对称方阵,将A压缩存放到一维数组B中,使B具有n(n+1)/2个元素,且A中信息可全部在B中找到。

#defineN5

#defineMN*(N+1)/2/*用宏处理一维数组的动态小标,内容参见第12章*/

inta[N][N],b[M],i,j,k;

请输入方阵A的值:

for(i=1;

i++)/*为了易于方阵小标的对应理解,此处弃掉0行0列*/

for(j<

1;

%

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

当前位置:首页 > 高等教育 > 院校资料

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

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