单元6 数组课堂实践答案
1.课堂实践6-1
编写程序求含有N个元素一维数组的最大值、最小值及它们的下标。要求:数组元素的输入、求最大值最小值及它们的下标通过函数实现,结果在主函数中输出。
程序代码:
#include "stdio.h"
#define N 5
void Input(int b[N]);
void Max(int b[N],int max[2]);
void Min(int b[N],int min[2]);
int main()
{
int a[N],min[2],max[2];
Input(a);
Max(a,max);
Min(a,min);
printf("数组元素的最大值为:%d,下标为:%d\n",max[0],max[1]);
printf("数组元素的最小值为:%d,下标为:%d\n",min[0],min[1]);
return 0;
}
void Input(int b[N])
{//输入N个整数
int i;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
}
void Max(int b[N],int max[2])
{//求最大值及下标
int i;
max[0]=b[0];max[1]=0;
for(i=1;i<N;i++)
{
if(b[i]>max[0])
{
max[0]=b[i];max[1]=i;
}
}
}
void Min(int b[N],int min[2])
{//求最小值及下标
int i;
min[0]=b[0];min[1]=0;
for(i=1;i<N;i++)
{
if(b[i]<min[0])
{
min[0]=b[i];min[1]=i;
}
}
}
2.课堂实践6-2
将冒泡排序函数中控制趟数和每趟比较次数的初值均从0改为1,修改函数并实现降序排序。
程序代码:
#include "stdio.h"
#define N 10
void Input(int b[N])
{//输入函数
int i;
printf("请输入%d个整数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
}
void BubbleSort(int b[N])
{//冒泡排序函数
int i,j,t;
for(i=1;i<N;i++)
{ //外层循环控制趟数
for(j=1;j<N-i+1;j++)
{ //内层循环控制每趟的比较次数
if(b[j-1]<b[j])
{
t=b[j];
b[j]=b[j-1];
b[j-1]=t;
}
}
}
}
void Print(int b[N])
{//输出函数
int i;
for(i=0;i<N;i++)
{
if(i%10==0)
printf("\n");
printf("%6d",b[i]);
}
printf("\n");
}
int main()
{
int a[N];
Input(a);
printf("排序前:");
Print(a);
BubbleSort (a);
printf("排序后:");
Print(a);
return 0;
}
3.课堂实践6-3
把m×n矩阵A的第i行变成第i列(i=1,2,…,m)得到的n×m矩阵称为矩阵A的转置矩阵,记为AT。编写程序求一个矩阵的转置矩阵,求得结果在主函数中输出。
程序代码:
#include "stdio.h"
#define M 3
#define N 4
void trans(int a[M][N],int b[N][M])
{
int i,j;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
b[j][i]=a[i][j];
}
void Input(int b[M][N])
{
int i,j;
printf("请输入%d个整数:\n",M*N);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);
}
void print1(int b[M][N])
{
c语言数组最大值最小值 int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%4d\t",b[i][j]);
printf("\n");
}
}
void print2(int b[N][M])
{
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%4d\t",b[i][j]);
printf("\n");
}
}
int main()
{
int A[M][N],B[N][M];
Input(A);
printf("转置前的矩阵为:\n");
print1(A);
trans(A,B);
printf("转置后的矩阵为:\n");
print2(B);
return 0;
}
4.课堂实践6-4
由键盘任意输入N个国家的英文名称,按英语词典规律(升序)排序后输出。
程序代码:
#include <stdio.h>
#include <string.h>
#define N 5
void sort(char str[][80])
{
char t[80];
int i,j;
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(strcmp(str[j],str[j+1])>0)
{
strcpy(t,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],t);
}
}
}
}
void showstr(char str[][80])
{
int i;
for(i=0;i<N;i++)
{
puts(str[i]);
}
}
int main()
{
char str[N][80];
int i;
printf("请输入%d个国家的英文名称:\n",N);
for(i=0;i<N;i++)
{
gets(str[i]);
}
sort(str);
printf("排序后国家的英文名称:\n",N);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论