1.创建一个整形数组,完成对数组的操作,实现函数init() 初始化数组为全0,实现print() 打印数组的每个元素,实现reverse() 函数完成数组元素的逆置。,要求:自己设计以上函数的参数,返回值。
#include<stdio.h>
int init(int* arr, int sz) //自动初始化数组函数
{
int i = 0;
for (i = 0; i < 10; i++)
{
arr[i] = i;
}
return 1; //直接把结果返回
}
void print(int* arr, int sz) //打印函数
{
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void reverse(int* arr, int sz)
{
int i = 0;
int j = 0;
for (i = 0; j < sz-1; i++)
{
for (j = 0; j <sz-1; j++)
{
if (arr[j] < arr[j + 1]) //交换主体
{
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
for (int i = 0; i <10 ; i++)
{
printf("%d ", arr[i]);
}
}
int main() //主函数
{
int arr[10] = { 0 };
int sz = sizeof(arr) / sizeof(arr[0]);
init(arr, sz);
print(arr, sz);
reverse(arr,sz);
return 0;
}
2.使用指针打印数组内容,写一个函数打印arr数组的内容,不使用数组下标,使用指针,arr是一个整形一维数组,逆置reverse。
#include<stdio.h>
void print(int* arr, int sz) //指针打印函数
{
int* p = arr;
while (sz != 0)
{
printf("%d ", *p);
p++;
sz--;
}
}
int reverse(int* arr, int sz) //头尾逆置
{
int i = 0;
int j = 0;
int tmp = 0;
for ( i =sz-1; i >=0; i--)
{
for ( j = 0;j<=i-1; j++) //注意交换数组范围
{
while (arr[i] > arr[j])
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
//printf("%d %d\n", arr[i], arr[j]);
}
}
return 1; //把结果带回,就是返回结果
}
int main() //主函数
{
int arr[] = { 0,1,2,3,4,5,6,7,8,9 };
int sz = sizeof(arr) / sizeof(arr[0]);
print(arr, sz);
reverse(arr, sz);
for (int i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
![](https://img-blog.csdnimg.cn/direct/94d7cfeb33e44b5e9c3181d372e87ed0.png)
![](https://img-blog.csdnimg.cn/direct/a0fb109bfe184588a7aea9a13240ada7.png)
![](https://img-blog.csdnimg.cn/direct/e17a01346db2425f945ded2f87ec931b.png)