c语言第9章书后习题编程题Word文件下载.docx
《c语言第9章书后习题编程题Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言第9章书后习题编程题Word文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
![c语言第9章书后习题编程题Word文件下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/2/97aa91e1-ba6f-4dae-aebc-5d700c733595/97aa91e1-ba6f-4dae-aebc-5d700c7335951.gif)
i<
=9;
i++)
printf("
%d字符的个数:
%d\n"
i,a[i]);
}
9.28编写函数,对具有10个整数的数组进行如下操作:
从下标为n的元素开始直到最后一个元素,依次向前移动一个位置。
输出移动后的结果。
#include<
stdlib.h>
voidfun(inta[],intn,intm)//m代表数组的大小
{inti;
for(i=n;
m;
i++)a[i-1]=a[i];
i++)printf("
%d"
a[i]);
printf("
\n"
);
inta[10],n,i;
i++)//产生10个0~39的随机数,并输出
{a[i]=rand()%40;
scanf("
%d"
&
n);
//指定n的值
fun(a,n,10);
9.29编写函数,把数组中所有奇数放在另一个数组中返回。
voidfun(inta[],intb[],int*n)//n代表b数组有效数的多少
{inti,j=0;
10;
i++)
if(a[i]%2)b[j++]=a[i];
*n=j;
inta[10],b[10]={0},i,n;
fun(a,b,&
n;
b[i]);
9.30编写函数,对字符数组中的字母按由大到小的字母顺序进行排序。
voidfun(chara[],intn)//n代表a数组的大小
{inti,j;
n-1;
for(j=i+1;
j<
j++)
if(a[i]<
a[j])
{c=a[i];
a[i]=a[j];
a[j]=c;
chara[10],i=0,n;
while((a[i++]=getchar())!
i<
=9);
//排序前输出数组中字符
{putchar(a[i]);
fun(a,10);
//排序
//排序后输出数组中字符
%c"
9.31输入若干个有序数放在数组中。
然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。
请对插在最前,插在最后,插在中间三种情况运行程序,以便验证程序是否正确。
chara[10],i,n,m,j;
请输入有序数有多少个\n"
//n代表具体有多少个有序数,它应在1~9之间
请输入%d个有序数:
n);
i++)//输入若干个有序的数
{scanf("
a[i]);
请输入要插入的数:
"
m);
//输入要插入的数
//找位置
if(a[i]>
m)break;
//空出位置
for(j=n-1;
j>
=i;
j--)a[j+1]=a[j];
//插入数m
a[i]=m;
n++;
//输入后的数组元素
9.32编写函数,把任意十进制正整数转换成二进制数。
提示:
把十进制数不断被2除的余数放在一个一维数组中,直到商为零。
在主函数中进行输出,要求不得逆序输出。
voiddtob(intn,inta[],int*m)
{inti=0,r,j;
a[0]=n%2;
n=n/2;
while(n>
0)
{r=n%2;
//求余
for(j=i;
=0;
//所有数后移,空出最前面的位置
a[0]=r;
//放入新的余数
i++;
n=n/2;
*m=i+1;
inta[20],i,n,m;
请输入一个任意整数:
//n代表要转换的整数
dtob(n,a,&
//m存放转换后的二进制位数
//输出结果
%d<
====>
9.33编写函数,调用随机函数产生0~19之间的随机数,在数组中存入15个不重复的整数。
要求在主函数中进行输出结果。
voidfun(inta[],intn)
{inti=0,x,j;
{x=rand()%20;
//产生随机数
//看是否有与前a[0]到a[i-1]相同
for(j=0;
i;
if(a[j]==x)break;
if(j>
=i)a[i]=x;
elsei--;
inta[15],i,n=15;
fun(a,n);
15;
9.34求任意方阵每行、每列、两对角线上元素之和。
#defineN6
inta[N][N],i,j,sum;
//产生随机数放入方阵中,并显示
N;
{for(j=0;
{a[i][j]=rand()%10;
printf("
%3d"
a[i][j]);
}
//计算行和
{sum=0;
sum+=a[i][j];
第%d行的元素和:
i,sum);
//计算列和
for(j=0;
for(i=0;
第%d列的元素和:
j,sum);
//计算两条对角线上元素之和
sum=0;
sum+=a[i][i]+a[i][N-1-i];
if(N%2)sum-=a[N/2][N/2];
//奇数方阵时,有个元素同时在两条线上
对角线元素和:
sum);
9.35求两个矩阵的和。
inta[2][3],b[2][3],c[2][3],i,j;
//产生随机数放入矩阵a中,并显示
2;
3;
===========\n"
//产生随机数放入矩阵b中,并显示
{b[i][j]=rand()%10;
b[i][j]);
//计算矩阵和放入c数组中
{c[i][j]=a[i][j]+b[i][j];
c[i][j]);
9.36九九乘法表
inti,j;
**AMULTIPLICATIONTABLE**\n"
"
for(i=1;
(%d)"
i);
\n------------------------------------------------\n"
{printf("
(%d)"
for(j=1;
j++)printf("
%5d"
i*j);
------------------------------------------------\n"
9.37调用随机函数为5*4的矩阵置100以内的整数,输出该矩阵,求出每行元素的之和,并把和值最大的那一行与第一行上的元素对调。
inti,j,max,temp;
inta[5][4],b[5]={0};
5;
4;
{a[i][j]=rand()%100;
b[i]+=a[i][j];
//计算行和
max=0;
//找行和最大值
第%d行的行和为%d\n"
i,b[i]);
if(b[i]>
b[max])max=i;
//交换两行
if(max!
=0)
{temp=a[max][j];
a[max][j]=a[0][j];
a[0][j]=temp;
//输出交换后的矩阵
{printf("
}
9.38调用随机函数为5*5的矩阵置100以内的整数,输出该矩阵,然后逆置该矩阵。
inti,j,temp;
inta[5][5];
i++)//产生方阵并输出
//逆置:
下三角与上三角的数据交换,对角线不放在内
{temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
//输出逆置的方阵
===============\n"