C语言第7章习题及实验参考答案~1
第7章习题及参考答案
1. 编程,从键盘上输入n个整数,按逆序输出这些数。
参考程序:
#include
#define N 5
void main()
{
int i,t,a[N];
for(i=0;i<n;i++)< p="">
scanf("%d",&a[i]);
c语言数组最大值最小值
for(i=0;i<n;i++)< p="">
printf("%5d ",a[i]);
printf("\n");
for(i=0;i<="" p="">
{
t=a[i];
a[i]=a[N-i-1];
a[N-i-1]=t;
}
for(i=0;i<n;i++)< p="">
printf("%5d ",a[i]);
}
2. 编程,已知某同学某门课程的平时、实习、测验和期末成绩,求该同学该门课程的总评成绩。其中,平时、实习、测验和期末分别占10%、20%、20%、50%。
参考程序:
#include
void main()
{
int i ;
float tot,a[4];
for(i=0;i<4;i++)
scanf("%f",&a[i]);
tot=0.1*a[0]+0.2*a[1]+0.2*a[2]+0.5*a[3];
printf("%f ",tot);
}
3. 编程,输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。
参考程序:
# include "stdio.h"
#define N 10
void main()
{
int term[N];
int i,max,min;
for(i=1;i<n,i++)< p="">
scanf("%d",&term[i]);
max=0;
min=0;
for(i=1;i<10;i++)
{
if (term[i]< term[min])
min=i;
if (term[i]> term[max])
max=i;
}
if(term[min]!=term[0])
{ t=term[min]; term[min]= term[0]; term[0]=t;}
if(term[max]!=term[N-1])
{ t=term[max]; term[max]= term[N-1]; term[N-1]=t;}
for(i=1;i<n,i++)< p="">
printf("%d",trem[i]);
}
4. 编程,已有一个已排好序的数组(由小到大),今输入另一个数,要求仍然有序。参考程序:
#include"stdio.h"
void main()
{int i,s,x,a[11]={3,8,12,18,24,54,76,84,89,106};
printf("input number x:");
scanf("%d",&x);
for(i=0;i<10;i++)
if(x<a[i])< p="">
{for(s=9;s>=i;s--)
a[s+1]=a[s];
break;
}
a[i]=x;
for(i=0;i<=10;i++)
printf("%5d ",a[i]);
}
5. 编程,有一个3 4的矩阵,出其中最小的那个元素,以及它所在的行和列。
参考程序:
#include
void main()
{ int a[3][4]={{1,2,3,4}, {9,8,7,6}, {-10,10,-5,2}};
int i,j,row=0,colum=0,min;
min=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]<min)< p="">
{ min=a[i][j];
row=i;
colum=j;
}
printf("min=%d,row=%d, colum=%d\n",min,row+1,colum+1);
}
6. 编程,输出一个3行4列(记作3 4)矩阵A的转置矩阵A T(行列互换)。参考程序:
#include
void main()
{ int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int b[4][3],i,j;
printf("array a:\n");
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<4;i++)
{ for(j=0;j<3;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
7. 编程,求3×3矩阵的主对角线上元素之和。
参考程序:
#include
void main()
{
int a[3][3],i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum=sum+a[i][j];
printf("sum=%d\n",sum);
}
8. 编程,求6×6矩阵下三角形元素之和。
参考程序:
#include
void main()
{
int a[6][6],i,j,sum=0;
for(i=0;i<6;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
for(i=0;i<=5;i++)
for(j=5;j>=5-i;j--)
sum=sum+a[i][j];
printf("sum=%d\n",sum);
}
9. 编程,输入一个字符串,然后以反序输出。参考程序:
#include
#include
main()
{ char c[20];
int i;
printf("Input a string:\n");
gets(c);
printf("The reverse of string:\n");
for(i=strlen(c)-1;i>=0;i--)
printf("%c", c[i]);