#include<stdio.h>
#define N 10 //数组大小
#define MAX 100000
void main()
{
int a[N]
int index[N]//存储下标。
int i
int j=0//用于下标数组
int n//n个最小值
int min=MAX
printf("请输入%d个整数\n",N )
for( i=0i!=N++i )//输入数据
{
scanf("%d",a+i )
}
for( i=0i!=N++i )//先找到最小的。
{
if( a[i]<min )
min=a[i]
}
for( i=0i!=N++i )//依次找到最小值的下标
{
if( a[i]==min )
{
index[j]=i
++j
}
}
n=j//有n个最小的
printf("最小值为%d,下标是:\n",min)
for( j=0j!=n++j )
printf("%d ",index[j] )
printf("\n")
}
数组是
array = [[1],[2],[3],[0],[1,2],[1,0],[0,1]]
希望排序整个数组,先按照数组 元素个数 ,如果个数相同再 按照首个元素大小 。
array.sort_by {|a| [a.size, a[0]] }
设计思想:
定义二维数组,并按照题目中的要求初始化。建议使用宏来定义二维数组的大小,这样方便修改二维数组大小,减少维护工数。
分别定义并初始化变量sum和average,用于求和,求平均数
使用双重循环,将二维数组以矩阵形式输出
使用双重循环,求二维数组的和
用3中求出的和,计算平均数
代码:
#include<stdio.h>#define M 3#define N 3 int main() { int sum=0 double average=0.0 int a[M][N]//定义二维数组 for (int i=0 i < M i++) {//初始化二维数组 for (int j=0 j < N j++) { a[i][j] = i * 2 + j * 3 } } //使用双重循环,求二维数组的和 for (int i=0 i < M i++) { for (int j=0 j < N j++) { sum += a[i][j] printf("%d ", a[i][j]) } printf("\n") } average = ((double)sum)/(M*N)//计算平均数 printf("sum = %d, average=%lf\n",sum, average) return 0}
运行结果:
0 3 62 5 84 7 10sum = 45, average=5.000000
备注提醒:
题目中说“每个数组元素的值由a[i][j]=※2+j※3得到”,应该是提问者笔误。此处,建议理解为“每个数组元素的值由a[i][j]=i*2+j*3得到”。