C语言程序设计教程 第七章 课后习题参考答案.docx
《C语言程序设计教程 第七章 课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教程 第七章 课后习题参考答案.docx(20页珍藏版)》请在冰豆网上搜索。
C语言程序设计教程第七章课后习题参考答案
P1983求主、副对角线元素之和
#include
#defineM4
#defineN4
intmain()
{
inta[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
inti,j,m=0,n=0;
for(i=0;i{
for(j=0;j{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i{
for(j=0;j{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:
%d\n",m);
for(i=0;i{
for(j=0;j{
if(i+j==3)
n+=a[i][j];
}
}
printf("副对角线元素之和为:
%d\n",n);
return0;
}
P1984数组逆序存放
#include
voidinput(inta[],intn);
voidreverse(inta[],intn);
intmain()
{
inta[5];
intsize=sizeof(a)/sizeof(int);
input(a,size);
reverse(a,size);
printf("\n");
return0;
}
voidinput(inta[],intn)
{
inti;
printf("请输入%d个整数:
\n",n);
for(i=0;i{
scanf("%d",&a[i]);
}
}
voidreverse(inta[],intn)
{
inti,t;
for(i=0;i{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
for(i=0;i{
printf("%-3d",a[i]);
}
}
1984数组逆序存放
(2)
#include
voidreverse(inta[],intn);
voidprint(inta[],intn);
intmain()
{
inta[]={1,2,3,4,5,11,16,13};
intsize=sizeof(a)/sizeof(int);
print(a,size);
reverse(a,size);
printf("\n");
return0;
}
voidprint(inta[],intn)
{
inti;
printf("原:
\n");
for(i=0;i{
printf("%-4d",a[i]);
}
printf("\n");
}
voidreverse(inta[],intn)
{
intt,i;
printf("逆序:
\n");
for(i=0;i{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
#include
voidprint(inta[][3],introws,intcols);
intfun(inta[][3],introws,intclos);
voidmain()
{
inta[3][3],i,j;
printf("input:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
}
print(a,3,3);
if(fun(a,3,3)==0)
printf("此矩阵是对称矩阵\n");
else
printf("此矩阵不是对称矩阵\n");
}
voidprint(inta[][3],introws,intcols)
{
inti,j;
for(i=0;i{
for(j=0;jprintf("%-4d",a[i][j]);
printf("\n");
}
}
intfun(inta[][3],introws,intclos)
{
inti,j,x=0;
for(i=0;i{
for(j=0;j{
if(a[i][j]!
=a[j][i])x++;
}
}
if(x>0)return1;
elsereturn0;
}
P1985对称矩阵
(2)
#include
#defineM3
#defineN3
voidprint(inta[][N],intm,intn);
intyan(inta[][N],intm,intn);
intmain()
{
inta[][N]={1,2,3,4,5,6,7,8,9};
print(a,M,N);
if(yan(a,M,N))
printf("YES\n");
else
printf("NO\n");
return0;
}
voidprint(inta[][N],intm,intn)
{
inti,j;
for(i=0;i{
for(j=0;j{
printf("%-4d",a[i][j]);
}
printf("\n");
}
}
intyan(inta[][N],intm,intn)
{
inti,j,x=0;
for(i=0;i{
for(j=0;j{
if(a[i][j]!
=a[j][i])x++;
}
}
if(x>0)//不是对称矩阵
return0;
return1;
}
P1986矩阵求和
#include
#defineM3
#defineN3
voidinput(inta[][N],intm,intn);
voidsum(inta[][N],intb[][N],intm,intn);
voidprint(inta[][N],intm,intn);
intmain()
{
inta[M][N];
intb[M][N];
printf("请输入%d*%d阶矩阵A:
\n",M,N);
input(a,M,N);
print(a,M,N);
printf("请输入%d*%d阶矩阵B:
\n",M,N);
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return0;
}
voidinput(inta[][N],intm,intn)
{
inti,j;
for(i=0;i{
for(j=0;j{
scanf("%d",&a[i][j]);
}
}
}
voidprint(inta[][N],intm,intn)
{
inti,j;
for(i=0;i{
for(j=0;j{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
voidsum(inta[][N],intb[][N],intm,intn)
{
inti,j;
intc[M][N];
for(i=0;i{
for(j=0;j{
c[i][j]=a[i][j]+b[i][j];
}
}
print(c,M,N);
}
P1987模拟骰子投掷
#include
#include
#defineN10000
intmain()
{
inta[N],i;
doublex=0,y=0,z=0,l=0,m=0,n=0;
for(i=0;i{
a[i]=rand()%6+1;
if(a[i]==1)
x++;
if(a[i]==2)
y++;
if(a[i]==3)
z++;
if(a[i]==4)
l++;
if(a[i]==5)
m++;
if(a[i]==6)
n++;
}
printf("出现1的概率为:
%lf\n",x/N);
printf("出现2的概率为:
%lf\n",y/N);
printf("出现3的概率为:
%lf\n",z/N);
printf("出现4的概率为:
%lf\n",l/N);
printf("出现5的概率为:
%lf\n",m/N);
printf("出现6的概率为:
%lf\n",n/N);
return0;
}
P671最大奇、偶数
#include
#defineM10
intmain()
{
inti,a[M];
intmax1=-1,max2=-1;
for(i=0;i{
printf("请输入第%d个正整数:
",i+1);
scanf("%d",&a[i]);
}
for(i=0;i{
if(a[i]%2!
=0)
{
if(a[i]>max1)
max1=a[i];
}
else
{
if(a[i]>max2)
max2=a[i];
}
}
if(max1==-1)
printf("没有奇数\n");
else
printf("最大奇数是%d\n",max1);
if(max2==-1)
printf("没有偶数\n");
else
printf("最大偶数是%d\n",max2);
return0;
}
P693
#include
intmain()
{
inta[20];
intp=0,n=0,i,j=0;
doubleavg,sum=0;
printf("请输入非0整数:
");
while
(1)
{
scanf("%d",&a[j]);
if(a[j]==0)
break;
j++;
}
for(i=0;i{
sum=sum+a[i];
}
avg=sum/j;
printf("平均数:
%lf",avg);
for(i=0;i{
if(a[i]>0)
p++;
if(a[i]<0)
n++;
}
printf("正数个数:
%d负数个数:
%d\n",p,n);
return0;
}
P752冒泡排序
#include
#defineN10
voidbubble_sort(inta[],intn);
voidmain()
{
inti,a[N]={1,3,6,8,9,2,11,12,14,7};
printf("原数组为:
\n");
for(i=0;i{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
voidbubble_sort(inta[],intn)
{
inti,j,tmp;
for(i=0;i{
for(j=0;j{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
printf("\n");
printf("排序后的数组为:
\n");
for(i=0;i{
printf("%4d",a[i]);
}
}
P763成绩
#include
voidinput(intcla[50][3],intn);
voidprint(intcla[50][3],intn);
voidsort(intcla[50][3],intn);
voidmain()
{
intcla[50][3];
intn;
printf("请输入学生人数(小于50):
\n");
scanf("%d",&n);
if(n<=0||n>=50)
printf("error,请输入正确的人数。
\n");
else
{
input(cla,n);
print(cla,n);
}
}
voidinput(intcla[50][3],intn)
{
inti,j;
printf("请依次输入学生两门课成绩:
\n");
for(i=0;i{
for(j=0;j<2;j++)
scanf("%d",&cla[i][j]);
}
}
voidprint(intcla[50][3],intn)
{
inti,j;
printf("C++\t计算机基础\t总分\n");
for(i=0;icla[i][2]=cla[i][0]+cla[i][1];
sort(cla,n);
for(i=0;i{
for(j=0;j<3;j++)
{
printf("%d\t",cla[i][j]);
if(j==1)
printf("\t");
}
printf("\n");
}
}
voidsort(intcla[50][3],intn)
{
inti,j,a,b,c;
for(j=0;j{
for(i=0;i{
if(cla[i][2]{
a=cla[i][0];
cla[i][0]=cla[i+1][0];
cla[i+1][0]=a;
b=cla[i][1];
cla[i][1]=cla[i+1][1];
cla[i+1][1]=b;
c=cla[i][2];
cla[i][2]=cla[i+1][2];
cla[i+1][2]=c;
}
}
}
}
P764函数功能判断
#include
voidfun(inta[3][3],intb[3][3]);
intmain()
{
inti=0,j=0;
inta[3][3]={1,2,3,4,5,6,7,8,9};
intb[3][3];
fun(a,b);
if(b[i][j]==a[j][i])
printf("fun函数功能为矩阵转置\n");
return0;
}
voidfun(inta[3][3],intb[3][3])
{
inti,j;
printf("矩阵a为:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=a[j][i];
}
}
printf("矩阵b为:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%4d",b[i][j]);
}
printf("\n");
}
}