一串数字 排序 冒泡排序法
找最大值最小值 打擂台算法
1.输入10个数,要求输出其中值最大的元素和该数是第几个数。
#include<stdio.h>
int main()
{
int max(int x,int y);//函数声明
int a[10],i;
int m,n,c,p;//m:最大值 n:a[0]下标 c:max函数返回值 p:最大值的下标
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//数组初始化
printf("\n");
for(i=1,m=a[0],n=1;i<10;i++)
{
c=max(m,a[i]);//函数调用
if(c>m)
{
m=a[i];
p=i;
}
}
printf("最大值为:%d\n是第%d个数\n",m,p+1);
return 0;
}
int max(int x,int y)
{
return x>y?x:y;//输出x,y中的较大者
}
2.有一个一维数组score,内放10个学生成绩,求平均成绩。
#include<stdio.h>
int main()
{
//有一个一维数组score,内放10个学生成绩,求平均成绩
float score[10];
float aver;//平均成绩
int i;
printf("请输入10个学生成绩:\n");
for(int i=0;i<10;i++)
scanf("%f",&score[i]);//成绩输入到数组
float sum=0;
for(i=0;i<10;i++)
{
sum=sum+score[i];
aver=sum/10;
}
printf("平均成绩为:%5.2f\n",aver);
return 0;
}
或者通过,调用函数,数组名作函数参数解决
#include<stdio.h>
int main()
{
//有一个一维数组score,内放10个学生成绩,求平均成绩
float average(float array[10]);//函数声明
float score[10],aver;
printf("input 10 scores:\n");
for(int i=0;i<10;i++)
scanf("%f",&score[i]);
//初始化数组
printf("\n");
aver=average(score);//函数调用
printf("average score is %f",aver);
return 0;
}
float average(float array[10])//函数定义
{
int i;
float sum=0;
for(i=0;i<10;i++)
sum=sum+array[i];
return (sum/10);
}
3.用选择法对数组中10个整数按由小到大排序。(冒泡排序法)
#include<stdio.h>
int main()
{
//用选择法对数组中10个整数按由小到大排序。
int a[10];
int i,j;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);//输入10个整数
for(i=0;i<10;i++) //10个数,比较9轮
for(j=0;j<10-i-1;j++)//每轮比较9-i次
{
if(a[j]>a[j+1])//将较大数放到后面
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
printf("结果由小到大排序:\n");
for(i=0;i<10;i++)
printf("%d\t",a[i]);//输出排序结果
return 0;
}
4.有一个3×4的矩阵,求所有元素中的最大值。(打擂台算法)
#include<stdio.h>
int main()
{
//有一个3×4的矩阵,求所有元素中的最大值。
int max_value(int array[3][4]);//函数声明
int a[3][4]={{1,2,3,4},{2,4,6,8},{3,9,12,20}};//初始化
int m=max_value(a);//函数调用,m保存
printf("最大值为:%d\n",m);
return 0;
}
int max_value(int array[3][4])//函数定义
{
int i,j,max;
max=array[0][0];
for(i=0;i<3;i++) //打擂台算法
for(j=0;j<4;j++)
{
if(array[i][j]>max)
max=array[i][j];
}
return max;
}