C语言程序设计教程 第七章 课后习题参考答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
for(j=0;j<N;j++)
{
if(i+j==3)
n+=a[i][j];
}
}
printf("副对角线元素之和为:%d\n",n);
return 0;
}
P1984数组逆序存放
#include<stdio.h>
void input(int a[],int n);
void reverse(int a[],int n);
n++;
}
printf("正数个数:%d负数个数:%d\n",p,n);
return 0;
}
P752冒泡排序
#include<stdio.h>
#define N 10
void bubble_sort(int a[],int n);
voidmain()
{
int i,a[N]={1,3,6,8,9,2,11,12,14,7};
{
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<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
for(i=0;i<M;i++)
printf("出现6的概率为:%lf\n",n/N);
return 0;
}
P671最大奇、偶数
#include<stdio.h>
#define M 10
int main()
{
int i,a[M];
intmax1=-1,max2=-1;
for(i=0;i<M;i++)
{
printf("请输入第%d个正整数:",i+1);
int main()
{
int a[N],i;
double x=0,y=0,z=0,l=0,m=0,n=0;
for(i=0;i<N;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)
printf("error,请输入正确的人数。\n");
else
{
input(cla,n);
print(cla,n);
}
}
void input(int cla[50][3],int n)
{
int i,j;
printf("请依次输入学生两门课成绩:\n");
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return 0;
}
void input(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
{
if(a[i][j]!=a[j][i]) x++;
}
}
if(x>0)//不是对称矩阵
return 0;
return 1;
}
P1986矩阵求和
#include<stdio.h>
#define M 3
#define N 3
void input(int a[][N],int m,int n);
void sum(int a[][N],int b[][N],int m, int n);
}
}
1984数组逆序存放(2)
#include<stdio.h>
void reverse(int a[],int n);
void print(int a[],int n);
int main()
{
int a[]={1,2,3,4,5,11,16,13};
int size=sizeof(a)/sizeof(int);
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);
scanf("%d",&a[i]);
}
for(i=0;i<M;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);
scanf("%d",&cla[i][j]);
}
}
void print(int cla[50][3],int n)
{
int i,j;
printf("C++\t计算机基础\t总分\n");
for(i=0;i<n;i++)
cla[i][2]=cla[i][0]+cla[i][1];
sort(cla,n);
int main()
{
int a[5];
int size=sizeof(a)/sizeof(int);
input(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void input(int a[],int n)
{
int i;
printf("请输入%d个整数:\n",n);
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%-4d",a[i][j]);
}
printf("\n");
}
}
int yan(int a[][N],int m,int n)
{
int i,j,x=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
while(1)
{
scanf("%d",&a[j]);
if(a[j]==0)
break;
j++;
}
for(i=0;i<j;i++)
{
sum=sum+a[i];
}
avg=sum/j;
printf("平均数:%lf",avg);
for(i=0;i<j;i++)
{
if(a[i]>0)
p++;
if(a[i]<0)
void print(int a[][N],int m,int n);
int main()
{
int a[M][N];
int b[M][N];
printf("请输入%d*%d阶矩阵A:\n",M,N);
input(a,M,N);
print(a,M,N);
printf("请输入%d*%d阶矩阵B:\n",M,N);
int yan(int a[][N],int m,int n);
int main()
{
int a[][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");
return 0;
}
void print(int a[][N],int m,int n)
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}
void reverse(int a[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
for(i=0;i<n;i++)
{
printf("%-3d",a[i]);
if(max2==-1)
printf("没有偶数\n");
else
printf("最大偶数是%d\n",max2);
return 0;
}
P693
#include<stdio.h>
int main()
{
int a[20];
int p=0,n=0,i,j=0;
double avg,sum=0;
printf("请输入非0整数:");
void print(int cla[50][3],int n);
void sort(int cla[50][3],int n);
void main()
{
int cla[50][3];
int n;
printf("请输入学生人数(小于50):\n");
scanf("%d",&n);
if(n<=0 || n>=50)
{
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");
}
void print(int a[][3],int rows,int cols)
}
void reverse(int a[],int n)
{
int t,i;
printf("逆序:\n");
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
{
int i,j;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
intfun(int a[][3],int rows,int clos)
{
int i,j,x=0;
for(i=0;i<rows;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
for(i=0;i<M;i++)
printf("原数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
void bubble_sort(int a[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
#include<stdio.h>
void print(int a[][3],int rows,int cols);
intfun(int a[][3],int rows,int clos);
void main()
{
int a[3][3],i,j;
printf("input:\n");
for(i=0;i<3;i++)
}
}
}
void print(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
void sum(int a[][N],int b[][N],int m,int n)
{
int i,j;
int c[M][N];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
print(c,M,N);
}
P1987模拟骰子投掷
#include<stdio.h>
#include<stdlib.h>
#define N 10000
for(i=0;i<n;i++)
{
for(j=0;j<clos;j++)
{
if(a[i][j]!=a[j][i]) x++;
}
}
if(x>0)return 1;
elsereturn 0;
}
P1985对称矩阵(2)
#include<stdio.h>
#define M 3
#define N 3
void print(int a[][N],int m,int n);
print(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void print(int a[],int n)
{
int i;
printf("原:\n");
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(j=0;j<N;j++)
{
if(i+j==3)
n+=a[i][j];
}
}
printf("副对角线元素之和为:%d\n",n);
return 0;
}
P1984数组逆序存放
#include<stdio.h>
void input(int a[],int n);
void reverse(int a[],int n);
n++;
}
printf("正数个数:%d负数个数:%d\n",p,n);
return 0;
}
P752冒泡排序
#include<stdio.h>
#define N 10
void bubble_sort(int a[],int n);
voidmain()
{
int i,a[N]={1,3,6,8,9,2,11,12,14,7};
{
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<N;i++)
{
printf("%4d",a[i]);
}
}
P76 3成绩
#include<stdio.h>
void input(int cla[50][3],int n);
P198 3求主、副对角线元素之和
#include<stdio.h>
#define M 4
#define N 4
int main()
{
int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int i,j,m=0,n=0;
for(i=0;i<M;i++)
printf("出现6的概率为:%lf\n",n/N);
return 0;
}
P671最大奇、偶数
#include<stdio.h>
#define M 10
int main()
{
int i,a[M];
intmax1=-1,max2=-1;
for(i=0;i<M;i++)
{
printf("请输入第%d个正整数:",i+1);
int main()
{
int a[N],i;
double x=0,y=0,z=0,l=0,m=0,n=0;
for(i=0;i<N;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)
printf("error,请输入正确的人数。\n");
else
{
input(cla,n);
print(cla,n);
}
}
void input(int cla[50][3],int n)
{
int i,j;
printf("请依次输入学生两门课成绩:\n");
for(i=0;i<n;i++)
{
for(j=0;j<2;j++)
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return 0;
}
void input(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
{
if(a[i][j]!=a[j][i]) x++;
}
}
if(x>0)//不是对称矩阵
return 0;
return 1;
}
P1986矩阵求和
#include<stdio.h>
#define M 3
#define N 3
void input(int a[][N],int m,int n);
void sum(int a[][N],int b[][N],int m, int n);
}
}
1984数组逆序存放(2)
#include<stdio.h>
void reverse(int a[],int n);
void print(int a[],int n);
int main()
{
int a[]={1,2,3,4,5,11,16,13};
int size=sizeof(a)/sizeof(int);
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);
scanf("%d",&a[i]);
}
for(i=0;i<M;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);
scanf("%d",&cla[i][j]);
}
}
void print(int cla[50][3],int n)
{
int i,j;
printf("C++\t计算机基础\t总分\n");
for(i=0;i<n;i++)
cla[i][2]=cla[i][0]+cla[i][1];
sort(cla,n);
int main()
{
int a[5];
int size=sizeof(a)/sizeof(int);
input(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void input(int a[],int n)
{
int i;
printf("请输入%d个整数:\n",n);
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%-4d",a[i][j]);
}
printf("\n");
}
}
int yan(int a[][N],int m,int n)
{
int i,j,x=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
while(1)
{
scanf("%d",&a[j]);
if(a[j]==0)
break;
j++;
}
for(i=0;i<j;i++)
{
sum=sum+a[i];
}
avg=sum/j;
printf("平均数:%lf",avg);
for(i=0;i<j;i++)
{
if(a[i]>0)
p++;
if(a[i]<0)
void print(int a[][N],int m,int n);
int main()
{
int a[M][N];
int b[M][N];
printf("请输入%d*%d阶矩阵A:\n",M,N);
input(a,M,N);
print(a,M,N);
printf("请输入%d*%d阶矩阵B:\n",M,N);
int yan(int a[][N],int m,int n);
int main()
{
int a[][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");
return 0;
}
void print(int a[][N],int m,int n)
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}
void reverse(int a[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
for(i=0;i<n;i++)
{
printf("%-3d",a[i]);
if(max2==-1)
printf("没有偶数\n");
else
printf("最大偶数是%d\n",max2);
return 0;
}
P693
#include<stdio.h>
int main()
{
int a[20];
int p=0,n=0,i,j=0;
double avg,sum=0;
printf("请输入非0整数:");
void print(int cla[50][3],int n);
void sort(int cla[50][3],int n);
void main()
{
int cla[50][3];
int n;
printf("请输入学生人数(小于50):\n");
scanf("%d",&n);
if(n<=0 || n>=50)
{
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");
}
void print(int a[][3],int rows,int cols)
}
void reverse(int a[],int n)
{
int t,i;
printf("逆序:\n");
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
}
P1985对称矩阵
{
int i,j;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
printf("%-4d",a[i][j]);
printf("\n");
}
}
intfun(int a[][3],int rows,int clos)
{
int i,j,x=0;
for(i=0;i<rows;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
if(i==j)
m+=a[i][j];
}
}
printf("主对角线元素之和为:%d\n",m);
for(i=0;i<M;i++)
printf("原数组为:\n");
for(i=0;i<N;i++)
{
printf("%4d",a[i]);
}
bubble_sort(a,N);
printf("\n");
}
void bubble_sort(int a[],int n)
{
int i,j,tmp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
#include<stdio.h>
void print(int a[][3],int rows,int cols);
intfun(int a[][3],int rows,int clos);
void main()
{
int a[3][3],i,j;
printf("input:\n");
for(i=0;i<3;i++)
}
}
}
void print(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
void sum(int a[][N],int b[][N],int m,int n)
{
int i,j;
int c[M][N];
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
print(c,M,N);
}
P1987模拟骰子投掷
#include<stdio.h>
#include<stdlib.h>
#define N 10000
for(i=0;i<n;i++)
{
for(j=0;j<clos;j++)
{
if(a[i][j]!=a[j][i]) x++;
}
}
if(x>0)return 1;
elsereturn 0;
}
P1985对称矩阵(2)
#include<stdio.h>
#define M 3
#define N 3
void print(int a[][N],int m,int n);
print(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void print(int a[],int n)
{
int i;
printf("原:\n");
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
printf("\n");