思维导图
1、定义3行5列的二维数组,循环输入,循环输出,计算和,平均值
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a[3][5];//
int i,j;//行,列
int sum=0;//求和
float average;//平均值
printf("Please enter an array:\n");
for(i=0;i<3;i++)//输入
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("Array output result\n");
for(i=0;i<3;i++)//输出
{
for(j=0;j<5;j++)
{
printf("%-5d",a[i][j]);
}
printf("\n");
}
for(i=0;i<3;i++) //求和
{
for(j=0;j<5;j++)
{
sum+=a[i][j];
}
}
printf("sum=%d\n",sum);
average=(float)sum/15;
printf("average=%.2f\n",average);
return 0;
}
运行结果:
定义3行5列的二维数组,循环输入,计算最大值
#include<stdio.h>
int main(int argc, const char *argv[])
{
int a[3][5];//
int i,j;//行,列
printf("Please enter an array:\n");
for(i=0;i<3;i++)//输入
{
for(j=0;j<5;j++)
{
scanf("%d",&a[i][j]);
}
}
int max=a[0][0];
for(i=0;i<3;i++)//判断
{
for(j=0;j<5;j++)
{
if(max<a[i][j])
{
max=a[i][j];
}
}
}
printf("max=%d\n",max);
return 0;
}
运行效果:
冒泡和简单选择写2遍
升序
#include<stdio.h>
int main(int argc, const char *argv[])
{
int t;
int a[5]={5,4,3,2,1};
printf("原来数组为:");
for(int i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
for(int j=1;j<5;j++)
{
for(int i=0;i<5-j;i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
printf("升序排列为:");
for(int i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
return 0;
}
运行效果:
降序
#include<stdio.h>
int main(int argc, const char *argv[])
{
int t;
int a[5]={1,2,3,4,5};
printf("原来数组为:");
for(int i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
for(int j=1;j<5;j++)
{
for(int i=0;i<5-j;i++)
{
if(a[i]<a[i+1])
{
t=a[i+1];
a[i+1]=a[i];
a[i]=t;
}
}
}
printf("降序排列为:");
for(int i=0;i<5;i++)
{
printf("%2d",a[i]);
}
printf("\n");
return 0;
}
运行效果:
选择排序:
升序
#include<stdio.h>
void main()
{
int n=5;
int t;
int arr[5]={5,4,3,2,1};
printf("原来数组为:");
for(int i=0;i<5;i++)
{
printf("%2d",arr[i]);
}
printf("\n");
for(int i=0;i<n-1;i++) //循环轮数
{
int min=i;
for(int j=i+1;j<n;j++)
{
if(arr[min] >arr[j])
{
min=j;
}
}
if(min!=i)
{
t=arr[min];
arr[min]=arr[i];
arr[i]=t;
}
}
printf("升序排列为:");
for(int i=0;i<5;i++)
{
printf("%2d",arr[i]);
}
printf("\n");
}
运行效果:
降序:
#include<stdio.h>
void main()
{
int n=5;
int t;
int arr[5]={1,2,3,4,5};
printf("原来数组为:");
for(int i=0;i<5;i++)
{
printf("%2d",arr[i]);
}
printf("\n");
for(int i=0;i<n-1;i++) //循环轮数
{
int max=i;
for(int j=i+1;j<n;j++)
{
if(arr[max] <arr[j])
{
max=j;
}
}
if(max!=i)
{
t=arr[max];
arr[max]=arr[i];
arr[i]=t;
}
}
printf("降序排列为:");
for(int i=0;i<5;i++)
{
printf("%2d",arr[i]);
}
printf("\n");
}
运行效果:
题目:求一组数据中的第二大数。
#include<stdio.h>
int main(int argc, const char *argv[])
{
int n;//数组个数
int i,j,k;
int max;
int secondbig;
printf("请输入多长的一维数组:");
scanf("%d",&n);
int a[n];
printf("请输入你所定义的%d位的一维数组:",n);
for(i=0;i<n;i++) //输入数字
{
scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<n;i++)
{
if(max<a[i])
{
max=a[i];
}
}
printf("max=%d\n",max);
for(i=0;i<n;i++)//找到一个比max小的数作为第二大数的第一个比较数
{
secondbig=a[i];
if(a[i]!=max) //判断如果a[i]不等于max说明找到的数可以成为第一个比较数字,然后跳出循环,如果找不到数字则继续循环
{
break;
}
}
//printf("sss%d\n",secondbig);
for(i=0;i<n;i++)
{
if(max==a[i])
{
continue;
}
if(secondbig<a[i])
{
secondbig=a[i];
}
}
printf("secondbig=%d\n",secondbig);
return 0;
}
运行效果