主要内容
数组赋值+遍历数组+数组地址+数组最值+数组逆置+冒泡法排序
代码功能
给数组赋值,计算数组元素中的最大值,此外输出首地址、数组元素逆置、数组元素从小到大排序。
代码展示
#include <stdio.h>
#include <stdlib.h>
int main(){
int i, n, s, max;
printf("请输入比较个数:");
scanf("%d", &n);
int a[n];
//给数组赋值
printf("请赋值%d位数:", n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
// 输出数组元素
printf("数组元素:{ ");
for ( s = 0; s < n-1; s++)
{
printf("%d,", a[s]);
}
printf("%d }\n", a[n - 1]);
// 输出数组地址
// 输出-->有符号10进制整数(int)
printf("数组地址:\n");
printf(" a = %d (输出数组首地址)\n", a); // 数组a代表数组,也代表第0个元素的地址
printf(" &a = %d (输出数组首地址)\n", &a);
printf(" a[0] = %d (输出数组首地址)\n", &a[0]);
//输出-->无符号10进制整数(unsigned)
printf("&a[0] + 1 = %u (下一个数组元素的地址)\n", &a[0] + 1); //下一个数组元素的地址
printf(" a + 1 = %u (下一个数组元素的地址)\n", a+1); //下一个数组元素的地址
printf(" &a + 1 = %u (整个数组地址加1,跨过整个数组)\n", &a+1); //整个数组地址加1,跨过整个数组
//输出数组最大值
for (int i = 0; i < n; i++)
{
if (max < a[i])
{
max = a[i];
}
}
printf("数组最值:%d(最大值)\n", max);
// 数组的逆置
printf("数组逆置:{ ");
int j = sizeof(a) / sizeof(a[0]) - 1;
int t = 0;
while (i<j)
{
// 前后交换
t = a[i];
a[i] = a[j];
a[j] = t;
// 移动位置
i++;
j--;
}
for (int i = 0; i < n-1; i++)
{
printf("%d,",a[i]);
}
printf("%d }\n", a[n-1]);
// 数组冒泡法排序
printf("冒泡排序:{ ");
int m = sizeof(a) / sizeof(a[0]);
for (i = 0; i < m-1; i++)
{
for (j = 0; j < m - i -1 ; j++)//内循环的目的是比较相邻的元素,把大的放到后面
{
if (a[j] > a[j + 1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for (i = 0; i < m-1; i++)
{
printf("%d, ", a[i]);
}
printf("%d } (从小到大排序)\n",a[m-1]);
// 退出控制台
system("pause");
return 0;
}
运行结果